继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

在Azure上用OpenTelemetry和Application Insights追踪LangChain代码

BIG阳
关注TA
已关注
手记 451
粉丝 71
获赞 458

随着AI和机器学习应用变得越来越复杂,确保它们的可观察性变得至关重要。跟踪有助于识别和解决性能瓶颈和错误,提供内部运作的见解。LangChain已成为构建使用大型语言模型的应用程序的一个流行框架。将LangChain应用部署到生产环境时,跟踪和监控对于理解性能以及解决问题是必不可少的。在这篇文章中,我们将介绍如何在Azure上使用OpenTelemetry和Application Insights进行追踪LangChain代码。我们将利用OpenInference、Azure的OpenTelemetry导出器和Application Insights等工具和库。

追踪为何对LangChain应用很重要

LangChain应用通常涉及复杂的操作链——提示语言模型进行操作、调用外部API接口、访问向量数据库等。跟踪帮助开发人员可视化这些操作、识别瓶颈并调试错误。这在可能具有不可预测行为的AI应用中尤为重要。

前提条件

在我们开始具体实现之前,确保已经安装了以下这些:

  • Python 3.7+
  • Azure 帐号
  • 基本的 Python 和 LangChain 知识(了解)
  • OpenAI API 密钥(或令牌)

第一步:设置OpenInference插桩:

OpenInference 为 LangChain 提供了自动仪器功能,使其能够与 OpenTelemetry 兼容。我们从安装所需包开始。

requirements.txt

azure-monitor-opentelemetry-exporter  
openinference-instrumentation-langchain (开放推理-语言链监控)   
langchain   
opentelemetry-sdk   
opentelemetry-exporter-otlp  
openai

现在通过运行 pip install -r requirements.txt 来安装所需的包。

步骤 2:设置 Azure Monitor Exporter:
Azure Monitor 提供了强大的工具来监控应用程序,其中包括 Application Insights。我们将使用 Azure Monitor Exporter 将追踪数据发送至 Application Insights 中。

import os  
from opentelemetry import trace  
from opentelemetry.sdk.trace import TracerProvider  
from opentelemetry.sdk.trace.export import BatchSpanProcessor  
from dotenv import load_dotenv  
# 加载环境变量文件 'azure.env'
load_dotenv('azure.env')  
from azure.monitor.opentelemetry.exporter import AzureMonitorTraceExporter  

# 使用应用洞察连接字符串创建导出器
exporter = AzureMonitorTraceExporter.from_connection_string(os.environ["APPLICATIONINSIGHTS_CONNECTION_STRING"])

步骤 3:将 LangChain Instrumentor 与 Azure Monitor 集成

Azure Monitor 提供了强大的工具来监控应用程序,包括 Application Insights。我们将使用 Azure Monitor OpenTelemetry 导出器将跟踪数据发送到 Application Insights。以下代码为 LangChain 应用程序设置了 OpenTelemetry 跟踪,配置为每 60 秒批量导出跨度数据,并自动为 LangChain 操作添加跟踪代码。这将帮助您收集关于 LangChain 应用程序性能和行为的详细遥测数据。

    tracer_provider = TracerProvider()  
    from openinference.instrumentation.langchain import LangChainInstrumentor  
    from opentelemetry import trace as trace_api  
    from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter  
    from opentelemetry.sdk import trace as trace_sdk  
    from opentelemetry.sdk.trace.export import ConsoleSpanExporter, SimpleSpanProcessor  
    trace_api.set_tracer_provider(tracer_provider)  
    trace_api.set_tracer_provider(tracer_provider)  
    tracer = trace_api.get_tracer(__name__)  
    span_processor = BatchSpanProcessor(exporter, schedule_delay_millis=60000)  
    trace_api.get_tracer_provider().add_span_processor(span_processor)  
    LangChainInstrumentor().instrument()

第三步:构建LangChain LLM链条

现在让我们设置一个LangChain应用来使用Azure的OpenAI服务生成笑话。首先,从这些模块中导入所需的类。创建一个提示模板,其模板会根据提供的形容词来生成一个笑话。然后,使用从环境变量中获取的API密钥、端点URL、API版本和模型名称来实例化AzureChatOpenAI类。这样配置后,应用就可以与Azure的OpenAI服务互动,生成符合指定模板的响应,从而生成相应的笑话。

    from langchain_openai import *  
    prompt_template = "告诉我一个{adjective}的笑话"  
    prompt = PromptTemplate(input_variables=["adjective"], template=prompt_template)  
    llm = AzureChatOpenAI(api_key = os.environ['AZURE_OPENAI_API_KEY'],  
                          azure_endpoint = os.environ['AZURE_OPENAI_ENDPOINT'],   
                          api_version = '2024-06-01',   
                          model= os.environ.get('AZURE_OPENAI_GPT_DEPLOYMENT'))

第四步:在Azure Monitor中查看追踪

在查看跟踪记录之前,让我们先调用 LangChain 链。

    chain = LLMChain(llm=llm, prompt=prompt, metadata={"category": "幽默"})  
    completion = chain.predict(adjective="滑稽的", metadata={"variant": "滑稽的"})  
    print(completion)

在集成 Azure Monitor 导出器后,您的 LangChain 应用将把跟踪数据发送到 Application Insights。您可以在 Application Insights 中查看这些跟踪数据。

  • 导航到 Azure 门户网站。
  • 选择你的 Application Insights 资源。
  • 转到“交易”部分查看跟踪记录。

你可以从OpenAI追踪单个的向量搜索呼叫。

最后

通过遵循这些步骤,您可以有效地使用OpenTelemetry来跟踪LangChain应用,并在Azure Monitor的Application Insights中查看这些跟踪。这种设置不仅增强了可观测性,还有助于高效识别和解决性能问题。如需更多详情,可参阅官方文档:

尽情追踪吧!

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP