复杂人工智能系统的崛起
随着ChatGPT和大型语言模型(LLMs),如GPT3.5-turbo和GPT4的引入,人工智能的进展急剧上升。这些模型已经实现了大量基于人工智能的应用,将LLM的力量带到了现实世界的使用案例中。
但是,当我们将LLM与其他工具、脚本和计算源结合起来,创造出比独立模型更强大的人工智能系统时,人工智能的真正力量才会出现。
随着人工智能系统变得越来越复杂,有效调试和监控它们的能力变得至关重要。如果没有全面的跟踪和调试,对这些系统的改进、监测和理解就会变得极具挑战性。
在这篇文章中,我们将看看如何使用Aim来轻松追踪用LangChain构建的复杂人工智能系统。具体来说,我们将讨论如何:
- 追踪链的所有输入和输出、
- 可视化和探索单个链、
- 并排比较几条链。
LangChain:用LLM构建AI系统
LangChain是一个库,旨在通过将LLMs与其他计算资源或知识源整合,实现强大的应用开发。它简化了创建问题回答系统、聊天机器人和智能代理等应用的过程。
它提供了一个统一的界面,用于管理和优化提示,创建调用LLM或其他实用程序(链)的序列,与外部数据源互动,做出决定和采取行动。LangChain使开发者能够通过充分利用LLM并轻松地将它们与其他工具连接起来,从而建立复杂、尖端的应用程序!
目的:提升人工智能系统的调试体验
监测和调试人工智能系统需要的不仅仅是在终端上扫描输出日志。
介绍一下Aim!
Aim是一个开源的人工智能元数据库,它可以跟踪你的人工智能系统执行的所有方面,促进深入探索、监测和可重复性。
重要的是,Aim有助于以编程方式查询所有跟踪的元数据,并为人工智能元数据配备了一个强大的UI/可观察层。
这样一来,Aim使调试、监测、比较不同的执行情况变得轻而易举。
体验一下Aim的终极控制吧!
在GitHub上查看Aim:github.com/aimhubio/aim
Aim + LangChain = 🚀
随着LangChain v0.0.127的发布,现在只需使用几行代码就可以用Aim来追踪LangChain代理和链了!你只需配置好LangChain代理和链即可!你所需要做的就是配置Aim的回调,并像往常一样运行你的执行。
Aim通过跟踪工具和LLM的输入和输出、代理的行动和链的结果,为你做剩下的工作。此外,它还跟踪CLI命令和参数、系统信息和资源使用、环境变量、git信息和终端输出。
让我们继续前进,用LangChain建立一个代理,配置Aim来跟踪执行,并快速浏览用户界面,看看Aim如何帮助调试和监控。
实践案例:构建一个多任务人工智能代理
设置代理和Aim回调
让我们建立一个配备两个工具的代理:
- SerpApi工具,用于访问谷歌搜索结果、
- LLM-math工具来执行所需的数学运算。
在这个特殊的例子中,我们将提示代理发现莱昂纳多-迪卡普里奥的女朋友是谁,并计算出她目前的年龄提高到0.43倍:
tools = load_tools(["serpapi", "llm-math"], llm=llm, callback_manager=manager)
agent = initialize_agent(
tools,
llm,
agent="zero-shot-react-description",
callback_manager=manager,
verbose=True,
)
agent.run(
"Who is Leo DiCaprio's girlfriend? What is her current age raised to the 0.43 power?"
)
进入全屏模式 退出全屏模式
现在链子已经设置好了,让我们来整合Aim回调。这只需要几行代码,Aim会在执行过程中捕捉到所有的移动部件。
from langchain.callbacks import AimCallbackHandler
aim_callback = AimCallbackHandler(
repo=".",
experiment_name="scenario 1: OpenAI LLM",
)
aim_callback.flush_tracker(langchain_asset=agent, reset=False, finish=True)
进入全屏模式 退出全屏模式
Aim is entirely open-source and self-hosted, which means your data remains private and isn't shared with third parties.
在LangChain的官方文档中找到完整的脚本和更多的例子:https://python.langchain.com/en/latest/ecosystem/aim_tracking.html
执行代理和运行Aim
在执行代理之前,通过执行以下命令确保Aim已经安装:
pip install aim
进入全屏模式 退出全屏模式
现在,让我们运行多个执行程序,并启动Aim用户界面来可视化和探索结果:
通过运行python example.py执行脚本,
,然后用aim up命令启动用户界面。
随着Aim的启动和运行,你可以毫不费力地深入了解每个执行的细节,比较结果,并获得有助于你调试和迭代你的链的洞察力。
通过Aim探索执行情况
主页
在主页上,你会发现所有被跟踪的执行的有组织的视图,使你很容易跟踪你的进展和最近的运行。要导航到一个特定的执行,只需点击链接,你就会被带到一个专门的页面,里面有关于该特定执行的全面信息。
深入到一个单一的执行
当导航到一个单独的执行页面时,你会发现一个系统信息和执行细节的概述。在这里你可以访问:
- CLI命令和参数、
- 环境变量、
- 软件包、
- Git信息、
- 系统资源使用情况、
- 以及其他关于单个执行的相关信息。
Aim在执行过程中自动捕捉终端输出。在 "日志 "选项卡中访问这些日志,可以轻松地跟踪你的人工智能系统的进展并识别问题。
在 "文本 "选项卡中,你可以探索一个链条的内部运作,包括代理行动、工具和LLMs输入和输出。这种深入的观点使你能够审查在执行的每一步收集的元数据。
利用Aim的文本浏览器,你可以毫不费力地比较多个执行,并排检查它们的行动、输入和输出。它有助于识别模式或发现差异。
例如,在给定的例子中,两次执行产生的答案是:"Camila Morrone是Leo DiCaprio的女朋友,她目前的年龄提高到0.43倍是3.8507291225496925"。然而,另一个执行的答案是 "3.991298452658078"。之所以出现这种差异,是因为前两次执行时错误地将卡米拉-莫罗内的年龄确定为23岁,而不是25岁。
有了Text Explorer,你可以很容易地比较和分析各种执行的结果,并做出决定,进一步调整代理和提示。
总结
总之,随着人工智能系统变得更加复杂和强大,对综合跟踪和调试工具的需求变得越来越重要。LangChain与Aim相结合,为构建和监控复杂的AI应用提供了强大的解决方案。通过遵循本博文中的实际例子,你可以有效地监控和调试你的基于LangChain的系统!