从 Azure OpenAI 迁移到 Gemini API

本页概述了从 Microsoft Azure OpenAI 迁移到 Vertex AI Gemini API 所需的步骤。

Gemini API 是一项全托管式云端服务,可让您使用 Google Cloud 控制台创建和训练生成模型。它提供对大语言模型 (LLM) 的访问权限,可用于创建各种应用,包括聊天机器人、内容生成器和创作工具。

前提条件

如需将 OpenAI 服务从 Microsoft Azure OpenAI 迁移到 Vertex AI Gemini API,您必须先创建 Google Cloud 项目和开发环境。如需了解详情,请参阅设置项目和开发环境

迁移到 Gemini API

请参阅以下主题,了解如何从 Microsoft Azure 中的 OpenAI 项目迁移到 Gemini API。

使用等效的 Gemini API 参数

以下是一些常见的 Azure OpenAI 参数及其在 Gemini API 中的等效参数:

OpenAI 参数 Gemini API 参数 说明 有效值
prompt prompt 提示是提交到语言模型以接收回复的自然语言请求。提示可以包含问题、说明、语境信息、示例和文本,供模型完成或继续。 文本
temperature temperature 温度 (temperature) 在生成回复期间用于采样,在应用 topPtopK 时会生成回复。温度可以控制词元选择的随机性。 较低的温度有利于需要更少开放性或创造性回复的提示,而较高的温度可以带来更具多样性或创造性的结果。温度为 0 表示始终选择概率最高的词元。在这种情况下,给定提示的回复大多是确定的,但可能仍然有少量变化。

如果模型返回的回答过于笼统、过于简短,或者模型给出后备回复,请尝试提高温度。

0.01.0

max_tokens maxOutputTokens 回复中可生成的词元数量上限。词元约为 4 个字符。100 个词元对应大约 60-80 个单词。

指定较低的值可获得较短的回答,指定较高的值可获得可能较长的回答。

1-8192 (OpenAI)

1 - 8192 (Gemini API)

不可用 topK Top-K 可更改模型选择输出词元的方式。如果 top-K 设为 1,表示所选词元是模型词汇表的所有词元中概率最高的词元(也称为贪心解码)。如果 top-K 设为 3,则表示系统将从 3 个概率最高的词元(通过温度确定)中选择下一个词元。

在每个词元选择步骤中,系统都会对概率最高的 top-K 词元进行采样。然后,系统会根据 top-P 进一步过滤词元,并使用温度采样选择最终的词元。

指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。

140

top_p topP Top-P 可更改模型选择输出词元的方式。系统会按照概率从最高(见 top-K)到最低的顺序选择词元,直到所选词元的概率总和等于 top-P 的值。例如,如果词元 A、B 和 C 的概率分别为 0.3、0.2 和 0.1,并且 top-P 值为 0.5,则模型将选择 A 或 B 作为下一个词元(通过温度确定),并会排除 C,将其作为候选词元。

指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。

0.01.0

stop stop_sequences 停止序列是一连串字符(包括空格),如果模型遇到停止序列,则会停止生成回答。该序列不包含在回复中。您最多可以添加五个停止序列。 数组中的停止序列,例如 ["###"]

使用等效的 Gemini API 模型

下表介绍了可用的基础模型。

类型 说明 OpenAI 端点 Gemini API LLM 端点
文本 专门为了遵循自然语言指令而进行了调优,适用于各种语言任务。 gpt-3.5-turbogpt-4 gemini-1.0-pro
聊天 已针对多轮对话应用场景进行微调。 gpt-3.5-turbogpt-4 gemini-1.0-pro

进行 Vertex AI Gemini API 安装、导入和身份验证

使用 Vertex AI SDK for Python 进行 Vertex AI Gemini API 安装、导入和身份验证。下面显示了 Vertex AI SDK for Python 和 Azure OpenAI 的等效方法。

安装 Vertex AI Gemini API

Azure OpenAI

$ pip install --upgrade openai

Vertex AI Gemini API

$ pip install google-cloud-aiplatform

导入 Vertex AI Gemini API

Azure OpenAI

import openai

Vertex AI Gemini API

from vertexai.preview.generative_models import GenerativeModel

对 Vertex AI Gemini API 进行身份验证

Azure OpenAI

openai.api_key = os.getenv("OPENAI_API_KEY")

Vertex AI Gemini API

from google.colab import auth as google_auth
google_auth.authenticate_user()

Vertex AI Gemini API 与 Azure 的对比和示例代码

使用 Vertex AI SDK for Python 生成文本

Azure OpenAI

from openai import OpenAI

client = OpenAI()

response = client.completions.create(
    prompt="Write an article about the potential of AI",
    max_tokens=8192,
    temperature=0.3,
    model="gpt-4")

print(f"Response from Model: {response['choices'][0]['text']}")

Vertex AI Gemini API

from vertexai.preview.generative_models import GenerativeModel

model = GenerativeModel("gemini-1.0-pro")
generation_config = {
    "max_output_tokens": 8192,
    "temperature": 0.9,
    "top_p": 1}

responses = model.generate_content(
    "Write an article about the potential of AI",
    generation_config=generation_config,
    stream=True)

for response in responses:
    print(response.text)

将聊天补全与 Vertex AI SDK for Python 搭配使用

Azure OpenAI

from openai import OpenAI

client = OpenAI()

parameters = {
    "model":"gpt-4",
    "temperature": 0.2,
    "max_tokens": 256,
    "top_p": 0.95}

chat_completion = client.chat.completions.create(
    messages=[
      {"role": "user", "name":"example_user", "content": "Hello! Can you write a 300 word article on the history of AI?"}
      ]
    ,
    **parameters)
response = chat_completion['choices'][0]
print(f"Response from Model: {response.text}")

chat_completion = client.chat.completions.create(
    messages=[
      {"role": "user", "name":"example_user", "content": "Could you give me a catchy title for the paper?"}
      ]
    ,
    **parameters)
response = chat_completion['choices'][0]
print(f"Response from Model: {response.text}")

Vertex AI Gemini API

from vertexai.preview.generative_models import GenerativeModel

model = GenerativeModel("gemini-1.0-pro")
chat = model.start_chat()

responses = chat.send_message(
    content="Hello! Can you write a 300 word article on the history of AI?",
    stream=True)

for response in responses:
    print(response.text)

responses = chat.send_message(
    content="Could you give me a catchy title for the paper?",
    stream=True)

for response in responses:
    print(response.text)

使用 Vertex AI SDK for Python 生成代码

Azure OpenAI

from openai import OpenAI

client = OpenAI()

response = client.completions.create(
    prompt="Write a Python code to read a CSV file in pandas, calculate the average for a specific column, and then sort the data in descending order for that column",
    max_tokens=8192,
    temperature=0.3,
    model="gpt-4")

print(f"Response from Model: {response['choices'][0]['text']}")

Vertex AI Gemini API

from vertexai.preview.generative_models import GenerativeModel

model = GenerativeModel("gemini-1.0-pro")
generation_config = {
    "max_output_tokens": 8192,
    "temperature": 0.9,
    "top_p": 1,
    }

responses = model.generate_content(
    contents="Write a Python code to read a CSV file in pandas, calculate the average for a specific column, and then sort the data in descending order for that column",
    generation_config=generation_config,
    stream=True)

for response in responses:
    print(response.text)

将提示迁移到 Gemini 模型

如果您之前在 Azure OpenAI 中使用过一些提示,则可以使用 Vertex AI 提示优化器(预览版)对其进行优化,以便与 Google 模型搭配使用。

后续步骤