本页概述了从 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) 在生成回复期间用于采样,在应用 topP 和 topK 时会生成回复。温度可以控制词元选择的随机性。
较低的温度有利于需要更少开放性或创造性回复的提示,而较高的温度可以带来更具多样性或创造性的结果。温度为 0 表示始终选择概率最高的词元。在这种情况下,给定提示的回复大多是确定的,但可能仍然有少量变化。
如果模型返回的回答过于笼统、过于简短,或者模型给出后备回复,请尝试提高温度。 |
0.0 –1.0
|
max_tokens |
maxOutputTokens |
回复中可生成的词元数量上限。词元约为 4 个字符。100 个词元对应大约 60-80 个单词。
指定较低的值可获得较短的回答,指定较高的值可获得可能较长的回答。 |
1-8192 (OpenAI)
|
不可用 | topK |
Top-K 可更改模型选择输出词元的方式。如果 top-K 设为 1 ,表示所选词元是模型词汇表的所有词元中概率最高的词元(也称为贪心解码)。如果 top-K 设为 3 ,则表示系统将从 3 个概率最高的词元(通过温度确定)中选择下一个词元。
在每个词元选择步骤中,系统都会对概率最高的 top-K 词元进行采样。然后,系统会根据 top-P 进一步过滤词元,并使用温度采样选择最终的词元。 指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。 |
1 –40
|
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.0 –1.0
|
使用等效的 PaLM API 模型
下表介绍了可用的基础模型。
类型 | 说明 | OpenAI 端点 | PaLM API LLM 端点 |
文本 | 专门为了遵循自然语言指令而进行了调优,适用于各种语言任务。 | gpt-3.5-turbo 或 gpt-4
|
text-bison@002
|
聊天 | 已针对多轮对话应用场景进行微调。 | gpt-3.5-turbo 或 gpt-4
|
chat-bison@002
|
Embedding | 经过微调,返回文本输入的模型嵌入。 | text-embedding-ada-002
|
textembedding-gecko@003
|
对 Vertex AI 上的生成式 AI 进行安装、导入和身份验证
使用 Vertex AI SDK for Python 进行 Vertex AI 上的生成式 AI 安装、导入和身份验证。下面显示了 Vertex AI SDK for Python 和 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 的对比和示例代码
使用 Vertex AI SDK for Python 生成文本
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}")
将聊天补全与 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 = 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}")
将文本嵌入与 Vertex AI SDK for Python 搭配使用
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)}')
后续步骤
- 了解如何在 Vertex AI Studio 中测试提示。
- 详细了解文本和聊天提示设计。
- 详细了解文本嵌入。
- 了解如何调整基础模型。