Skip to content

适用于 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)。

如果 APIKeyBaseURL 留空,它们将自动回退到 OPENAI_API_KEYOPENAI_BASE_URL 环境变量,由底层 openai-go SDK 的默认行为处理。

OpenAI 模型认证

使用 OpenAI 模型时,你必须提供 API 密钥来向 OpenAI API 进行认证。提供此信息最直接的方式是使用环境变量或 .env 文件。

openaimodel 包还支持 OpenAI 兼容端点(例如通过 Ollama、LM Studio 或 vLLM 提供的本地模型),只需配置基础 URL 即可。

# .env 配置文件
OPENAI_API_KEY="PASTE_YOUR_OPENAI_API_KEY_HERE"
# .env 配置文件
OPENAI_API_KEY="api-key-if-required"
OPENAI_BASE_URL="http://localhost:11434/v1" # 示例:本地 Ollama 端点