Spaces:
Runtime error
Runtime error
| import os | |
| from dotenv import load_dotenv | |
| from langchain_openai import ChatOpenAI | |
| from langchain_core.messages import AnyMessage, HumanMessage | |
| from langchain_core.runnables import RunnableConfig | |
| from langgraph.prebuilt import create_react_agent | |
| from langgraph.prebuilt.chat_agent_executor import AgentState | |
| from smolagents import VisitWebpageTool, PythonInterpreterTool, SpeechToTextTool | |
| from langchain_community.tools import DuckDuckGoSearchRun | |
| from langchain_experimental.utilities import PythonREPL | |
| from langchain_community.tools import WikipediaQueryRun | |
| from langchain_community.utilities import WikipediaAPIWrapper | |
| from langchain_core.tools import tool | |
| load_dotenv() | |
| BASE_URL = os.getenv("BASE_URL") | |
| OKTA_ACCESS_TOKEN = os.getenv("OKTA_ACCESS_TOKEN") | |
| SUBSCRIPTION_KEY = os.getenv("SUBSCRIPTION_KEY") | |
| chat = ChatOpenAI( | |
| api_key=OKTA_ACCESS_TOKEN, | |
| base_url=BASE_URL, | |
| model="GPT_4_1", | |
| default_headers={"Subscription-Key": SUBSCRIPTION_KEY}, | |
| ) | |
| duckduckgo = DuckDuckGoSearchRun() | |
| python_repl = PythonREPL() | |
| wikipedia = WikipediaQueryRun(api_wrapper=WikipediaAPIWrapper()) | |
| # Instantiate smolagents tools | |
| visit_webpage_tool = VisitWebpageTool() | |
| python_interpreter_tool = PythonInterpreterTool() | |
| speech_to_text_tool = SpeechToTextTool() | |
| def visit_webpage(url: str) -> str: | |
| """ | |
| Visit a webpage and return its content as a string. | |
| Args: | |
| url (str): The URL of the webpage to visit. | |
| Returns: | |
| str: The content of the webpage. | |
| """ | |
| return visit_webpage_tool(url=url) | |
| def python_interpreter(code: str) -> str: | |
| """ | |
| Execute Python code and return the output as a string. | |
| Args: | |
| code (str): The Python code to execute. | |
| Returns: | |
| str: The output of the executed code. | |
| """ | |
| return python_interpreter_tool(code=code) | |
| def speech_to_text(audio_path: str) -> str: | |
| """ | |
| Convert speech in an audio file to text. | |
| Args: | |
| audio_path (str): The path to the audio file. | |
| Returns: | |
| str: The transcribed text from the audio. | |
| """ | |
| return speech_to_text_tool(audio_path=audio_path) | |
| def read_file_contents(file_path: str) -> str: | |
| """ | |
| Read and return the contents of a file as a string. | |
| Args: | |
| file_path (str): The path to the file to read. | |
| Returns: | |
| str: The contents of the file, or an error message if the file cannot be read. | |
| """ | |
| try: | |
| with open(file_path, 'r', encoding='utf-8') as f: | |
| return f.read() | |
| except Exception as e: | |
| return f"Error reading file: {e}" | |
| def prompt(state: AgentState, config: RunnableConfig) -> list[AnyMessage]: | |
| file_path = config["configurable"].get("file_path", "") | |
| system_msg = ( | |
| f"You are an AI assistant evaluated on the GAIA benchmark. " | |
| f"Answer questions using only verified information. " | |
| f"Use the available tools to find answers when needed. " | |
| f"If you do not have enough information, reply: 'I do not have enough information to answer the question.' " | |
| f"Provide only the direct answer, with no extra explanation, formatting, or restating the question. " | |
| f"For example, if asked 'What is the capital of France?', answer 'Paris'. " | |
| ) | |
| if file_path: | |
| system_msg += f"If a file is referenced, use the file path: {file_path}." | |
| return [{"role": "system", "content": system_msg}] + state["messages"] | |
| react_agent = create_react_agent( | |
| model=chat, | |
| tools=[duckduckgo, wikipedia, visit_webpage, python_interpreter, speech_to_text, read_file_contents], | |
| prompt=prompt, | |
| ) | |