优化Langchain应用:使用Portkey实现日志和追踪

47 阅读2分钟

优化Langchain应用:使用Portkey实现日志和追踪

在构建Langchain应用时,为了满足单个用户请求,通常会进行多次API调用。这些请求之间的关联性分析对于深入了解用户交互至关重要。Portkey能够将诸如嵌入、完成等请求与单个用户请求关联起来,提供完整的可视化追踪。这篇文章将为您介绍如何在Langchain应用中使用Portkey实现日志记录和追踪。

主要内容

安装和导入

首先,我们需要导入Portkey、OpenAI以及Langchain的工具:

import os
from langchain.agents import AgentExecutor, create_openai_tools_agent
from langchain_openai import ChatOpenAI
from portkey_ai import PORTKEY_GATEWAY_URL, createHeaders

API密钥设置

请确保您已获取OpenAI和Portkey的API密钥:

os.environ["OPENAI_API_KEY"] = "..."  # 粘贴您的OpenAI API密钥
PORTKEY_API_KEY = "..."  # 粘贴您的Portkey API密钥

设置Trace ID

Trace ID用于将单个请求的所有API调用关联在一起:

TRACE_ID = "uuid-trace-id"  # 设置您的Trace ID

生成Portkey Headers

我们需要为HTTP请求生成正确的头信息:

portkey_headers = createHeaders(
    api_key=PORTKEY_API_KEY, provider="openai", trace_id=TRACE_ID
)

定义Prompts和工具

接下来,我们定义需要使用的Prompts和工具:

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]

执行代理

使用Portkey Headers运行您的代理:

model = ChatOpenAI(
    base_url=PORTKEY_GATEWAY_URL, default_headers=portkey_headers, temperature=0
)  # 使用API代理服务提高访问稳定性

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请求失败:确保API密钥正确且网络连接稳定。使用代理服务可以提高请求成功率。
  • Trace ID不一致:确保Trace ID在同一请求中保持一致。

总结和进一步学习资源

Portkey提供的不仅仅是日志和追踪功能,其高级功能如缓存、重试、标签等为生产环境中的工作流添加了更多的生产能力。

参考资料

  • Portkey API参考
  • Langchain官方文档

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力! ---END---