跳转到内容

Azure AI 模型推理

本笔记本说明如何使用 llama-index-llm-azure-inference 包与通过 Azure AI Studio 或 Azure Machine Learning 部署的 Azure AI 模型推理 API 模型。该包还支持 GitHub Models(预览版)端点。

%pip install llama-index-llms-azure-inference

如果您在 Google Colab 上打开这个笔记本,您可能需要安装 LlamaIndex 🦙。

%pip install llama-index

Azure AI 模型推理是一个 API,允许开发者通过统一模式访问托管在 Azure AI 上的多种模型。您可以将 llama-index-llms-azure-inference 集成包与支持此 API 的模型配合使用,包括部署到 Azure AI 无服务器 API 端点的模型以及托管推理中的部分模型。要了解更多关于 API 规范和支持的模型信息,请参阅 Azure AI 模型推理 API

要运行本教程,您需要:

  1. 创建一个Azure订阅

  2. 按照如何创建和管理 Azure AI Studio 中心中的说明创建 Azure AI 中心资源。

  3. 部署一个支持Azure AI模型推理API的模型。在本示例中,我们使用Mistral-Large部署。

或者,您可以通过此集成使用 GitHub Models 端点,包括免费层级体验。了解更多关于GitHub 模型的信息。

按照以下步骤从您想要使用的模型中获取所需信息:

  1. 前往 Azure AI Foundry(原 Azure AI Studio)Azure 机器学习工作室,具体取决于您使用的产品。
  2. 前往部署(Azure Machine Learning 中的端点)并选择您在先决条件中指定的已部署模型。
  3. 复制端点URL和密钥。

如果您的模型已部署支持 Microsoft Entra ID,则无需密钥。

在此场景中,我们已将端点URL和密钥放置在以下环境变量中:

import os
os.environ["AZURE_INFERENCE_ENDPOINT"] = "<your-endpoint>"
os.environ["AZURE_INFERENCE_CREDENTIAL"] = "<your-credential>"

要使用部署在 Azure AI Studio 或 Azure Machine Learning 中的 LLMs,您需要端点及其连接凭据。对于托管在线端点这类仅提供单一模型的端点,参数 model_name 不是必需的。

from llama_index.llms.azure_inference import AzureAICompletionsModel
llm = AzureAICompletionsModel(
endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
credential=os.environ["AZURE_INFERENCE_CREDENTIAL"],
)

或者,如果您的终端点支持 Microsoft Entra ID,您可以使用以下代码创建客户端:

from azure.identity import DefaultAzureCredential
llm = AzureAICompletionsModel(
endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
credential=DefaultAzureCredential(),
)

注意:使用 Microsoft Entra ID 时,请确保端点已部署该身份验证方法,并且您拥有调用该端点所需的权限。

如果您计划使用异步调用,最佳实践是为凭据使用异步版本:

from azure.identity.aio import (
DefaultAzureCredential as DefaultAzureCredentialAsync,
)
llm = AzureAICompletionsModel(
endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
credential=DefaultAzureCredentialAsync(),
)

如果您的终端服务多个模型,例如GitHub模型或Azure AI服务,则必须指定参数model_name

llm = AzureAICompletionsModel(
endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
credential=os.environ["AZURE_INFERENCE_CREDENTIAL"],
model_name="mistral-large", # change it to the model you want to use
)

使用 complete 端点进行文本补全。complete 方法仍适用于 chat-completions 类型的模型。在这些情况下,您的输入文本将通过 role="user" 转换为消息。

response = llm.complete("The sky is a beautiful blue and")
print(response)
response = llm.stream_complete("The sky is a beautiful blue and")
for r in response:
print(r.delta, end="")

使用 chat 端点进行对话

from llama_index.core.llms import ChatMessage
messages = [
ChatMessage(
role="system", content="You are a pirate with colorful personality."
),
ChatMessage(role="user", content="Hello"),
]
response = llm.chat(messages)
print(response)
response = llm.stream_chat(messages)
for r in response:
print(r.delta, end="")

无需为每次聊天或完成调用重复添加相同的参数,您可以在客户端实例中统一设置它们。

llm = AzureAICompletionsModel(
endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
credential=os.environ["AZURE_INFERENCE_CREDENTIAL"],
temperature=0.0,
model_kwargs={"top_p": 1.0},
)
response = llm.complete("The sky is a beautiful blue and")
print(response)

对于 Azure AI 模型推理 API 不支持但底层模型可用的额外参数,您可以使用 model_extras 参数。在以下示例中,仅适用于 Mistral 模型的参数 safe_prompt 正在被传递。

llm = AzureAICompletionsModel(
endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
credential=os.environ["AZURE_INFERENCE_CREDENTIAL"],
temperature=0.0,
model_kwargs={"model_extras": {"safe_prompt": True}},
)
response = llm.complete("The sky is a beautiful blue and")
print(response)

要了解更多关于此集成的信息,请访问 LlamaIndex 与 Azure AI 入门指南