本页介绍了如何将为 OpenAI SDK 设计的代码迁移到 Google Gen AI SDK,以便在 Vertex AI 上使用 Gemini 模型。
迁移概览
以下笔记本展示了从 openai 库到 google-genai 库的实际迁移:
API 和语法映射
下表比较了 OpenAI SDK 与生成式 AI SDK 的核心组件、方法和参数。
| 功能 | OpenAI SDK (openai) |
Gen AI SDK (google-genai) |
|---|---|---|
| 客户端初始化 | client = OpenAI(api_key=...) |
client = genai.Client(vertexai=True, ...) |
| 生成方法 | client.chat.completions.create |
client.models.generate_content |
| 流式传输方法 | stream=True(形参) |
client.models.generate_content_stream(方法) |
| 用户输入 | messages=[{"role": "user", "content": "..."}] |
contents="..." (str) 或 contents=[...] (list) |
| 系统指令 | messages=[{"role": "system", "content": "..."}] |
config=types.GenerateContentConfig(system_instruction=...) |
| 回答访问权限 | response.choices[0].message.content |
response.text |
| 聊天记录 | 手动管理列表 (messages.append) |
client.chats.create()(有状态对象) |
| Max Tokens | max_tokens |
max_output_tokens(位于 config 内) |
| 温度 | temperature |
temperature(位于 config 内) |
| JSON 模式 | response_format={"type": "json_object"} |
response_mime_type="application/json"(位于 config 内) |
安装和设置
卸载 OpenAI 库并安装 Gen AI SDK。
pip install google-genai
2. 身份验证和初始化
虽然 OpenAI 使用 API 密钥,但 Vertex AI 使用 Identity and Access Management (IAM) 凭证(应用默认凭据)。您必须明确定义项目 ID 和位置。
| OpenAI SDK | Google Gen AI SDK |
|---|---|
|
|
设置 GOOGLE_GENAI_USE_VERTEXAI、GOOGLE_CLOUD_PROJECT 和 GOOGLE_CLOUD_LOCATION,如下所示:
export GOOGLE_GENAI_USE_VERTEXAI=true
export GOOGLE_CLOUD_PROJECT='your-project-id'
export GOOGLE_CLOUD_LOCATION='global'
配置完成后,您可以初始化客户端,而无需传递参数:
from google import genai
client = genai.Client()
代码示例
以下代码示例展示了 OpenAI SDK 和 Google Gen AI SDK 在执行常见任务时的区别。
单轮文本生成
以下代码示例展示了如何生成文本。请注意,在 Google Gen AI SDK 中,系统指令是作为配置参数(而非输入列表中的消息角色)来处理的。
| OpenAI SDK | Google Gen AI SDK |
|---|---|
|
|
使用参数生成文本
以下代码示例展示了定义配置参数时的不同之处。在 Google Gen AI SDK 中,temperature、max_output_tokens(之前为 max_tokens)等参数和 JSON 格式设置都分组到 GenerateContentConfig 对象中。
| OpenAI SDK | Google Gen AI SDK |
|---|---|
|
|
Chat(多轮)
以下代码示例展示了聊天记录管理方面的差异。Google Gen AI SDK 通过提供有状态的 chat 对象来简化此过程,而 OpenAI 则需要手动将消息附加到列表中。
| OpenAI SDK | Google Gen AI SDK |
|---|---|
|
|
流式
以下代码示例展示了流式响应的差异。Google Gen AI SDK 使用特定方法 (generate_content_stream) 而不是布尔值标志。
| OpenAI SDK | Google Gen AI SDK |
|---|---|
|
|
后续步骤
- 了解如何将 OpenAI 库与 Vertex AI 搭配使用。
- 查看有关 OpenAI 兼容性的代码示例。
- 不妨先从 Google Gen AI SDK 快速入门开始。