2025-07-21 10:45:13 -04:00
..
2025-07-21 10:45:13 -04:00
2025-07-21 10:45:13 -04:00
2025-07-21 10:45:13 -04:00

OpenAI Agents with Bedrock AgentCore Integration

Information Details
Agent type Synchronous with and without Handoffs
Agentic Framework OpenAI Agents SDK
LLM model GPT-4o
Components AgentCore Runtime
Example complexity Medium
SDK used Amazon BedrockAgentCore Python SDK, OpenAI Agents SDK

This example demonstrates how to integrate OpenAI Agents with AWS Bedrock AgentCore, showcasing agent handoffs for specialized tasks.

Prerequisites

  • Python 3.10+
  • uv - Fast Python package installer and resolver
  • AWS account with Bedrock access
  • OpenAI API key

Setup Instructions

1. Create a Python Environment with uv

# Install uv if you don't have it already
pip install uv

# Create and activate a virtual environment
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

2. Install Requirements

uv pip install -r requirements.txt

Example 1: Hello World Agent

The openai_agents_hello_world.py file contains a simple OpenAI agent with web search capabilities and Bedrock AgentCore integration:

from agents import Agent, Runner, WebSearchTool
import logging
import sys

# Set up logging
logging.basicConfig(
    level=logging.DEBUG,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    handlers=[logging.StreamHandler(sys.stdout)]
)
logger = logging.getLogger("openai_agents")

# Initialize the agent with web search tool
agent = Agent(
    name="Assistant",
    tools=[WebSearchTool()],
)

async def main(query=None):
    if query is None:
        query = "Which coffee shop should I go to, taking into account my preferences and the weather today in SF?"
    
    logger.debug(f"Running agent with query: {query}")
    result = await Runner.run(agent, query)
    return result

# Integration with Bedrock AgentCore
from bedrock_agentcore.runtime import BedrockAgentCoreApp
app = BedrockAgentCoreApp()

@app.entrypoint
async def agent_invocation(payload, context):
    query = payload.get("prompt", "How can I help you today?")
    result = await main(query)
    return {"result": result.final_output}

if __name__ == "__main__":
    app.run()

Example 2: Agent Handoffs

The openai_agents_handoff_example.py file demonstrates how to create a system of agents with specialized roles that can hand off tasks to each other:

# Create specialized agents for different tasks
travel_agent = Agent(
    name="Travel Expert",
    instructions=(
        "You are a travel expert who helps users plan their trips. "
        "Use web search to find up-to-date information about destinations, "
        "flights, accommodations, and travel requirements."
    ),
    tools=[WebSearchTool()]
)

food_agent = Agent(
    name="Food Expert",
    instructions=(
        "You are a food expert who helps users find great dining options. "
        "Use web search to find information about restaurants, local cuisine, "
        "food tours, and dietary accommodations."
    ),
    tools=[WebSearchTool()]
)

# Create the main triage agent that can hand off to specialized agents
triage_agent = Agent(
    name="Travel Assistant",
    instructions=(
        "You are a helpful travel assistant. "
        "If the user asks about travel planning, destinations, flights, or accommodations, "
        "hand off to the Travel Expert. "
        "If the user asks about food, restaurants, or dining options, "
        "hand off to the Food Expert."
    ),
    handoffs=[travel_agent, food_agent]
)

How Handoffs Work

  1. The triage agent receives the initial user query
  2. Based on the query content, it determines which specialized agent should handle the request
  3. The appropriate specialized agent (Travel Expert or Food Expert) takes over
  4. The specialized agent uses its tools (web search) to gather information
  5. The final response is returned to the user

This pattern allows for:

  • Specialized knowledge and behavior for different domains
  • Clear separation of concerns between agents
  • More accurate and relevant responses for domain-specific queries

Configure and Launch with Bedrock AgentCore

# Configure your agent for deployment
agentcore configure

# Deploy your agent with OpenAI API key
agentcore deploy --app-file openai_agents_handoff_example.py -l --env OPENAI_API_KEY=your_api_key_here

Testing Your Agent

agentcore invoke --prompt "I'm planning a trip to Japan next month. What should I know?"

The system will:

  1. Process your query through the triage agent
  2. Hand off to the Travel Expert agent
  3. Use web search to gather information about Japan travel
  4. Return a comprehensive response

Additional Resources