主题
本 Notebook 介绍如何在 Azure AI studio 或 Azure Machine Learning 中使用 llama-index-llm-azure-inference 包,配合通过 Azure AI 模型推理 API 部署的模型。该包还支持 GitHub Models(预览版)端点。
%pip install llama-index-llms-azure-inference如果你在 Google Colab 中打开这个 Notebook,可能需要安装 LlamaIndex 🦙。
%pip install llama-index前置条件
Azure AI 模型推理是一个 API,允许开发者使用一致的架构访问托管在 Azure AI 上的各种模型。你可以将 llama-index-llms-azure-inference 集成包与支持此 API 的模型一起使用,包括部署到 Azure AI 无服务器 API 端点的模型以及 Managed Inference 中的一部分模型。要详细了解 API 规范和支持它的模型,请参阅 Azure AI 模型推理 API。
要运行本教程,你需要:
创建一个 Azure 订阅。
创建一个 Azure AI hub 资源,具体说明见 如何创建和管理 Azure AI Studio hub。
部署一个支持 Azure AI 模型推理 API 的模型。在本示例中,我们使用
Mistral-Large部署。- 你可以按照 将模型部署为无服务器 API 中的说明操作。
或者,你也可以在此集成中使用 GitHub Models 端点,包括免费层体验。阅读更多关于 GitHub 模型 的信息。
环境设置
按照以下步骤从你要使用的模型中获取所需信息:
- 转到 Azure AI Foundry(原 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 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 Models 或 Azure AI Services,那么你必须指定 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 入门。