guillaumefrd commited on
Commit
82e5cca
·
1 Parent(s): 26aec96

get_youtube_transcript + use o4-mini

Browse files
langgraph_dir/agent.py CHANGED
@@ -11,7 +11,8 @@ from langchain_community.tools import BraveSearch
11
 
12
  from .prompt import system_prompt
13
  from .custom_tools import (multiply, add, subtract, divide, modulus, power,
14
- query_image, automatic_speech_recognition, get_webpage_content, python_repl_tool)
 
15
 
16
 
17
  class LangGraphAgent:
@@ -21,7 +22,11 @@ class LangGraphAgent:
21
  show_prompt=True):
22
 
23
  # =========== LLM definition ===========
24
- llm = ChatOpenAI(model=model_name, temperature=0) # needs OPENAI_API_KEY in env
 
 
 
 
25
  print(f"LangGraphAgent initialized with model \"{model_name}\"")
26
 
27
  # =========== Augment the LLM with tools ===========
@@ -36,6 +41,7 @@ class LangGraphAgent:
36
  automatic_speech_recognition, # Transcribe an audio file to text
37
  get_webpage_content, # Load a web page and return it to markdown
38
  python_repl_tool, # Python code interpreter
 
39
  ]
40
 
41
  tools = community_tools + custom_tools
 
11
 
12
  from .prompt import system_prompt
13
  from .custom_tools import (multiply, add, subtract, divide, modulus, power,
14
+ query_image, automatic_speech_recognition, get_webpage_content, python_repl_tool,
15
+ get_youtube_transcript)
16
 
17
 
18
  class LangGraphAgent:
 
22
  show_prompt=True):
23
 
24
  # =========== LLM definition ===========
25
+ if model_name.startswith('o'):
26
+ # reasoning model (no temperature setting)
27
+ llm = ChatOpenAI(model=model_name) # needs OPENAI_API_KEY in env
28
+ else:
29
+ llm = ChatOpenAI(model=model_name, temperature=0)
30
  print(f"LangGraphAgent initialized with model \"{model_name}\"")
31
 
32
  # =========== Augment the LLM with tools ===========
 
41
  automatic_speech_recognition, # Transcribe an audio file to text
42
  get_webpage_content, # Load a web page and return it to markdown
43
  python_repl_tool, # Python code interpreter
44
+ get_youtube_transcript, # Get the transcript of a YouTube video
45
  ]
46
 
47
  tools = community_tools + custom_tools
langgraph_dir/config.py CHANGED
@@ -1,6 +1,4 @@
1
- # OPENAI_MODEL_NAME = "gpt-4.1-nano" # Overall Score: 10.0% (2/20 correct)
2
- OPENAI_MODEL_NAME = "gpt-4.1-mini"
3
  # OPENAI_MODEL_NAME = "gpt-4.1"
4
-
5
- # QUERY_IMAGE_MODEL_NAME = "gpt-4.1-mini"
6
- QUERY_IMAGE_MODEL_NAME = "o4-mini"
 
1
+ # OPENAI_MODEL_NAME = "gpt-4.1-nano"
2
+ # OPENAI_MODEL_NAME = "gpt-4.1-mini"
3
  # OPENAI_MODEL_NAME = "gpt-4.1"
4
+ OPENAI_MODEL_NAME = "o4-mini"
 
 
langgraph_dir/custom_tools.py CHANGED
@@ -8,6 +8,8 @@ from langchain_core.tools import tool, Tool
8
  from langchain_experimental.utilities import PythonREPL
9
  from pypdf import PdfReader
10
  from io import BytesIO
 
 
11
 
12
 
13
  # --- Basic operations --- #
@@ -241,4 +243,25 @@ You are allowed to download files from URLs.
241
  Do NOT send commands that block indefinitely (e.g., `input()`).""",
242
  func=python_repl.run,
243
  args_schema=PythonREPLInput
244
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  from langchain_experimental.utilities import PythonREPL
9
  from pypdf import PdfReader
10
  from io import BytesIO
11
+ from youtube_transcript_api import YouTubeTranscriptApi
12
+ from pytube import extract
13
 
14
 
15
  # --- Basic operations --- #
 
243
  Do NOT send commands that block indefinitely (e.g., `input()`).""",
244
  func=python_repl.run,
245
  args_schema=PythonREPLInput
246
+ )
247
+
248
+ @tool
249
+ def get_youtube_transcript(page_url: str) -> str:
250
+ """Get the transcript of a YouTube video
251
+
252
+ Args:
253
+ page_url (str): YouTube URL of the video
254
+ """
255
+ try:
256
+ # get video ID from URL
257
+ video_id = extract.video_id(page_url)
258
+
259
+ # get transcript
260
+ ytt_api = YouTubeTranscriptApi()
261
+ transcript = ytt_api.fetch(video_id)
262
+
263
+ # keep only text
264
+ txt = '\n'.join([s.text for s in transcript.snippets])
265
+ return txt
266
+ except Exception as e:
267
+ return f"get_youtube_transcript failed: {e}"
requirements.txt CHANGED
@@ -12,4 +12,7 @@ langchain-community
12
  duckduckgo-search
13
  markdownify
14
  beautifulsoup4
15
- langchain_experimental
 
 
 
 
12
  duckduckgo-search
13
  markdownify
14
  beautifulsoup4
15
+ langchain_experimental
16
+ pypdf
17
+ youtube-transcript-api
18
+ pytube