实现高效Langchain应用:使用Portkey进行日志记录、追踪与监控

99 阅读2分钟
## 引言

构建基于Langchain的应用时,我们经常需要进行多次API调用来完成单个用户请求。然而,在分析这些请求时,它们并未链接在一起。通过Portkey,可以将一个用户请求的所有嵌入、完成及其他请求记录并追踪到一个共同的ID,从而提供对用户交互的完整可视化。

本文将逐步指导您如何在Langchain应用中使用Portkey对LLM调用进行日志记录、追踪和监控。

## 主要内容

### 1. 导入必要的工具

首先,我们需要导入Portkey、OpenAI和Agent工具。

```python
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代理服务提高访问稳定性

2. 配置API密钥

配置OpenAI API密钥

在您的环境中粘贴OpenAI API密钥:

os.environ["OPENAI_API_KEY"] = "..."  # 您的OpenAI API密钥

获取Portkey API密钥

在Portkey注册并在仪表板中找到并复制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]

代码示例

运行您的代理,注意我们将在请求中包含Portkey请求头。

model = ChatOpenAI(
    base_url=PORTKEY_GATEWAY_URL, default_headers=portkey_headers, temperature=0
)

# 构建OpenAI工具代理
agent = create_openai_tools_agent(model, tools, prompt)

# 创建AgentExecutor
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"
    }
)

常见问题和解决方案

1. 如何确保请求的稳定性?

由于某些地区的网络限制,开发者可能需要考虑使用API代理服务以提高访问的稳定性。

2. 请求失败如何处理?

Portkey支持自动重试机制,通过指数退避策略,最多进行5次重试。

总结和进一步学习资源

Portkey不仅可以记录和追踪请求,还提供了缓存、标记及自动重试的功能,这些功能极大地增强了生产环境的工作流能力。您可以参考以下文档以深入了解:

参考资料

  1. Portkey Official Documentation
  2. Langchain OpenAI Tools Guide

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

---END---