使用Portkey实现Langchain应用的日志、追踪与监控

在构建使用Langchain的应用或代理时,通常会为了满足单个用户请求而进行多次API调用。然而,这些请求在分析时并没有自动关联在一起。因此,Portkey的引入为我们提供了全新的解决方案,它可以将来自单个用户请求的所有嵌入、完成以及其他请求统一记录并追踪到一个公共ID上,从而实现用户交互的全面可视化。本文将通过一个详细的分步指南,演示如何在Langchain应用中使用Portkey来记录、追踪和监控Langchain LLM调用。

技术背景介绍

在现代应用开发中,特别是涉及自然语言处理的应用,为了实现复杂的功能,往往需要进行多次API调用。为了监控这些调用并进行后续分析,开发者需要一种高效的方式将这些请求进行日志记录和追踪。Portkey提供了这样一个平台,能够为我们自动管理这些请求。

核心原理解析

Portkey通过分配一个通用的Trace ID,将多个API调用与单个用户请求关联起来。这样,你就可以在Portkey仪表板上看到完整的调用链路,实现深入的分析和性能优化。

代码实现演示

以下是如何在Langchain应用中集成Portkey的详细步骤:

  1. 导入必要的库

    import os
    from langchain.agents import AgentExecutor, create_openai_tools_agent
    from langchain_openai import ChatOpenAI
    from portkey_ai import PORTKEY_GATEWAY_URL, createHeaders
    
  2. 配置API密钥

    os.environ["OPENAI_API_KEY"] = "your-openai-api-key"  # 替换为你的OpenAI API密钥
    PORTKEY_API_KEY = "your-portkey-api-key"  # 替换为你的Portkey API密钥
    
  3. 设置Trace ID

    TRACE_ID = "uuid-trace-id"  # 设置Trace ID用于追踪
    
  4. 生成Portkey Headers

    portkey_headers = createHeaders(
        api_key=PORTKEY_API_KEY, provider="openai", trace_id=TRACE_ID
    )
    
  5. 定义使用的工具

    from langchain import hub
    from langchain_core.tools import tool
    
    prompt = hub.pull("hwchase17/openai-tools-agent")
    
    @tool
    def multiply(first_int: int, second_int: int) -> int:
        """Multiply two integers together."""
        return first_int * second_int
    
    @tool
    def exponentiate(base: int, exponent: int) -> int:
        "Exponentiate the base to the exponent power."
        return base**exponent
    
    tools = [multiply, exponentiate]
    
  6. 运行代理

    model = ChatOpenAI(
        base_url=PORTKEY_GATEWAY_URL, default_headers=portkey_headers, temperature=0
    )
    
    agent = create_openai_tools_agent(model, tools, prompt)
    
    agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
    
    agent_executor.invoke(
        {
            "input": "Take 3 to the fifth power and multiply that by thirty six, then square the result"
        }
    )
    

应用场景分析

通过这种集成,所有的API调用都被记录下来,并可以在必要时进行全面的调用路径分析,帮助开发人员诊断问题或优化性能。此外,Portkey还提供了缓存、重试、标记等高级功能,以进一步增强应用的稳定性和响应速度。

实践建议

  • 利用缓存功能:减少重复调用,从而降低延迟和成本。
  • 使用重试策略:提升请求的成功率,尤其是在网络不稳定的情况下。
  • 多用Portkey仪表板:通过可视化的方式追踪和分析用户请求和响应过程。

如果遇到问题欢迎在评论区交流。
—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值