Files
openai--openai-agents-python/docs/zh/config.md
T
2026-07-13 12:39:17 +08:00

205 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
search:
exclude: true
---
# 配置
本页涵盖 SDK 范围的默认设置,这些设置通常在应用启动时设置一次,例如默认 OpenAI 密钥或客户端、默认 OpenAI API 形态、追踪导出默认设置以及日志行为。
这些默认设置仍适用于基于沙盒的工作流,但沙盒工作区、沙盒客户端和会话复用需单独配置。
如果你需要改为配置特定智能体或运行,请从以下内容开始:
- [智能体](agents.md),了解普通 `Agent` 上的 instructions、tools、输出类型、任务转移和安全防护措施。
- [运行智能体](running_agents.md),了解 `RunConfig`、会话和对话状态选项。
- [沙盒智能体](sandbox/guide.md),了解 `SandboxRunConfig`、清单、能力以及特定于沙盒客户端的工作区设置。
- [模型](models/index.md),了解模型选择和提供方配置。
- [追踪](tracing.md),了解每次运行的追踪元数据和自定义追踪进程。
## API 密钥和客户端
默认情况下,SDK 使用 `OPENAI_API_KEY` 环境变量进行 LLM 请求和追踪。密钥会在 SDK 首次创建 OpenAI 客户端时解析(惰性初始化),因此请在第一次模型调用之前设置该环境变量。如果无法在应用启动前设置该环境变量,可以使用 [set_default_openai_key()][agents.set_default_openai_key] 函数来设置密钥。
```python
from agents import set_default_openai_key
set_default_openai_key("sk-...")
```
或者,也可以配置要使用的 OpenAI 客户端。默认情况下,SDK 会创建一个 `AsyncOpenAI` 实例,并使用环境变量中的 API 密钥或上面设置的默认密钥。可以使用 [set_default_openai_client()][agents.set_default_openai_client] 函数更改此行为。
```python
from openai import AsyncOpenAI
from agents import set_default_openai_client
custom_client = AsyncOpenAI(base_url="...", api_key="...")
set_default_openai_client(custom_client)
```
如果你偏好基于环境变量的端点配置,默认 OpenAI 提供方也会读取 `OPENAI_BASE_URL`。启用 Responses websocket 传输时,它还会读取 `OPENAI_WEBSOCKET_BASE_URL`,用于 websocket `/responses` 端点。
```bash
export OPENAI_BASE_URL="https://your-openai-compatible-endpoint.example/v1"
export OPENAI_WEBSOCKET_BASE_URL="wss://your-openai-compatible-endpoint.example/v1"
```
最后,也可以自定义所使用的 OpenAI API。默认情况下,我们使用 OpenAI Responses API。可以使用 [set_default_openai_api()][agents.set_default_openai_api] 函数覆盖此设置,改用 Chat Completions API。
```python
from agents import set_default_openai_api
set_default_openai_api("chat_completions")
```
## OpenAI 提供方默认设置
由 OpenAI 支持的提供方在解析模型名称时也会读取 SDK 范围的默认设置。使用 [`set_default_openai_responses_transport()`][agents.set_default_openai_responses_transport] 可让 OpenAI Responses 模型默认使用 websocket 传输:
```python
from agents import set_default_openai_responses_transport
set_default_openai_responses_transport("websocket")
```
这会影响由默认 OpenAI 提供方解析的 OpenAI Responses 模型。有关提供方级别设置、连接复用、keepalive 选项以及自定义 websocket 端点,请参见 [Responses WebSocket 传输](models/index.md#responses-websocket-transport)。
如果你的 OpenAI 设置需要提供方级别的智能体注册元数据,请在启动时配置一次默认 harness ID:
```python
from agents import set_default_openai_harness
set_default_openai_harness("your-harness-id")
```
你也可以传入完整的注册对象:
```python
from agents import OpenAIAgentRegistrationConfig, set_default_openai_agent_registration
set_default_openai_agent_registration(
OpenAIAgentRegistrationConfig(harness_id="your-harness-id")
)
```
如果未设置 SDK 默认值,由 OpenAI 支持的提供方会回退使用 `OPENAI_AGENT_HARNESS_ID` 环境变量。配置 harness ID 后,SDK 会将其作为 `agent_harness_id` 添加到追踪元数据中,除非 `RunConfig.trace_metadata` 中已存在该键。
## 追踪
追踪默认启用。默认情况下,它使用与上一节中的模型请求相同的 OpenAI API 密钥(即环境变量中的密钥或你设置的默认密钥)。可以使用 [`set_tracing_export_api_key`][agents.set_tracing_export_api_key] 函数专门设置用于追踪的 API 密钥。
```python
from agents import set_tracing_export_api_key
set_tracing_export_api_key("sk-...")
```
如果模型流量使用一个密钥或客户端,但追踪应使用另一个 OpenAI 密钥,请在设置默认密钥或客户端时传入 `use_for_tracing=False`,然后单独配置追踪。如果不使用自定义客户端,同样的模式也适用于 [`set_default_openai_key()`][agents.set_default_openai_key]。
```python
from openai import AsyncOpenAI
from agents import (
set_default_openai_client,
set_tracing_export_api_key,
)
custom_client = AsyncOpenAI(base_url="https://your-openai-compatible-endpoint.example/v1", api_key="provider-key")
set_default_openai_client(custom_client, use_for_tracing=False)
set_tracing_export_api_key("sk-tracing")
```
如果在使用默认导出器时需要将追踪归因到特定组织或项目,请在应用启动前设置这些环境变量:
```bash
export OPENAI_ORG_ID="org_..."
export OPENAI_PROJECT_ID="proj_..."
```
也可以为每次运行设置追踪 API 密钥,而不更改全局导出器。
```python
from agents import Runner, RunConfig
await Runner.run(
agent,
input="Hello",
run_config=RunConfig(tracing={"api_key": "sk-tracing-123"}),
)
```
还可以使用 [`set_tracing_disabled()`][agents.set_tracing_disabled] 函数完全禁用追踪。
```python
from agents import set_tracing_disabled
set_tracing_disabled(True)
```
如果想保持追踪启用,但从追踪载荷中排除可能敏感的输入/输出,请将 [`RunConfig.trace_include_sensitive_data`][agents.run.RunConfig.trace_include_sensitive_data] 设置为 `False`
```python
from agents import Runner, RunConfig
await Runner.run(
agent,
input="Hello",
run_config=RunConfig(trace_include_sensitive_data=False),
)
```
也可以在应用启动前设置此环境变量,从而无需改代码即可更改默认值:
```bash
export OPENAI_AGENTS_TRACE_INCLUDE_SENSITIVE_DATA=0
```
有关完整的追踪控制,请参见[追踪指南](tracing.md)。
## 调试日志
SDK 定义了两个 Python 日志记录器(`openai.agents``openai.agents.tracing`),并且默认不附加处理程序。日志遵循应用的 Python 日志配置。
要启用详细日志,请使用 [`enable_verbose_stdout_logging()`][agents.enable_verbose_stdout_logging] 函数。
```python
from agents import enable_verbose_stdout_logging
enable_verbose_stdout_logging()
```
或者,可以通过添加处理程序、过滤器、格式化器等来自定义日志。更多信息可参见 [Python 日志指南](https://docs.python.org/3/howto/logging.html)。
```python
import logging
logger = logging.getLogger("openai.agents") # or openai.agents.tracing for the Tracing logger
# To make all logs show up
logger.setLevel(logging.DEBUG)
# To make info and above show up
logger.setLevel(logging.INFO)
# To make warning and above show up
logger.setLevel(logging.WARNING)
# etc
# You can customize this as needed, but this will output to `stderr` by default
logger.addHandler(logging.StreamHandler())
```
### 日志中的敏感数据
某些日志可能包含敏感数据(例如用户数据)。
默认情况下,SDK **不会** 记录 LLM 输入/输出或工具输入/输出。这些保护由以下设置控制:
```bash
OPENAI_AGENTS_DONT_LOG_MODEL_DATA=1
OPENAI_AGENTS_DONT_LOG_TOOL_DATA=1
```
如果需要临时包含这些数据以进行调试,请在应用启动前将任一变量设置为 `0`(或 `false`):
```bash
export OPENAI_AGENTS_DONT_LOG_MODEL_DATA=0
export OPENAI_AGENTS_DONT_LOG_TOOL_DATA=0
```