Vertex AI
简介
Mistral AI 的开源模型和商业模型可以作为完全托管的端点部署在 Google Cloud Vertex AI 平台上。Vertex AI 上的 Mistral 模型是无服务器服务,因此您无需管理任何基础设施。
目前,提供以下模型
- Mistral Large (24.11, 24.07)
- Codestral (24.05)
- Mistral Nemo
有关更多详细信息,请访问模型页面。
入门
以下部分概述了在 Vertex AI 平台上部署和查询 Mistral 模型的步骤。
请求访问模型
需要满足以下条件
- 拥有已启用 Vertex AI API 的 Google Cloud 项目
- 拥有以下角色所需的 IAM 权限,以便启用模型和查询端点
- Vertex AI 用户 IAM 角色.
- 消费者采购权益经理角色
要启用您选择的模型,请导航到其在Vertex Model Garden 目录中的卡片,然后点击“启用”。
查询模型(聊天补全)
可用模型公开了一个 REST API,您可以使用 Mistral 的 SDK 或普通 HTTP 调用来查询。
要运行以下示例
- 安装
gcloud
CLI 以针对 Google Cloud API 进行身份验证,请参阅此页面以了解更多详细信息。 - 设置以下环境变量
GOOGLE_CLOUD_REGION
: 目标云区域。GOOGLE_CLOUD_PROJECT_ID
: 您的项目名称。VERTEX_MODEL_NAME
: 要查询的模型名称(例如mistral-large
)。VERTEX_MODEL_VERSION
: 要查询的模型版本(例如2407
)。
- cURL
- Python
- TypeScript
base_url="https://$GOOGLE_CLOUD_REGION-aiplatform.googleapis.com/v1/projects/$GOOGLE_CLOUD_PROJECT_ID/locations/$GOOGLE_CLOUD_REGION/publishers/mistralai/models"
model_version="$VERTEX_MODEL_NAME@$VERTEX_MODEL_VERSION"
url="$base_url/$model_version:rawPredict"
curl --location $url\
--header "Content-Type: application/json" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--data '{
"model": "'"$VERTEX_MODEL_NAME"'",
"temperature": 0,
"messages": [
{"role": "user", "content": "Who is the best French painter? Answer in one short sentence."}
],
"stream": false
}'
此代码需要一个包含以下软件包的虚拟环境
mistralai[gcp]>=1.0.0
import os
from mistralai_gcp import MistralGoogleCloud
region = os.environ.get("GOOGLE_CLOUD_REGION")
project_id = os.environ.get("GOOGLE_CLOUD_PROJECT_NAME")
model_name = os.environ.get("VERTEX_MODEL_NAME")
model_version = os.environ.get("VERTEX_MODEL_VERSION")
client = MistralGoogleCloud(region=region, project_id=project_id)
resp = client.chat.complete(
model = f"{model_name}-{model_version}",
messages=[
{
"role": "user",
"content": "Who is the best French painter? Answer in one short sentence.",
}
],
)
print(resp.choices[0].message.content)
此代码需要以下软件包
@mistralai/mistralai-gcp
(版本 >=1.0.0
)
import { MistralGoogleCloud } from "@mistralai/mistralai-gcp";
const client = new MistralGoogleCloud({
region: process.env.GOOGLE_CLOUD_REGION || "",
projectId: process.env.GOOGLE_CLOUD_PROJECT_ID || "",
});
const modelName = process.env.VERTEX_MODEL_NAME|| "";
const modelVersion = process.env.VERTEX_MODEL_VERSION || "";
async function chatCompletion(user_msg: string) {
const resp = await client.chat.complete({
model: modelName + "-" + modelVersion,
messages: [
{
content: user_msg,
role: "user",
},
],
});
if (resp.choices && resp.choices.length > 0) {
console.log(resp.choices[0]);
}
}
chatCompletion("Who is the best French painter? Answer in one short sentence.");
查询模型(FIM 补全)
Codestral 可以使用一种额外的补全模式进行查询,称为中间填充 (FIM)。有关更多信息,请参阅代码生成部分。
- cURL
- Python
- TypeScript
VERTEX_MODEL_NAME=codestral
VERTEX_MODEL_VERSION=2405
base_url="https://$GOOGLE_CLOUD_REGION-aiplatform.googleapis.com/v1/projects/$GOOGLE_CLOUD_PROJECT_ID/locations/$GOOGLE_CLOUD_REGION/publishers/mistralai/models"
model_version="$VERTEX_MODEL_NAME@$VERTEX_MODEL_VERSION"
url="$base_url/$model_version:rawPredict"
curl --location $url\
--header "Content-Type: application/json" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--data '{
"model":"'"$VERTEX_MODEL_NAME"'",
"prompt": "def count_words_in_file(file_path: str) -> int:",
"suffix": "return n_words",
"stream": false
}'
import os
from mistralai_gcp import MistralGoogleCloud
region = os.environ.get("GOOGLE_CLOUD_REGION")
project_id = os.environ.get("GOOGLE_CLOUD_PROJECT_NAME")
model_name = "codestral"
model_version = "2405"
client = MistralGoogleCloud(region=region, project_id=project_id)
resp = client.fim.complete(
model = f"{model_name}-{model_version}",
prompt="def count_words_in_file(file_path: str) -> int:",
suffix="return n_words"
)
print(resp.choices[0].message.content)
import { MistralGoogleCloud } from "@mistralai/mistralai-gcp";
const client = new MistralGoogleCloud({
region: process.env.GOOGLE_CLOUD_REGION || "",
projectId: process.env.GOOGLE_CLOUD_PROJECT_ID || "",
});
const modelName = "codestral";
const modelVersion = "2405";
async function fimCompletion(prompt: string, suffix: string) {
const resp = await client.fim.complete({
model: modelName + "-" + modelVersion,
prompt: prompt,
suffix: suffix
});
if (resp.choices && resp.choices.length > 0) {
console.log(resp.choices[0]);
}
}
fimCompletion("def count_words_in_file(file_path: str) -> int:",
"return n_words");
深入了解
有关更多信息和示例,您可以查看
- Google Cloud 合作伙伴模型文档页面。
- Mistral Large、Mistral-NeMo 和Codestral 等模型的 Vertex 模型卡片。
- Vertex 上的 Mistral 模型的入门 Colab Notebook,以及 GitHub 上的源文件。