from typing import BinaryIO import yaml from smolagents import OpenAIServerModel, VisitWebpageTool, PythonInterpreterTool, SpeechToTextTool from smolagents import CodeAgent, FinalAnswerTool, WikipediaSearchTool, Tool, tool from langchain_community.tools import DuckDuckGoSearchRun import os # Load environment variables from .env file # with open('.env') as f: # for line in f: # if line.strip() and not line.startswith('#'): # key, value = line.strip().split('=', 1) # os.environ[key] = value @tool def get_file_from_documents(file_name: str) -> BinaryIO: """ opens and returns a file as a BinaryIO object from the 'documents' directory provided the file name. Args: file_name (str): The name of the file to read. Returns: BinaryIO: A file-like object containing the content of the file. Raises: FileNotFoundError: If the file does not exist in the 'documents' directory. """ documents_dir = os.path.join(os.getcwd(), "documents") file_path = os.path.join(documents_dir, file_name) if not os.path.exists(file_path): raise FileNotFoundError(f"The file '{file_name}' does not exist in the 'documents' directory.") file = open(file_path, "rb") return file model = OpenAIServerModel( model_id="CLAUDE_3_SONNET_35", # Replace with the desired model ID api_base=os.getenv("BASE_URL"), # Base URL for the API api_key=os.getenv("OKTA_ACCESS_TOKEN"), # API key for authentication custom_role_conversions=None, temperature=0.5, client_kwargs={ "default_headers": {"Subscription-Key": os.getenv("SUBSCRIPTION_KEY")}, # Additional headers, }, web_search_options={ "enabled": True, "dynamic_threshold": 0.5 } ) #Load system prompt from prompt.yaml file with open("prompts.yaml", 'r') as stream: prompt_templates = yaml.safe_load(stream) final_answer = FinalAnswerTool() ddg_tool = Tool.from_langchain(DuckDuckGoSearchRun()) agent = CodeAgent( tools=[final_answer, VisitWebpageTool(), WikipediaSearchTool(), ddg_tool, get_file_from_documents, PythonInterpreterTool(), SpeechToTextTool()], add_base_tools=True, max_steps=6, verbosity_level=1, grammar=None, planning_interval=None, name=None, description=None, prompt_templates=prompt_templates, additional_authorized_imports=['pandas', 'numpy', 'openpyxl', 'xlrd', 'os', ], model=model) #agent.run("""What is the final numeric output from the attached Python code? (File Name: f918266a-b3e0-4914-865d-4faa564f1aef.py) """) # # res = agent.run("Can you find any information about the latest news on AI?") # print(res)