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-indexAzure 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 Foundry(原 Azure AI Studio) 或 Azure 机器学习工作室,具体取决于您使用的产品。
- 前往部署(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,您需要端点及其连接凭据。对于托管在线端点这类仅提供单一模型的端点,参数 model_name 不是必需的。
from llama_index.llms.azure_inference import AzureAICompletionsModelllm = 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 入门指南。