import logging import sys from typing import Literal from openai import AsyncOpenAI from . import _config from .agent import Agent, ToolsToFinalOutputFunction, ToolsToFinalOutputResult from .agent_output import AgentOutputSchema from .computer import AsyncComputer, Button, Computer, Environment from .exceptions import ( AgentsException, InputGuardrailTripwireTriggered, MaxTurnsExceeded, ModelBehaviorError, OutputGuardrailTripwireTriggered, UserError, ) from .guardrail import ( GuardrailFunctionOutput, InputGuardrail, InputGuardrailResult, OutputGuardrail, OutputGuardrailResult, input_guardrail, output_guardrail, ) from .handoffs import Handoff, HandoffInputData, HandoffInputFilter, handoff from .items import ( HandoffCallItem, HandoffOutputItem, ItemHelpers, MessageOutputItem, ModelResponse, ReasoningItem, RunItem, ToolCallItem, ToolCallOutputItem, TResponseInputItem, ) from .lifecycle import AgentHooks, RunHooks from .model_settings import ModelSettings from .models.interface import Model, ModelProvider, ModelTracing from .models.openai_chatcompletions import OpenAIChatCompletionsModel from .models.openai_provider import OpenAIProvider from .models.openai_responses import OpenAIResponsesModel from .result import RunResult, RunResultStreaming from .run import RunConfig, Runner from .run_context import RunContextWrapper, TContext from .stream_events import ( AgentUpdatedStreamEvent, RawResponsesStreamEvent, RunItemStreamEvent, StreamEvent, ) from .tool import ( ComputerTool, FileSearchTool, FunctionTool, FunctionToolResult, Tool, WebSearchTool, default_tool_error_function, function_tool, ) from .tracing import ( AgentSpanData, CustomSpanData, FunctionSpanData, GenerationSpanData, GuardrailSpanData, HandoffSpanData, Span, SpanData, SpanError, SpeechGroupSpanData, SpeechSpanData, Trace, TracingProcessor, TranscriptionSpanData, add_trace_processor, agent_span, custom_span, function_span, gen_span_id, gen_trace_id, generation_span, get_current_span, get_current_trace, guardrail_span, handoff_span, set_trace_processors, set_tracing_disabled, set_tracing_export_api_key, speech_group_span, speech_span, trace, transcription_span, ) from .usage import Usage from .voice import ( AudioInput, OpenAISTTModel, OpenAISTTTranscriptionSession, OpenAITTSModel, OpenAIVoiceModelProvider, SingleAgentVoiceWorkflow, SingleAgentWorkflowCallbacks, StreamedAudioInput, StreamedAudioResult, StreamedTranscriptionSession, STTModel, STTModelSettings, TTSModel, TTSModelSettings, VoiceModelProvider, VoicePipeline, VoicePipelineConfig, VoiceStreamEvent, VoiceStreamEventAudio, VoiceStreamEventLifecycle, VoiceWorkflowBase, VoiceWorkflowHelper, get_sentence_based_splitter, ) def set_default_openai_key(key: str, use_for_tracing: bool = True) -> None: """Set the default OpenAI API key to use for LLM requests (and optionally tracing(). This is only necessary if the OPENAI_API_KEY environment variable is not already set. If provided, this key will be used instead of the OPENAI_API_KEY environment variable. Args: key: The OpenAI key to use. use_for_tracing: Whether to also use this key to send traces to OpenAI. Defaults to True If False, you'll either need to set the OPENAI_API_KEY environment variable or call set_tracing_export_api_key() with the API key you want to use for tracing. """ _config.set_default_openai_key(key, use_for_tracing) def set_default_openai_client(client: AsyncOpenAI, use_for_tracing: bool = True) -> None: """Set the default OpenAI client to use for LLM requests and/or tracing. If provided, this client will be used instead of the default OpenAI client. Args: client: The OpenAI client to use. use_for_tracing: Whether to use the API key from this client for uploading traces. If False, you'll either need to set the OPENAI_API_KEY environment variable or call set_tracing_export_api_key() with the API key you want to use for tracing. """ _config.set_default_openai_client(client, use_for_tracing) def set_default_openai_api(api: Literal["chat_completions", "responses"]) -> None: """Set the default API to use for OpenAI LLM requests. By default, we will use the responses API but you can set this to use the chat completions API instead. """ _config.set_default_openai_api(api) def enable_verbose_stdout_logging(): """Enables verbose logging to stdout. This is useful for debugging.""" logger = logging.getLogger("openai.agents") logger.setLevel(logging.DEBUG) logger.addHandler(logging.StreamHandler(sys.stdout)) __all__ = [ "Agent", "ToolsToFinalOutputFunction", "ToolsToFinalOutputResult", "Runner", "Model", "ModelProvider", "ModelTracing", "ModelSettings", "OpenAIChatCompletionsModel", "OpenAIProvider", "OpenAIResponsesModel", "AgentOutputSchema", "Computer", "AsyncComputer", "Environment", "Button", "AgentsException", "InputGuardrailTripwireTriggered", "OutputGuardrailTripwireTriggered", "MaxTurnsExceeded", "ModelBehaviorError", "UserError", "InputGuardrail", "InputGuardrailResult", "OutputGuardrail", "OutputGuardrailResult", "GuardrailFunctionOutput", "input_guardrail", "output_guardrail", "handoff", "Handoff", "HandoffInputData", "HandoffInputFilter", "TResponseInputItem", "MessageOutputItem", "ModelResponse", "RunItem", "HandoffCallItem", "HandoffOutputItem", "ToolCallItem", "ToolCallOutputItem", "ReasoningItem", "ModelResponse", "ItemHelpers", "RunHooks", "AgentHooks", "RunContextWrapper", "TContext", "RunResult", "RunResultStreaming", "RunConfig", "RawResponsesStreamEvent", "RunItemStreamEvent", "AgentUpdatedStreamEvent", "StreamEvent", "FunctionTool", "FunctionToolResult", "ComputerTool", "FileSearchTool", "Tool", "WebSearchTool", "function_tool", "Usage", "add_trace_processor", "agent_span", "custom_span", "function_span", "generation_span", "get_current_span", "get_current_trace", "guardrail_span", "handoff_span", "set_trace_processors", "set_tracing_disabled", "speech_group_span", "transcription_span", "speech_span", "trace", "Trace", "TracingProcessor", "SpanError", "Span", "SpanData", "AgentSpanData", "CustomSpanData", "FunctionSpanData", "GenerationSpanData", "GuardrailSpanData", "HandoffSpanData", "SpeechGroupSpanData", "SpeechSpanData", "TranscriptionSpanData", "set_default_openai_key", "set_default_openai_client", "set_default_openai_api", "set_tracing_export_api_key", "enable_verbose_stdout_logging", "gen_trace_id", "gen_span_id", "default_tool_error_function", "AudioInput", "StreamedAudioInput", "STTModel", "STTModelSettings", "TTSModel", "TTSModelSettings", "VoiceModelProvider", "StreamedAudioResult", "SingleAgentVoiceWorkflow", "OpenAIVoiceModelProvider", "OpenAISTTModel", "OpenAITTSModel", "VoiceStreamEventAudio", "VoiceStreamEventLifecycle", "VoiceStreamEvent", "VoicePipeline", "VoicePipelineConfig", "get_sentence_based_splitter", "VoiceWorkflowHelper", "VoiceWorkflowBase", "StreamedTranscriptionSession", "OpenAISTTTranscriptionSession", "SingleAgentWorkflowCallbacks", ]