优化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---