从 Azure OpenAI 迁移到 PaLM API

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

目标

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

前提条件

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

迁移到 PaLM API

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

使用等效的 PaLM API 参数

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

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

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

0.01.0

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

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

1-8192 (OpenAI)

1-8192 (PaLM 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

使用等效的 PaLM API 模型

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

类型 说明 OpenAI 端点 PaLM API LLM 端点
文本 专门为了遵循自然语言指令而进行了调优,适用于各种语言任务。 gpt-3.5-turbogpt-4 text-bison@002
聊天 已针对多轮对话应用场景进行微调。 gpt-3.5-turbogpt-4 chat-bison@002
Embedding 经过微调,返回文本输入的模型嵌入。 text-embedding-ada-002 textembedding-gecko@003

安装、导入 Vertex AI 上的生成式 AI 并对其进行身份验证

使用 Python 版 Vertex AI SDK 安装、导入 Vertex AI 上的生成式 AI 并对其进行身份验证。下面显示了 Python 版 Vertex AI SDK 和 Azure OpenAI 的等效方法。

安装 Vertex AI PaLM API

Azure OpenAI

$ pip install --upgrade openai

Vertex AI PaLM API

$ pip install google-cloud-aiplatform

导入 Vertex AI PaLM API

Azure OpenAI

import openai

Vertex AI PaLM API

from vertexai.preview.language_models import TextGenerationModel

对 Vertex AI PaLM API 进行身份验证

Azure OpenAI

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

Vertex AI PaLM API

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

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

使用 Python 版 Vertex AI SDK 生成文本

Azure OpenAI

from openai import OpenAI

client = OpenAI()

response = client.completions.create(prompt="Hello",
    max_tokens=256,
    temperature=0.3,
    model="gpt-4")

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

Vertex AI PaLM API

from vertexai.preview.language_models import TextGenerationModel

model = TextGenerationModel.from_pretrained("text-bison@002")

response = model.predict(
    "Hello",
    max_output_tokens=256,
    temperature=0.3,)

print(f"Response from Model: {response.text}")

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

Azure OpenAI

from openai import OpenAI

client = OpenAI()

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

chat = client.chat.completions.create(
    messages=[
      {"role": "system", "content": "My name is Miles. You are an astronomer, knowledgeable about the solar system."},
      {"role": "user", "name":"example_user", "content": "How many planets are there in the solar system?"}
      ],
    **parameters)

response = chat['choices'][0]
print(f"Response from Azure OpenAI Model: {response.text}")

Vertex AI PaLM API

from vertexai.preview.language_models import ChatModel

chat_model = ChatModel.from_pretrained("chat-bison@002")

parameters = {
    "temperature": 0.2,
    "max_output_tokens": 256,
    "top_p": 0.95}

chat = chat_model.start_chat(context="My name is Miles. You are an astronomer, knowledgeable about the solar system.")

response = chat.send_message(
    "How many planets are there in the solar system?",
    **parameters)

print(f"Response from Google GenAI Model: {response.text}")

将文本嵌入与 Python 版 Vertex AI SDK 搭配使用

Azure OpenAI

import openai

embeddings = openai.Embedding.create(
  deployment_id="text-embedding-ada-002",
  #engine="text-embedding-ada-002",
  input="What is life?"
)["data"][0]["embedding"]

print(f'Length of Embedding Vector: {len(embeddings)}')

Vertex AI PaLM API

from vertexai.preview.language_models import TextEmbeddingModel

model = TextEmbeddingModel.from_pretrained("textembedding-gecko@003")
embeddings = model.get_embeddings(["What is life?"])

for embedding in embeddings:
  vector = embedding.values

print(f'Length of Embedding Vector: {len(vector)}')

后续步骤