Skip to main content
Azure Machine Learning 是一个用于构建、训练和部署机器学习模型的平台。用户可以在 Model Catalog 中探索可以部署的模型类型,该目录提供了来自不同提供商的基础性和通用目的模型。 通常,您需要部署模型以消费其预测(推理)。在 Azure Machine Learning 中,Online Endpoints 用于实时部署这些模型。它们基于 EndpointsDeployments 的理念,允许将生产工作负载的接口与为其提供服务的实现解耦。
本笔记本介绍了如何使用托管在 Azure ML Endpoint 上的聊天模型。
from langchain_community.chat_models.azureml_endpoint import AzureMLChatOnlineEndpoint

配置

您必须在 Azure ML 中部署一个模型 或者 Azure AI Foundry(原 Azure AI Studio),并获取以下参数:
  • endpoint_url:由端点提供的 REST 端点 URL。
  • endpoint_api_type:在部署到 专用端点(托管管理基础设施)时使用 endpoint_type='dedicated'。在使用 按需付费 提供商(模型即服务)部署模型时,使用 endpoint_type='serverless'
  • endpoint_api_key:由端点提供的 API 密钥

内容格式化器

content_formatter 参数是一个处理程序类,用于将 AzureML 端点的请求和响应转换为所需的模式。由于模型目录中有多种不同的模型,每种模型的数据处理方式可能各不相同,因此提供了一个 ContentFormatterBase 类以允许用户根据需要自定义数据格式化。以下内容格式化器可供使用:
  • CustomOpenAIChatContentFormatter:用于格式化遵循 OpenAI API 规范的请求和响应数据(如 LLaMa2-chat 模型)。
注意:langchain.chat_models.azureml_endpoint.LlamaChatContentFormatter 正在弃用并被 langchain.chat_models.azureml_endpoint.CustomOpenAIChatContentFormatter 替代。 您可以从类 langchain_community.llms.azureml_endpoint.ContentFormatterBase 继承实现特定于您模型的自定义内容格式化器。

示例

以下部分包含如何使用此类的示例:

示例:实时端点的聊天完成

from langchain_community.chat_models.azureml_endpoint import (
    AzureMLEndpointApiType,
    CustomOpenAIChatContentFormatter,
)
from langchain.messages import HumanMessage

chat = AzureMLChatOnlineEndpoint(
    endpoint_url="https://<your-endpoint>.<your_region>.inference.ml.azure.com/score",
    endpoint_api_type=AzureMLEndpointApiType.dedicated,
    endpoint_api_key="my-api-key",
    content_formatter=CustomOpenAIChatContentFormatter(),
)
response = chat.invoke(
    [HumanMessage(content="Will the Collatz conjecture ever be solved?")]
)
response
AIMessage(content='  The Collatz Conjecture is one of the most famous unsolved problems in mathematics, and it has been the subject of much study and research for many years. While it is impossible to predict with certainty whether the conjecture will ever be solved, there are several reasons why it is considered a challenging and important problem:\n\n1. Simple yet elusive: The Collatz Conjecture is a deceptively simple statement that has proven to be extraordinarily difficult to prove or disprove. Despite its simplicity, the conjecture has eluded some of the brightest minds in mathematics, and it remains one of the most famous open problems in the field.\n2. Wide-ranging implications: The Collatz Conjecture has far-reaching implications for many areas of mathematics, including number theory, algebra, and analysis. A solution to the conjecture could have significant impacts on these fields and potentially lead to new insights and discoveries.\n3. Computational evidence: While the conjecture remains unproven, extensive computational evidence supports its validity. In fact, no counterexample to the conjecture has been found for any starting value up to 2^64 (a number', additional_kwargs={}, example=False)

示例:按需付费部署(模型即服务)的聊天完成

chat = AzureMLChatOnlineEndpoint(
    endpoint_url="https://<your-endpoint>.<your_region>.inference.ml.azure.com/v1/chat/completions",
    endpoint_api_type=AzureMLEndpointApiType.serverless,
    endpoint_api_key="my-api-key",
    content_formatter=CustomOpenAIChatContentFormatter,
)
response = chat.invoke(
    [HumanMessage(content="Will the Collatz conjecture ever be solved?")]
)
response
如果需要向模型传递额外参数,请使用 model_kwargs 参数:
chat = AzureMLChatOnlineEndpoint(
    endpoint_url="https://<your-endpoint>.<your_region>.inference.ml.azure.com/v1/chat/completions",
    endpoint_api_type=AzureMLEndpointApiType.serverless,
    endpoint_api_key="my-api-key",
    content_formatter=CustomOpenAIChatContentFormatter,
    model_kwargs={"temperature": 0.8},
)
参数也可以在调用时传递:
response = chat.invoke(
    [HumanMessage(content="Will the Collatz conjecture ever be solved?")],
    max_tokens=512,
)
response