AzureMLChatOnlineEndpoint
Azure Machine Learning 是一个用于构建、训练和部署机器学习模型的平台。用户可以在模型目录中探索要部署的模型类型,该目录提供了来自不同提供商的基础和通用模型。
通常,您需要部署模型以使用其预测(推理)。在
Azure Machine Learning
中,在线端点用于通过实时服务部署这些模型。它们基于端点
和部署
的概念,允许您将生产工作负载的接口与提供服务的实现解耦。
本笔记本介绍了如何使用托管在Azure Machine Learning Endpoint
上的聊天模型。
from langchain_community.chat_models.azureml_endpoint import AzureMLChatOnlineEndpoint
API Reference:AzureMLChatOnlineEndpoint
设置
您必须在Azure ML上部署模型或部署到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_core.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