探索Portkey在Langchain中的应用:高效记录、追踪和监控

104 阅读2分钟

引言

在构建应用程序或智能体时,使用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---