# Copyright (c) Microsoft. All rights reserved. """OpenAI Agent factory for GAIA benchmark. This module provides a factory function to create an OpenAI agent configured for GAIA benchmark tasks using the OpenAI Responses API. Required Environment Variables: OPENAI_API_KEY: Your OpenAI API key OPENAI_CHAT_MODEL: Model to use with Responses API (e.g., gpt-4o, gpt-4o-mini) Optional Environment Variables: OPENAI_BASE_URL: Custom API base URL if using a proxy or compatible service OPENAI_ORG_ID: Organization ID for OpenAI API (if applicable) Authentication: Uses OPENAI_API_KEY environment variable. Get your API key from: https://platform.openai.com/api-keys Example: export OPENAI_API_KEY="sk-..." export OPENAI_CHAT_MODEL="gpt-4o" """ from collections.abc import AsyncIterator from contextlib import asynccontextmanager from agent_framework import Agent from agent_framework.openai import OpenAIChatClient @asynccontextmanager async def create_gaia_agent() -> AsyncIterator[Agent]: """Create an OpenAI agent configured for GAIA benchmark tasks. Uses OpenAI Responses API for enhanced capabilities. The agent is configured with: - Web Search tool for information retrieval - Code Interpreter tool for calculations and data analysis Yields: Agent: A configured agent ready to run GAIA tasks. Example: async with create_gaia_agent() as agent: result = await agent.run("What is the capital of France?") print(result.text) """ client = OpenAIChatClient() async with client.as_agent( name="GaiaAgent", instructions="Solve tasks to your best ability. Use Web Search to find " "information and Code Interpreter to perform calculations and data analysis.", tools=[ OpenAIChatClient.get_web_search_tool(), OpenAIChatClient.get_code_interpreter_tool(), ], ) as agent: yield agent