Azure AI 模型推理¶
本 Notebook 解释了如何使用 `llama-index-llm-azure-inference` 包以及使用 Azure AI Studio 或 Azure Machine Learning 中的 Azure AI 模型推理 API 部署的模型。该包也支持 GitHub 模型(预览)终结点。
%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 终结点和部分托管推理模型的模型。要详细了解 API 规范和支持它的模型,请参阅 Azure AI 模型推理 API。
要运行本教程,您需要:
创建一个 Azure 订阅。
按照 如何创建和管理 Azure AI Studio 中心 中的说明创建一个 Azure AI 中心资源。
部署一个支持 Azure AI 模型推理 API 的模型。在此示例中,我们使用 Mistral-Large 部署。
- 您可以按照 将模型部署为无服务器 API 中的说明进行操作。
或者,您可以将 GitHub 模型终结点与此集成一起使用,包括免费层体验。阅读有关 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 中的 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 模型 或 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 入门。