Spaces:
Sleeping
Sleeping
| import json | |
| import os | |
| from langchain_community.document_loaders import \ | |
| AssemblyAIAudioTranscriptLoader, WikipediaLoader, YoutubeLoader | |
| from langchain_core.tools import tool | |
| def multiply(a: int, b: int) -> int: | |
| """Multiply two numbers. | |
| Args: | |
| a: first int | |
| b: second int | |
| """ | |
| return a * b | |
| def add(a: int, b: int) -> int: | |
| """ | |
| Add two numbers. | |
| Args: | |
| a: first int | |
| b: second int | |
| """ | |
| return a + b | |
| def subtract(a: int, b: int) -> int: | |
| """ | |
| Subtract two numbers. | |
| Args: | |
| a: first int | |
| b: second int | |
| """ | |
| return a - b | |
| def divide(a: int, b: int) -> int: | |
| """ | |
| Divide two numbers. | |
| Args: | |
| a: numerator | |
| b: denominator | |
| """ | |
| if b == 0: | |
| raise ValueError("Cannot divide by zero.") | |
| return a / b | |
| def modulus(a: int, b: int) -> int: | |
| """ | |
| Get the modulus of two numbers. | |
| Args: | |
| a: first int | |
| b: second int | |
| """ | |
| return a % b | |
| def wiki_search(query: str) -> str: | |
| """ | |
| Search Wikipedia for a query and return maximum 2 results. The results | |
| are formatted as a JSON string with the source and content of each | |
| document. | |
| Args: | |
| query: The search query.""" | |
| search_docs = WikipediaLoader( | |
| query=query, | |
| load_max_docs=2, | |
| ).load() | |
| formatted_search_docs = [ | |
| { | |
| "source": doc.metadata["source"], | |
| "content": doc.page_content, | |
| } | |
| for doc in search_docs | |
| ] | |
| return json.dumps({"wiki_results": formatted_search_docs}) | |
| def audio_transcript( | |
| audiofile_path: str | |
| ) -> str: | |
| """ | |
| Transcribe an audio file to text. | |
| Args: | |
| audiofile_path: The path to the audio file to transcribe. | |
| """ | |
| loader = AssemblyAIAudioTranscriptLoader( | |
| file_path=os.path.join('data', audiofile_path), | |
| api_key=os.environ.get("ASSEMBLY_API_KEY"), | |
| ) | |
| docs = loader.load() | |
| return docs[0].page_content if docs else "No transcription available." | |
| def youtube_transcript( | |
| video_url: str | |
| ) -> str: | |
| """ | |
| Get the transcript of a YouTube video. | |
| Args: | |
| video_url: The URL of the YouTube video. | |
| """ | |
| loader = YoutubeLoader.from_youtube_url( | |
| youtube_url=video_url, | |
| add_video_info=False | |
| ) | |
| docs = loader.load() | |
| return docs[0].page_content if docs else "No transcript available." | |