适用于 ADK 智能体的 OpenAI 模型¶
Supported in ADKGo v2.1.0Experimental
Experimental
openaimodel 包是实验性的,其行为可能会在未来发生变更或被移除。欢迎你提出
反馈!
你可以使用 OpenAI 模型配合 ADK。连接方式取决于你使用的编程语言:
- Go — 原生支持: ADK Go 提供了直接的
openaimodel包,实现了model.LLM接口,目标是 OpenAI Responses API。开始使用。 - Python — 通过 LiteLLM: ADK Python 通过 LiteLLM 连接器访问 OpenAI 模型(以及许多其他提供商)。参见 LiteLLM。
开始使用¶
openaimodel 包提供了一个用于与 OpenAI API 交互的客户端。它实现了 model.LLM 接口,使其兼容所有暴露 OpenAI Responses API 表面的提供商。
以下代码示例展示了在你的智能体中使用 OpenAI 模型的基本实现:
import (
"context"
"log"
"github.com/openai/openai-go/v3"
"google.golang.org/adk/v2/agent/llmagent"
"google.golang.org/adk/v2/model/openaimodel"
)
// 实例化模型
llm, err := openaimodel.NewModel(context.Background(), openai.ChatModelGPT4oMini, &openaimodel.ClientConfig{})
if err != nil {
log.Fatal(err)
}
// 创建智能体
agent, err := llmagent.New(llmagent.Config{
Name: "openai_agent",
Model: llm,
Instruction: "You are a helpful AI assistant.",
})
if err != nil {
log.Fatal(err)
}
如需完整可运行的示例,请参见 ADK Go 仓库中的 examples/openai/。
支持的功能¶
- 文本生成(流式和非流式)
- 函数(工具)调用
- 通过
OutputSchema实现结构化输出(JSON schema) - 推理模型(例如 o 系列),包括推理 token 计量
- Token logprobs
限制¶
- 仅支持文本 — 不支持多模态输入(图片、音频、文件)。
- 仅支持函数工具 — 不支持内置工具(Google 搜索、代码执行等)。
- 结构化输出使用 OpenAI 严格模式 — 在
OutputSchema中声明的每个字段都被视为必填。 - 部分
GenerateContentConfig选项会返回错误而非被静默忽略:TopK、停止序列、多个候选、频率/存在惩罚、请求标签和安全设置。
配置选项¶
ClientConfig 提供了多个用于配置客户端的选项:
APIKey:你的 OpenAI API 密钥。BaseURL:自定义端点 URL,适用于 OpenAI 兼容端点。HTTPClient:自定义*http.Client。Options:高级openai-go请求选项([]option.RequestOption)。
如果 APIKey 或 BaseURL 留空,它们将自动回退到 OPENAI_API_KEY 和 OPENAI_BASE_URL 环境变量,由底层 openai-go SDK 的默认行为处理。
OpenAI 模型认证¶
使用 OpenAI 模型时,你必须提供 API 密钥来向 OpenAI API 进行认证。提供此信息最直接的方式是使用环境变量或 .env 文件。
openaimodel 包还支持 OpenAI 兼容端点(例如通过 Ollama、LM Studio 或 vLLM 提供的本地模型),只需配置基础 URL 即可。