我们都见过那些演示完美的 AI Agent,它们似乎能毫不费力地解决各种问题。但当你真正尝试构建一个用于应对复杂挑战的 AI Agent 时,会发生什么呢?本文将深入探讨 AI Agent 开发过程中隐藏的挑战,揭示构建过程中的混乱、复杂和迷人之处。笔者亲身经历了数周与不一致的 LLM 作斗争,构建自定义工具,以及追寻难以捉摸的“完美”答案的过程。
挑战:GAIA数据集的导航之旅
GAIA数据集旨在成为通用人工智能系统的基准,其中的问题需要各种推理技能和信息来源。构建一个能够完美解答GAIA数据集中20个一级问题的 AI Agent 是一项雄心勃勃的任务。这些看似简单的问题,通常需要的不仅仅是直接的网页搜索,还可能涉及文件操作、代码执行,甚至图像分析。更重要的是,答案必须与标准答案完全匹配,这增加了另一层复杂度,不允许出现部分正确或措辞不同的答案。这无疑是 AI Agent 构建过程中遇到的第一个重大 挑战。
例如,一个看似简单的问题可能要求 AI Agent 下载一个包含复杂数据的Excel表格,从中提取特定信息,并进行计算得出最终答案。如果表格格式略有不同,或者网络连接不稳定导致下载失败,整个流程就会中断,导致错误的结果。又或者,问题可能要求 AI Agent 分析一张图片,识别其中的对象,并根据识别结果进行后续操作。图像识别的准确性将直接影响最终答案的正确性。
框架选择:LangGraph的优势
最初,笔者探索了两个有前景的 AI Agent 构建框架:smol-agents和 LangGraph。 smol-agents以其简单性而吸引人,可以快速启动和运行一个基本的代理。然而,笔者很快发现它的“不可预测性”对于需要精确的任务来说是一个重大缺陷。代理的行为常常不一致,使得调试和改进变得困难。
这促使笔者转向 LangGraph,这是一个构建在LangChain之上的库,允许您构建强大且有状态的多代理工作流。 LangGraph 基于图的结构提供了我所需要的控制和可预测性。 LangGraph 的核心逻辑是一个循环:代理决定使用哪个工具,执行它,然后将输出反馈给代理以进行下一个决策。如果代理确定不再需要其他工具,则状态将转换到最终答案生成步骤。这种显式流程至关重要,特别是因为笔者发现语言模型本身很难始终如一地提供最终答案。
举例来说,如果我们需要 AI Agent 从多个网页中提取信息,并进行汇总分析, LangGraph 可以帮助我们构建一个清晰的工作流:首先,使用搜索引擎工具找到相关的网页;然后,使用网页抓取工具提取网页内容;接着,使用自然语言处理工具对提取的内容进行分析和摘要;最后,将摘要信息进行整合,得出最终的答案。通过 LangGraph,我们可以对整个流程进行精细化的控制,确保每一步都按照预期的执行,从而提高 AI Agent 的可靠性和准确性。
工具包:多样化的能力集合
根据GAIA问题的性质,笔者开发了一套全面的 工具包,以增强 AI Agent 的能力。由于使用的不是SoTA模型,为了达到与SoTA模型相同的性能,不得不为 LLM 提供了许多有用的 工具。关键是提供一系列功能,可以处理数据集提出的各种挑战。笔者构建的 工具包 包括:
- 文件操作:从网络下载文件(图像、PDF、Excel文件)并根据其内容回答问题的工具。例如,一个 AI Agent 可以使用文件操作工具下载一份包含公司财务报告的PDF文件,然后提取其中的关键数据,例如收入、利润等,用于回答用户提出的关于公司经营状况的问题。
- 代码执行:生成和运行Python代码以解决计算问题的能力。如果一个问题需要进行复杂的数学计算, AI Agent 可以使用代码执行工具生成一段Python代码,执行计算,并将结果返回给用户。例如,计算一个复杂的积分,或者求解一个微分方程。
- 信息检索:用于执行网络搜索、查询维基百科,甚至从YouTube视频中提取文本的工具。为了更有效的 信息检索 ,笔者分别尝试了LangChain中的BraveSearch,DuckDuckGoSearch和TavilySearch工具,发现Tavily为模型提供了最好,最有用的结果。
- 象棋工具:一种更独特的工具,通过预测棋盘图像中的最佳下一步棋来下棋。事实上,考虑到Gemini 2.0 Flash和GPT-4-mini都无法正确读取图像,象棋工具是必不可少的。 事实上,鉴于Gemini 2.0 Flash和GPT-4-mini都无法正确读取图像,象棋工具是必不可少的。实际上,它们预测的最佳下一步棋每次都不同,并且在超过25次测试中它们从未得到正确的答案。
- 音频工具:一种使用OpenAI的Whisper模型生成.mp3文件的文本并根据文本回答问题的工具。 例如,它可以分析一段采访录音,并提取其中的关键信息,例如受访者的观点、态度等。
通过利用LangChain的力量,这些 工具 的集成变得无缝,LangChain为创建和管理 工具 提供了标准化的接口。LangChain能够将各种不同类型的 工具 集成到一个统一的平台中,使得 AI Agent 可以方便地调用这些 工具 来完成各种任务。
模型迷宫:Gemini还是GPT?
底层大型语言模型(LLM)的选择被证明是该项目中最关键和最具挑战性的方面之一。笔者最初选择了Gemini 2.0 Flash,希望其速度和功能能够很好地适应。 选择Gemini 2.0也是因为Google免费提供它。 但是,结果并不理想。 模型的性能不一致,并且经常难以遵循说明或正确使用提供的 工具。一个特别明显的 问题是它无法从植物学意义上正确地对蔬菜进行分类,该模型应该能够自己做到这一点,但不幸的是事实并非如此,即使通过在网络上查找结果,该任务也从未成功运行。
为了提高性能,笔者切换到GPT-4.1-mini。 笔者认为,该模型在价格和性能之间提供了良好的折衷方案。 该模型确实在推理和使用 工具 的能力方面有所提高。 这里的输出质量要好得多,该模型可以正确识别 工具 并传递正确的参数。 笔者在这里遇到的唯一问题也是不一致(无论温度设置为0的事实如何)。 实际上,例如,如果 LLM 以不同的搜索查询开始网络搜索,则2个答案将完全不同。
通过查看所有挑战参与者都在讨论的聊天记录,笔者可以观察到,其他人使用更简单的设置,使用三到四个 工具 就可以达到类似的70%的准确率,但使用了功能更强大的Gemini 2.5 Pro。 这突出显示了一个关键要点: LLM 的原始功能有时会超过代理架构和 工具 的复杂性。
总而言之,LLM 的选择对于 AI Agent 的性能至关重要。我们需要根据具体的任务需求,选择合适的 LLM,并对其进行适当的调整和优化,才能发挥其最大的潜力。
阿喀琉斯之踵:不一致的网络搜索和对完美答案的追求
笔者最终的得分为70%,这是一个值得尊敬的成就,但是达到目标的过程充满了挫败感。 大部分失败的主要原因是 网络搜索 工具的不可靠性。 网络的开放性意味着同一查询在不同时间可能会返回不同的结果,并且代理常常难以解析“噪音”并提取完美答案所需的精确信息。
“完全匹配”评估标准虽然清晰明了,但有时会适得其反。 它没有考虑语义正确但措辞不同的答案。 这种严格的评估放大了不一致的 工具 输出的影响。
例如,如果问题要求 AI Agent 找到某个历史事件发生的具体日期,而 网络搜索 工具返回的结果中包含了多个不同的日期, AI Agent 就需要进行仔细的分析和判断,才能确定哪个日期是正确的。如果 网络搜索 工具返回的结果中包含了与问题相关的多个网页, AI Agent 需要逐个分析这些网页的内容,才能找到所需的答案。
后期发现:Langfuse的潜力
在项目即将结束时,笔者发现了Langfuse,这是一个用于跟踪和调试 LLM 应用程序的强大开源 工具。 笔者后悔没有早点发现它。 Langfuse提供了对代理运行的整个生命周期的详细见解:输入,选择的 工具,传递的参数和最终输出。 这种级别的可观察性对于理解代理失败的原因以及系统地跟踪我的实验将是非常宝贵的。 像Langfuse这样的 工具 在开发强大而可靠的 AI Agent 方面的潜力是巨大的。
Langfuse可以帮助我们追踪 AI Agent 在执行任务过程中的每一个步骤,例如, AI Agent 在执行 网络搜索 时,Langfuse可以记录下搜索的关键词、返回的结果、以及最终选择的网页。通过分析这些数据,我们可以更好地了解 AI Agent 的行为,并发现潜在的问题。
最终思考和经验教训
该项目是对构建 AI Agent 的实际挑战和令人兴奋的可能性的深入研究。 这是笔者主要的收获:
- 框架 至关重要:对于复杂的,有状态的任务,像 LangGraph 这样提供控制和可预测性的 框架 非常宝贵。
- 模型 功能至关重要:底层 LLM 的选择对代理的性能具有深远的影响。 有时,功能更强大的 模型 可以弥补更简单的代理设计。
- 工具 是一把双刃剑:虽然多样化的 工具包 至关重要,但管理 工具 的一致性和可靠性(尤其是那些与开放网络交互的 工具 )是一项重大挑战。
- 可观察性是关键:像Langfuse这样的 工具 不仅仅是锦上添花,它们对于在复杂的 AI Agent 世界中进行有效的调试和实验跟踪至关重要。
尽管笔者没有获得满分,但是构建该代理的旅程还是非常有意义的。 它提供了对代理AI的当前状态,其局限性以及激动人心的未来的动手理解。它充分展现了 AI Agent 开发的复杂性和潜力,也指出了未来研究和改进的方向。例如,如何更好地利用 工具 来弥补 LLM 的不足,如何提高 网络搜索 工具的可靠性,以及如何利用Langfuse等 工具 来提高 AI Agent 的可观察性和可调试性。这些都是值得我们深入思考和探索的问题。