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。
运行本教程需要完成以下准备:
创建 Azure 订阅
按照如何创建和管理 Azure AI Studio 中心的说明创建 Azure AI 中心资源
部署一个支持 Azure AI 模型推理 API 的模型。本示例使用
Mistral-Large
部署。- 可参考将模型部署为无服务器 API 的指导文档
您也可以在此集成中使用 GitHub Models 端点,包括免费体验层。了解更多关于 GitHub 模型的信息。
环境配置¶
请按照以下步骤从您要使用的模型中获取所需信息:
- 根据您使用的产品,访问 Azure AI studio 或 Azure Machine Learning studio
- 进入部署页面(Azure Machine Learning 中的终结点),按照先决条件中的说明选择您已部署的模型
- 复制终结点 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),您需要获取端点连接信息及凭据。对于托管在线端点(Managed Online Endpoints)这类仅服务单一模型的端点,无需填写 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 Models 或 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
端点进行文本补全。对于 chat-completions
类型的模型,complete
方法仍然可用。在此类情况下,您的输入文本会被转换为一条 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 入门指南。