Merge pull request #148 from Madhuvod/multimodel-agent-error

feat: updated multimodel agent code
This commit is contained in:
Shubham Saboo 2025-03-17 21:14:20 -05:00 committed by GitHub
commit 10f85f2098
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,8 +1,7 @@
import streamlit as st
from agno.agent import Agent
from agno.models.google import Gemini
from agno.tools.duckduckgo import DuckDuckGoTools
from google.generativeai import upload_file, get_file
from agno.media import Video
import time
from pathlib import Path
import tempfile
@ -15,63 +14,65 @@ st.set_page_config(
st.title("Multimodal AI Agent 🧬")
# Get Gemini API key from user
gemini_api_key = st.text_input("Enter your Gemini API Key", type="password")
# Initialize single agent with both capabilities
@st.cache_resource
def initialize_agent():
def initialize_agent(api_key):
return Agent(
name="Multimodal Analyst",
model=Gemini(id="gemini-2.0-flash-exp"),
tools=[DuckDuckGoTools()],
model=Gemini(id="gemini-2.0-flash", api_key=api_key),
markdown=True,
)
agent = initialize_agent()
if gemini_api_key:
agent = initialize_agent(gemini_api_key)
# File uploader
uploaded_file = st.file_uploader("Upload a video file", type=['mp4', 'mov', 'avi'])
# File uploader
uploaded_file = st.file_uploader("Upload a video file", type=['mp4', 'mov', 'avi'])
if uploaded_file:
with tempfile.NamedTemporaryFile(delete=False, suffix='.mp4') as tmp_file:
tmp_file.write(uploaded_file.read())
video_path = tmp_file.name
st.video(video_path)
user_prompt = st.text_area(
"What would you like to know?",
placeholder="Ask any question related to the video - the AI Agent will analyze it and search the web if needed",
help="You can ask questions about the video content and get relevant information from the web"
)
if st.button("Analyze & Research"):
if not user_prompt:
st.warning("Please enter your question.")
else:
try:
with st.spinner("Processing video and researching..."):
video_file = upload_file(video_path)
while video_file.state.name == "PROCESSING":
time.sleep(2)
video_file = get_file(video_file.name)
if uploaded_file:
with tempfile.NamedTemporaryFile(delete=False, suffix='.mp4') as tmp_file:
tmp_file.write(uploaded_file.read())
video_path = tmp_file.name
st.video(video_path)
user_prompt = st.text_area(
"What would you like to know?",
placeholder="Ask any question related to the video - the AI Agent will analyze it and search the web if needed",
help="You can ask questions about the video content and get relevant information from the web"
)
if st.button("Analyze & Research"):
if not user_prompt:
st.warning("Please enter your question.")
else:
try:
with st.spinner("Processing video and researching..."):
video = Video(filepath=video_path)
prompt = f"""
First analyze this video and then answer the following question using both
the video analysis and web research: {user_prompt}
Provide a comprehensive response focusing on practical, actionable information.
"""
result = agent.run(prompt, videos=[video])
st.subheader("Result")
st.markdown(result.content)
prompt = f"""
First analyze this video and then answer the following question using both
the video analysis and web research: {user_prompt}
Provide a comprehensive response focusing on practical, actionable information.
"""
result = agent.run(prompt, videos=[video_file])
st.subheader("Result")
st.markdown(result.content)
except Exception as e:
st.error(f"An error occurred: {str(e)}")
finally:
Path(video_path).unlink(missing_ok=True)
except Exception as e:
st.error(f"An error occurred: {str(e)}")
finally:
Path(video_path).unlink(missing_ok=True)
else:
st.info("Please upload a video to begin analysis.")
else:
st.info("Please upload a video to begin analysis.")
st.warning("Please enter your Gemini API key to continue.")
st.markdown("""
<style>