Spaces:
Sleeping
Sleeping
| import sys | |
| import inspect | |
| import logging | |
| from llama_index.core.agent import ReActAgent | |
| from agent_models.models import get_language_model | |
| from agent_tools.WebSearchTool import web_search_tools | |
| from agent_tools.FileDownloaderTool import get_downloader_tool | |
| from agent_tools.ImageReaderTool import get_image_interpreter_tool | |
| from agent_tools.CalculatorTool import get_calculator_tool | |
| from agent_tools.PandasTool import get_pandas_tool | |
| from agent_tools.CodeInterpreterTool import get_code_interpreter_tool | |
| from agent_tools.AudioInterpreterTool import get_transcribe_audio | |
| from agent_prompts.SystemPrompt import gaia_system_prompt | |
| #Logging | |
| logging.basicConfig(stream=sys.stdout, level=logging.DEBUG) | |
| logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout)) | |
| # Agent Definition | |
| class GaiaAgent: | |
| def __init__(self): | |
| # print(f"ReAct Agent signature--------------------------------------- \n {inspect.signature(ReActAgent.from_tools)} \n ReAct Agent signature--------------------------------------- \n" ) | |
| list_of_search_tools = web_search_tools() | |
| list_of_other_tools = [get_downloader_tool(), get_image_interpreter_tool(), get_calculator_tool(), get_pandas_tool(), get_code_interpreter_tool(), get_transcribe_audio()] | |
| self.llm = get_language_model() | |
| self.tools = list_of_search_tools + list_of_other_tools | |
| self.agent = ReActAgent.from_tools(tools=self.tools, llm=self.llm, context=gaia_system_prompt, verbose=True) | |
| async def __call__(self, question: str) -> str: | |
| response_object = self.agent.chat(question) | |
| full_response_text = str(response_object) | |
| final_answer_prefix = "FINAL ANSWER:" | |
| if final_answer_prefix in full_response_text: | |
| clean_answer = full_response_text.split(final_answer_prefix, 1)[1].strip() | |
| return clean_answer | |
| else: | |
| return full_response_text |