import asyncio import os from openai import AsyncOpenAI from agents import Agent, OpenAIChatCompletionsModel, Runner, function_tool, set_tracing_disabled BASE_URL = os.getenv("EXAMPLE_BASE_URL") or "" API_KEY = os.getenv("EXAMPLE_API_KEY") or "" MODEL_NAME = os.getenv("EXAMPLE_MODEL_NAME") or "" if not BASE_URL or not API_KEY or not MODEL_NAME: raise ValueError( "Please set EXAMPLE_BASE_URL, EXAMPLE_API_KEY, EXAMPLE_MODEL_NAME via env var or code." ) """This example uses a custom provider for a specific agent. Steps: 1. Create a custom OpenAI client. 2. Create a `Model` that uses the custom client. 3. Set the `model` on the Agent. Note that in this example, we disable tracing under the assumption that you don't have an API key from platform.openai.com. If you do have one, you can either set the `OPENAI_API_KEY` env var or call set_tracing_export_api_key() to set a tracing specific key. """ client = AsyncOpenAI(base_url=BASE_URL, api_key=API_KEY) set_tracing_disabled(disabled=True) # An alternate approach that would also work: # PROVIDER = OpenAIProvider(openai_client=client) # agent = Agent(..., model="some-custom-model") # Runner.run(agent, ..., run_config=RunConfig(model_provider=PROVIDER)) @function_tool def get_weather(city: str): print(f"[debug] getting weather for {city}") return f"The weather in {city} is sunny." async def main(): # This agent will use the custom LLM provider agent = Agent( name="Assistant", instructions="You only respond in haikus.", model=OpenAIChatCompletionsModel(model=MODEL_NAME, openai_client=client), tools=[get_weather], ) result = await Runner.run(agent, "What's the weather in Tokyo?") print(result.final_output) if __name__ == "__main__": asyncio.run(main())