在现代AI应用开发中,调试和可视化复杂的LLM(大语言模型)执行过程越来越重要。Aim作为一个强大的开源工具,能够追踪LLM和工具的输入输出,以及代理的操作。本文将深入探讨如何启用和配置Aim回调,以便您可以轻松地调试和检查单个执行,甚至比较多个执行结果。
技术背景介绍
LangChain是一个用于构建包含LLM和其他工具的链式应用框架。而Aim则是为这些链式执行过程提供可视化和调试支持的好帮手。使用Aim,您可以跟踪和记录LangChain的每个模块或代理的执行输入、输出以及序列化信息。
核心原理解析
Aim通过其AimCallbackHandler与LangChain集成,允许开发者实时记录和可视化执行过程。通过设置回调,您可以在LangChain的执行过程中记录和分析每一个步骤。
代码实现演示
在这段代码中,我们将通过三个场景展示如何使用Aim来追踪LangChain执行过程:
-
安装必要的包
%pip install --upgrade --quiet aim %pip install --upgrade --quiet langchain %pip install --upgrade --quiet langchain-openai %pip install --upgrade --quiet google-search-results -
环境变量配置
import os from datetime import datetime os.environ["OPENAI_API_KEY"] = "your-openai-api-key" os.environ["SERPAPI_API_KEY"] = "your-serpapi-api-key" -
导入模块并配置回调
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="scenario 1: OpenAI LLM", ) callbacks = [StdOutCallbackHandler(), aim_callback] llm = OpenAI(temperature=0, callbacks=callbacks) -
场景1:使用OpenAI LLM
llm_result = llm.generate(["Tell me a joke", "Tell me a poem"] * 3) aim_callback.flush_tracker( langchain_asset=llm, experiment_name="scenario 2: Chain with multiple SubChains on multiple generations", ) -
场景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": "documentary about good video games that push the boundary of game design"}, {"title": "the phenomenon behind the remarkable speed of cheetahs"}, {"title": "the best in class mlops tooling"}, ] synopsis_chain.apply(test_prompts) aim_callback.flush_tracker( langchain_asset=synopsis_chain, experiment_name="scenario 3: Agent with Tools" ) -
场景3:使用工具的代理
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( "Who is Leo DiCaprio's girlfriend? What is her current age raised to the 0.43 power?" ) aim_callback.flush_tracker(langchain_asset=agent, reset=False, finish=True)
应用场景分析
- 用于调试复杂的链式执行过程,通过可视化界面直观展示过程数据。
- 多版本执行比较,帮助开发者分析不同实现的性能差异。
- 集成在自动化测试中,记录测试执行过程。
实践建议
- 在配置回调时,确保精确命名实验名称,以便于日后的查询和比较。
- 使用Aim的可视化能力,不仅可以调试LLM的执行过程,还可以优化流程设计。
- 确保在安全的环境中管理和储存API密钥。
如果遇到问题欢迎在评论区交流。
—END—
1154

被折叠的 条评论
为什么被折叠?



