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 models的信息。
环境设置¶
按照以下步骤从您想使用的模型中获取所需信息:
- 前往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中的LLM,您需要端点及其连接凭据。对于托管在线端点等仅服务单一模型的端点,参数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端点进行文本补全。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)
其他资源¶
要了解更多关于此集成的信息,请访问 Getting starting with LlamaIndex and Azure AI。