Files
agent-framework/python/packages/lab/gaia/samples/openai_agent.py
T
Eric Zhu 1543370027 Python: Lab: Updates to GAIA module (#1763)
* Lab: Updates to GAIA module

* update

* emoj!

* fix lint

* update lab test workflow to only trigger for python changes

* lint

* lint

* Fix broken OpenAI agents JS documentation link
2025-10-30 22:02:31 +00:00

65 lines
2.1 KiB
Python

# 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_RESPONSES_MODEL_ID: 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_RESPONSES_MODEL_ID="gpt-4o"
"""
from collections.abc import AsyncIterator
from contextlib import asynccontextmanager
from agent_framework import ChatAgent, HostedCodeInterpreterTool, HostedWebSearchTool
from agent_framework.openai import OpenAIResponsesClient
@asynccontextmanager
async def create_gaia_agent() -> AsyncIterator[ChatAgent]:
"""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:
ChatAgent: 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)
"""
chat_client = OpenAIResponsesClient()
async with chat_client.create_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=[
HostedWebSearchTool(
name="Web Search",
description="Search the web for current information",
),
HostedCodeInterpreterTool(),
],
) as agent:
yield agent