import os from dotenv import load_dotenv from openai import AsyncOpenAI from cai.sdk.agents import OpenAIChatCompletionsModel, Agent, Runner from cai.sdk.agents import set_default_openai_client, set_tracing_disabled from openai.types.responses import ResponseTextDeltaEvent # Load environment variables from .env file load_dotenv() external_client = AsyncOpenAI( base_url=os.getenv("LITELLM_BASE_URL", "http://localhost:4000"), api_key=os.getenv("LITELLM_API_KEY", "key"), ) set_default_openai_client(external_client) set_tracing_disabled(True) # llm_model=os.getenv('LLM_MODEL', 'gpt-4o') # llm_model=os.getenv('LLM_MODEL', 'claude-3-7') llm_model = os.getenv("LLM_MODEL", "qwen2.5:14b") # For Qwen models, we need to skip system instructions as they're not supported instructions = None if "qwen" in llm_model.lower() else "You are a helpful assistant" agent = Agent( name="Assistant", instructions=instructions, model=OpenAIChatCompletionsModel( model=llm_model, openai_client=external_client, ), ) def run_sync_haiku(): result = Runner.run_sync(agent, "Write a haiku about recursion in programming.") print(result.final_output) async def stream_jokes(): result = Runner.run_streamed(agent, input="Please tell me 5 jokes.") async for event in result.stream_events(): if event.type == "raw_response_event" and isinstance(event.data, ResponseTextDeltaEvent): print(event.data.delta, end="", flush=True) ######################################################## # async # import asyncio # asyncio.run(stream_jokes()) # sync run_sync_haiku()