From b947d7b0c4136a8c1123725533c3a2c76396ba96 Mon Sep 17 00:00:00 2001 From: ysolanky Date: Wed, 16 Oct 2024 11:21:45 -0400 Subject: [PATCH] youtube-agent-phi-1652 --- agents/youtube.py | 41 ++++++++++++++++++++++++++++++++++++++++ api/routes/playground.py | 4 +++- pyproject.toml | 1 + requirements.txt | 10 ++++++---- 4 files changed, 51 insertions(+), 5 deletions(-) create mode 100644 agents/youtube.py diff --git a/agents/youtube.py b/agents/youtube.py new file mode 100644 index 0000000..892bfc8 --- /dev/null +++ b/agents/youtube.py @@ -0,0 +1,41 @@ +from typing import Optional + +from phi.agent import Agent +from phi.model.openai import OpenAIChat +from phi.tools.youtube_tools import YouTubeTools + +from agents.settings import agent_settings +from phi.storage.agent.postgres import PgAgentStorage + +from db.session import db_url + +finance_agent_storage = PgAgentStorage(table_name="finance_agent", db_url=db_url) + + +def get_youtube_agent( + user_id: Optional[str] = None, + session_id: Optional[str] = None, + debug_mode: bool = False, +) -> Agent: + return Agent( + name="YouTube Agent", + agent_id="youtube-agent", + session_id=session_id, + user_id=user_id, + model=OpenAIChat( + model=agent_settings.gpt_4, + max_tokens=agent_settings.default_max_completion_tokens, + temperature=agent_settings.default_temperature, + ), + tools=[YouTubeTools()], + description="You are a YouTube agent. Obtain the captions of a YouTube video and answer questions.", + markdown=True, + add_history_to_messages=True, + num_history_responses=5, + show_tool_calls=True, + add_datetime_to_instructions=True, + storage=finance_agent_storage, + # Enable monitoring on phidata.app + monitoring=True, + debug_mode=debug_mode, + ) diff --git a/api/routes/playground.py b/api/routes/playground.py index fc4624b..82b2c86 100644 --- a/api/routes/playground.py +++ b/api/routes/playground.py @@ -4,6 +4,7 @@ from agents.finance import get_finance_agent from agents.research import get_research_agent from agents.web_search import get_web_search_agent +from agents.youtube import get_youtube_agent ###################################################### ## Router for the agent playground @@ -12,9 +13,10 @@ finance_agent = get_finance_agent(debug_mode=True) research_agent = get_research_agent(debug_mode=True) web_search_agent = get_web_search_agent(debug_mode=True) +youtube_agent = get_youtube_agent(debug_mode=True) # Create a playground instance -playground = Playground(agents=[finance_agent, research_agent, web_search_agent]) +playground = Playground(agents=[finance_agent, research_agent, web_search_agent, youtube_agent]) # Log the playground endpoint with phidata.app if getenv("RUNTIME_ENV") == "dev": playground.create_endpoint("http://localhost:8000") diff --git a/pyproject.toml b/pyproject.toml index 1a174ff..741e060 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,6 +30,7 @@ dependencies = [ "types-beautifulsoup4", "types-Pillow", "yfinance", + "youtube_transcript_api" ] [build-system] diff --git a/requirements.txt b/requirements.txt index 5e2f7ec..3440ec7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -16,6 +16,7 @@ duckdb==1.1.2 duckduckgo-search==6.3.2 email-validator==2.2.0 exa-py==1.4.0 +exceptiongroup==1.2.2 fastapi==0.115.2 fastapi-cli==0.0.5 frozendict==2.4.6 @@ -41,7 +42,7 @@ multitasking==0.0.11 mypy==1.12.0 mypy-extensions==1.0.0 nest-asyncio==1.6.0 -numpy==2.1.2 +numpy==2.0.2 openai==1.51.2 packaging==24.1 pandas==2.2.3 @@ -52,8 +53,8 @@ pillow==11.0.0 platformdirs==4.3.6 pluggy==1.5.0 primp==0.6.4 -psycopg==3.1.19 -psycopg-binary==3.1.19 +psycopg==3.1.18 +psycopg-binary==3.1.18 pydantic==2.9.2 pydantic-core==2.23.4 pydantic-settings==2.5.2 @@ -87,10 +88,11 @@ types-html5lib==1.1.11.20240806 types-pillow==10.2.0.20240822 typing-extensions==4.12.2 tzdata==2024.2 -urllib3==2.2.3 +urllib3==1.26.20 uvicorn==0.32.0 uvloop==0.21.0 watchfiles==0.24.0 webencodings==0.5.1 websockets==13.1 yfinance==0.2.44 +youtube-transcript-api==0.6.2