引言
在构建应用程序或智能体时,使用Langchain通常需要多次API调用来完成单个用户请求。为了分析这些调用,利用Portkey可以将来自单个用户请求的所有嵌入、生成等请求记录和追踪到一个公共ID,从而让您获得用户交互的全貌。本指南将详细介绍如何在Langchain应用中使用Portkey记录、追踪和监控LLM调用。
主要内容
1. 导入必要的库
开始之前,我们需要导入Portkey、OpenAI和相关的Agent工具。
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密钥
首先,设置OpenAI和Portkey的API密钥。
os.environ["OPENAI_API_KEY"] = "..." # 粘贴您的OpenAI API密钥
PORTKEY_API_KEY = "..." # 粘贴您的Portkey API密钥
3. 设置追踪ID
为您的请求设置一个追踪ID,这个ID可以用于标识所有来自单一请求的API调用。
TRACE_ID = "uuid-trace-id" # 设置追踪ID
4. 生成Portkey头信息
使用Portkey提供的函数生成请求头信息。
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]
代码示例
以下是如何使用上述设置运行代理的示例。
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的API代理服务可以提高访问的稳定性。
错误重试
Portkey提供了自动重试失败请求的功能,通过指数退避策略以避免网络过载。
总结和进一步学习资源
Portkey不仅能记录和追踪请求,还提供了缓存、标记和重试等高级特性,显著提升生产能力。想要深入了解Portkey的应用,可以参考以下资源。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---