大语言模型与AI Agent Harness Engineering:从"会说话的百科全书"到"能干活的智能助手"的本质飞跃

关键词:大语言模型、AI Agent、Harness Engineering、智能体、提示工程、工具调用、自主决策

摘要:本文将从本质原理、核心能力、架构设计、应用场景等多个维度,深入浅出地剖析大语言模型(LLM)与AI Agent Harness Engineering的根本区别。我们会用生活中的生动故事类比核心概念,通过Mermaid图表展示架构与交互关系,结合Python代码实现实际案例,让读者真正理解:LLM是"被动的知识生成器",而AI Agent是"主动的问题解决者",Harness Engineering则是"构建智能体的工程方法论"。读完本文,你将明白为什么AI Agent被认为是LLM之后的下一个AI里程碑,以及如何通过Harness Engineering打造可靠、高效、安全的AI应用。


背景介绍

目的和范围

在2022年底ChatGPT横空出世之后,大语言模型(LLM)迅速成为全球科技领域最热门的话题。LLM展现出了惊人的文本生成、知识问答、代码编写能力,仿佛让我们看到了通用人工智能(AGI)的曙光。然而,随着大家对LLM的使用越来越深入,其局限性也逐渐暴露出来:LLM不会主动使用外部工具(比如查天气、搜资料、订机票),不会做长期规划,不会从错误中反思学习,甚至会一本正经地"胡说八道"(幻觉问题)。

为了解决这些问题,AI Agent(智能体)和Harness Engineering(智能体工程)应运而生。很多人可能会把LLM、AI Agent、Harness Engineering混为一谈,或者认为AI Agent只是"带工具的LLM"。但实际上,它们在本质上有着天壤之别。

本文的目的就是要拨开迷雾,讲清楚这三者的本质区别:

  1. 什么是LLM?它的核心能力和局限是什么?
  2. 什么是AI Agent?它和LLM的根本不同在哪里?
  3. 什么是Harness Engineering?它和提示工程(Prompt Engineering)有什么区别?
  4. 如何从原理、架构、能力、应用等维度对比它们?
  5. 如何通过实际代码案例直观感受它们的区别?

本文的范围主要聚焦于本质区别的探讨,不会深入到LLM的Transformer架构细节(当然会用通俗易懂的方式解释核心原理),也不会覆盖所有AI Agent框架(会以LangChain为例),但会给出足够的信息让读者建立起完整的认知体系。

预期读者

本文适合以下人群阅读:

  • 对AI感兴趣的技术爱好者,想了解LLM和AI Agent的区别;
  • 程序员、AI从业者,想学习如何构建AI Agent;
  • 产品经理、技术管理者,想知道AI Agent能解决什么实际问题;
  • 学生、研究者,想深入理解AI Agent的原理和工程实践。

本文会用"给小学生讲故事"的方式解释复杂概念,同时也会包含专业的技术内容(比如代码、公式、图表),所以无论你是新手还是专家,都能从中有所收获。

文档结构概述

本文的结构就像搭积木一样,从基础概念到实际应用,一步一步展开:

  1. 背景介绍:讲清楚为什么要讨论这个话题,本文的目的、范围、预期读者;
  2. 核心概念与联系:用故事引入核心概念,解释每个概念的定义,对比它们的属性,用图表展示关系;
  3. 核心算法原理 & 具体操作步骤:讲解LLM、AI Agent、Harness Engineering的核心原理,用Python代码展示具体操作;
  4. 数学模型和公式:用通俗易懂的方式讲解相关的数学公式(比如Transformer的自注意力机制、ReAct框架的决策逻辑);
  5. 项目实战:从零开始构建一个能查天气、订外卖、管理日程的AI Agent,展示完整的开发流程;
  6. 实际应用场景:对比LLM和AI Agent在不同场景下的应用,看看它们能解决什么问题;
  7. 工具和资源推荐:推荐常用的AI Agent框架、LLM接口、工具API,以及学习资源;
  8. 未来发展趋势与挑战:探讨AI Agent的未来发展方向,以及面临的挑战;
  9. 总结:回顾核心概念和它们的关系,强调本质区别;
  10. 思考题:提出一些问题,鼓励读者进一步思考和实践;
  11. 附录:常见问题与解答,扩展阅读与参考资料。

术语表

在开始之前,我们先定义一些核心术语,避免大家混淆:

核心术语定义
  1. 大语言模型(LLM, Large Language Model):一种基于Transformer架构的深度学习模型,通过学习海量文本数据,能够生成连贯、有逻辑的文本,回答问题,编写代码等。它的核心能力是"预测下一个单词",是被动的文本生成器
  2. AI Agent(智能体):一种能够感知环境、做出决策、采取行动的自主系统。它通常包含LLM作为"大脑",但还具备记忆模块、工具调用能力、规划能力、反思能力等,是主动的问题解决者
  3. Harness Engineering(智能体工程):一套工程化构建AI Agent的方法论,包括提示工程、工具集成、记忆管理、错误处理、评估优化等,关注的是如何让AI Agent可靠、高效、安全地工作。
  4. 提示工程(Prompt Engineering):通过设计高质量的提示词(Prompt),引导LLM生成更好的输出,是Harness Engineering的一部分,但不是全部。
  5. 工具调用(Tool Calling):AI Agent根据任务需要,主动调用外部工具(比如搜索API、天气API、数据库)获取信息或执行操作的能力。
  6. 自主决策(Autonomous Decision Making):AI Agent根据目标、环境、记忆,自主决定下一步做什么的能力,不需要用户一步步指示。
  7. 记忆模块(Memory Module):AI Agent用于存储历史交互、任务进度、外部信息的组件,分为短期记忆和长期记忆。
相关概念解释
  1. Transformer架构:LLM的核心架构,由Vaswani等人在2017年的论文《Attention Is All You Need》中提出,核心是自注意力机制(Self-Attention),能够让模型关注文本中不同位置的单词之间的关系。
  2. ReAct框架:一种常用的AI Agent框架,由"Reasoning(推理)"和"Acting(行动)"组成,让AI Agent在行动之前先推理,行动之后观察结果,再根据结果调整下一步行动。
  3. 幻觉(Hallucination):LLM生成的内容看起来很合理,但实际上是错误的或不存在的,这是LLM的一个主要局限。
  4. 零样本学习(Zero-Shot Learning):LLM不需要额外的训练数据,只通过提示词就能完成任务的能力。
  5. 少样本学习(Few-Shot Learning):LLM只需要几个示例就能完成任务的能力。
缩略词列表
  • LLM:Large Language Model(大语言模型)
  • AI:Artificial Intelligence(人工智能)
  • AGI:Artificial General Intelligence(通用人工智能)
  • NLP:Natural Language Processing(自然语言处理)
  • API:Application Programming Interface(应用程序编程接口)
  • SDK:Software Development Kit(软件开发工具包)
  • JSON:JavaScript Object Notation(一种数据交换格式)
  • HTTP:Hypertext Transfer Protocol(超文本传输协议)

核心概念与联系

故事引入:从"会说话的百科全书"到"能干活的私人助理"

让我们用一个生活中的故事来引出今天的主题:

假设你有一个朋友叫"小百科",他是一个超级聪明的人,读过几乎所有的书,知道天文地理、历史哲学、数学物理,你问他任何问题,他都能给你一个头头是道的回答。比如你问他"北京今天天气怎么样?“,他会说"根据我学到的知识,北京属于温带季风气候,夏季高温多雨,冬季寒冷干燥,但今天的具体天气我不太清楚,因为我的知识截止到2023年10月,而且实时天气信息我查不到。“你再问他"能帮我订一份披萨吗?”,他会说"我知道披萨是一种意大利美食,通常由面饼、奶酪、番茄酱和各种配料组成,但我没法帮你订,因为我没有手机,也不会用外卖APP。”

这就是LLM的真实写照:它是一本"会说话的百科全书",知识渊博,但被动、不会用工具、不会主动做事

现在,你又有了一个朋友叫"小助手",他不仅像小百科一样聪明,还配备了手机、电脑、记事本,还学会了怎么用各种APP。你对他说"我今天晚上要请朋友吃饭,你帮我安排一下吧。"小助手会怎么做呢?

  1. 他先问你几个问题:“你有多少朋友?想吃什么口味的?预算多少?几点吃饭?”
  2. 然后他打开手机查了一下今天的天气:“今天晚上北京有小雨,我们选一个离你家近的餐厅吧。”
  3. 接着他用外卖APP或者点评软件搜索符合条件的餐厅,挑了几家评分高的,发给你看。
  4. 你选了一家之后,他帮你订了座位,还问你要不要提前点菜。
  5. 订好之后,他把餐厅的地址、电话、订座信息记在记事本上,还提醒你提前半小时出发。
  6. 到了晚上,他又提醒你该出门了,还查了一下路况,告诉你怎么走最快。

这就是AI Agent的真实写照:它是一个"能干活的私人助理",不仅聪明,还主动、会用工具、会规划、会记忆

而"小助手"的手机、电脑、记事本,以及教他怎么用这些工具、怎么规划任务、怎么记录信息的方法,就是Harness Engineering:它是一套"装备和训练方法",让"小百科"变成了"小助手"。

核心概念解释(像给小学生讲故事一样)

现在,我们用更通俗易懂的语言,详细解释这三个核心概念:

核心概念一:大语言模型(LLM)—— 会预测下一个单词的"超级鹦鹉"

很多人觉得LLM很神秘,其实它的核心原理非常简单:预测下一个单词

想象一下,你在玩一个"接龙游戏":我说"今天天气真",你会接"好";我说"我想吃一份",你会接"披萨";我说"北京是中国的",你会接"首都"。LLM就是一个玩这个游戏的超级高手,它读过几千亿个单词的文本(比如所有的书、网页、新闻、代码),所以它能非常准确地预测下一个单词是什么。

比如你给LLM输入"请写一首关于春天的诗",LLM会一个单词一个单词地预测:“春天"→"来了"→”,“→"花儿"→"开了"→”,“→"小草"→"绿了"→”……",最后生成一首完整的诗。

再比如你给LLM输入"请用Python写一个计算斐波那契数列的函数",LLM会一个单词(或者说一个代码 token)一个单词地预测:“def"→” fibonacci"→"(“→"n"→”)“→”:“→”……",最后生成一段完整的代码。

但LLM有几个很大的局限:

  1. 它是被动的:你不给它输入,它就不会输出;你让它做什么,它才会做什么,不会主动帮你做事。
  2. 它不会用工具:它没法查实时天气、没法搜最新新闻、没法订机票酒店,因为它没有"手"和"脚",只能用它脑子里记住的知识(而且知识截止到训练数据的时间)。
  3. 它不会规划:如果任务很复杂,比如"帮我安排一次去巴黎的旅行",它可能会给你一个大概的建议,但没法一步步帮你订机票、订酒店、办签证、做攻略。
  4. 它会"胡说八道":因为它只是在预测下一个单词,有时候会生成看起来很合理但实际上错误的内容(比如编造一个不存在的名人名言,或者写一段有bug的代码)。
  5. 它没有记忆:如果你和它聊了很久,它可能会忘记你之前说过的话(当然现在的LLM有上下文窗口,但窗口大小有限,而且不是真正的长期记忆)。

用一句话总结LLM:它是一个知识渊博、会说话的"超级鹦鹉",但它只是在"模仿"人类说话,不会真正"思考"和"做事"。

核心概念二:AI Agent(智能体)—— 能感知、决策、行动的"机器猫"

如果你看过《机器猫》(哆啦A梦),你就知道什么是AI Agent了:机器猫不仅聪明,还有一个装满工具的口袋,能帮大雄解决各种问题。

AI Agent就是这样的"机器猫",它通常由以下几个部分组成:

  1. 大脑(LLM):负责思考、推理、生成文本,就像机器猫的脑子。
  2. 眼睛和耳朵(感知模块):负责感知环境,比如接收用户的输入、观察工具的返回结果,就像机器猫的眼睛和耳朵。
  3. 口袋(工具库):装满了各种工具,比如搜索工具、天气工具、计算器、数据库,就像机器猫的四次元口袋。
  4. 记事本(记忆模块):负责记录历史交互、任务进度、外部信息,就像机器猫的记事本。
  5. 手脚(执行模块):负责调用工具、执行操作,就像机器猫的手脚。

AI Agent的工作流程通常是这样的:

  1. 感知:接收用户的请求或环境的变化。
  2. 推理:根据目标、记忆、感知到的信息,思考下一步该做什么。
  3. 决策:决定调用哪个工具,或者生成什么输出。
  4. 行动:执行决策,比如调用工具、回复用户。
  5. 观察:观察行动的结果,比如工具的返回信息、用户的反馈。
  6. 反思:根据观察结果,调整自己的策略,更新记忆。
  7. 重复:回到步骤2,直到任务完成。

和LLM相比,AI Agent有几个核心优势:

  1. 它是主动的:它有自己的目标,会主动想办法完成任务,不需要用户一步步指示。
  2. 它会用工具:它能调用各种外部工具,获取实时信息,执行实际操作。
  3. 它会规划:它能把复杂任务拆分成小步骤,一步步完成。
  4. 它会反思:它能从错误中学习,调整自己的策略。
  5. 它有记忆:它能记住历史交互、任务进度,不会忘记之前的事情。

用一句话总结AI Agent:它是一个能感知环境、做出决策、采取行动的"机器猫",不仅聪明,还能真正帮你"做事"。

核心概念三:Harness Engineering(智能体工程)—— 训练"机器猫"的"驯兽师"

有了LLM这个"大脑",有了工具这个"口袋",是不是就能造出AI Agent了?没那么简单。就像你有了一只聪明的猫,还有很多玩具和工具,但如果你不训练它,它还是不会帮你做事。

Harness Engineering就是训练"机器猫"的"驯兽师",它是一套工程化构建AI Agent的方法论,关注的是如何让AI Agent可靠、高效、安全地工作。

Harness Engineering主要包括以下几个方面:

  1. 提示工程(Prompt Engineering):设计高质量的提示词,引导LLM更好地推理、决策、行动。这是Harness Engineering的基础,但不是全部。
  2. 工具集成(Tool Integration):把各种外部工具(比如API、数据库、软件)集成到AI Agent中,让AI Agent能方便地调用它们。
  3. 记忆管理(Memory Management):设计合理的记忆结构(比如短期记忆、长期记忆、向量数据库),让AI Agent能有效地存储和检索信息。
  4. 规划与调度(Planning & Scheduling):设计任务规划和调度算法,让AI Agent能把复杂任务拆分成小步骤,合理安排顺序。
  5. 错误处理(Error Handling):设计错误处理机制,让AI Agent能识别和纠正错误,不会因为一个小错误就崩溃。
  6. 评估优化(Evaluation & Optimization):设计评估指标和优化方法,持续改进AI Agent的性能。
  7. 安全与对齐(Safety & Alignment):设计安全机制,确保AI Agent的行为符合人类的价值观,不会做坏事。

很多人会把Harness Engineering和提示工程混为一谈,但实际上,提示工程只是Harness Engineering的一小部分。Harness Engineering是一个更全面、更系统的工程方法论,它关注的是整个AI Agent的生命周期,从设计、开发、测试到部署、运维、优化。

用一句话总结Harness Engineering:它是训练"机器猫"的"驯兽师",是一套工程化构建可靠、高效、安全的AI Agent的方法论。

核心概念之间的关系(用小学生能理解的比喻)

现在,我们用几个生活中的比喻,来解释这三个核心概念之间的关系:

关系一:LLM是AI Agent的"大脑",Harness Engineering是"身体和训练方法"

如果把AI Agent比作一个人,那么:

  • LLM就是这个人的大脑,负责思考、推理、说话。
  • Harness Engineering就是这个人的身体(包括手、脚、眼睛、耳朵、记事本)和训练方法(教他怎么用身体、怎么做事)。

没有大脑,身体就是一堆废铁;没有身体和训练方法,大脑就是一个只会说话的"植物人"。只有把大脑、身体、训练方法结合起来,才能成为一个能干活的"正常人"。

关系二:LLM是"原材料",AI Agent是"产品",Harness Engineering是"生产工艺"

如果把AI Agent比作一辆汽车,那么:

  • LLM就是这辆汽车的发动机,是核心动力来源。
  • AI Agent就是这辆汽车,由发动机、轮胎、方向盘、座椅、导航系统等组成。
  • Harness Engineering就是汽车生产工艺,包括设计、组装、测试、优化等流程。

没有发动机,汽车就跑不起来;没有生产工艺,发动机就是一堆零件,没法变成汽车。只有用生产工艺把发动机和其他零件组装起来,才能变成一辆能开的汽车。

关系三:提示工程是Harness Engineering的"一个零件",不是"全部"

很多人觉得Harness Engineering就是提示工程,其实不然。如果把Harness Engineering比作一个工具箱,那么提示工程就是这个工具箱里的一把螺丝刀,是很重要的工具,但不是全部。工具箱里还有扳手、锤子、钳子、电钻等其他工具,只有把这些工具结合起来,才能修好各种东西。

提示工程确实很重要,它能引导LLM更好地推理和决策,但如果只有提示工程,没有工具集成、记忆管理、错误处理等,AI Agent还是没法完成复杂任务。

核心概念原理和架构的文本示意图(专业定义)

现在,我们用更专业的语言,画出这三个核心概念的原理和架构文本示意图:

大语言模型(LLM)的原理和架构文本示意图
LLM的核心是Transformer架构,由以下几个部分组成:
1. 输入层(Input Layer):把文本转换成向量(Token Embeddings),加上位置编码(Positional Encoding),让模型知道每个单词的位置。
2. 编码器/解码器层(Encoder/Decoder Layer):由多个相同的层堆叠而成,每个层包含多头自注意力机制(Multi-Head Self-Attention)和前馈神经网络(Feed-Forward Neural Network)。
   - 多头自注意力机制:让模型关注文本中不同位置的单词之间的关系,比如"它"指代的是前面的"猫"。
   - 前馈神经网络:对每个位置的向量进行非线性变换,提取更高级的特征。
3. 输出层(Output Layer):把最后一层的向量转换成概率分布,预测下一个单词。

LLM的工作流程:
输入文本 →  Token化 →  向量转换 + 位置编码 →  多层Transformer处理 →  输出概率分布 →  采样下一个单词 →  重复直到生成结束
AI Agent的原理和架构文本示意图
AI Agent的核心是"感知-推理-决策-行动-观察-反思"循环,由以下几个部分组成:
1. 感知模块(Perception Module):接收用户输入、环境变化、工具返回结果,转换成模型能理解的格式。
2. 记忆模块(Memory Module):存储历史交互、任务进度、外部信息,分为:
   - 短期记忆(Short-Term Memory):存储当前会话的信息,比如用户之前的问题、工具的返回结果,通常放在LLM的上下文窗口中。
   - 长期记忆(Long-Term Memory):存储过去的历史信息,比如用户的偏好、之前完成的任务,通常用向量数据库(Vector Database)存储。
3. 推理引擎(Reasoning Engine):基于LLM,根据目标、记忆、感知到的信息,进行推理,思考下一步该做什么。
4. 决策模块(Decision Module):根据推理结果,决定下一步的行动,比如调用某个工具、回复用户、结束任务。
5. 工具库(Tool Library):包含各种外部工具,比如搜索工具、天气工具、计算器、数据库,每个工具都有明确的输入输出格式。
6. 执行模块(Execution Module):执行决策模块的指令,比如调用工具、发送消息给用户。
7. 观察模块(Observation Module):观察执行模块的结果,比如工具的返回信息、用户的反馈。
8. 反思模块(Reflection Module):根据观察结果,调整推理策略,更新记忆,优化未来的决策。

AI Agent的工作流程:
1. 感知:接收用户请求 →  2. 推理:基于目标、记忆、感知信息思考 →  3. 决策:决定下一步行动 →  4. 行动:执行决策(调用工具/回复用户) →  5. 观察:观察行动结果 →  6. 反思:调整策略、更新记忆 →  7. 重复:回到步骤2,直到任务完成
Harness Engineering的原理和架构文本示意图
Harness Engineering是一套工程化构建AI Agent的方法论,覆盖AI Agent的整个生命周期,由以下几个部分组成:
1. 需求分析(Requirement Analysis):明确AI Agent的目标、功能、性能要求、安全要求。
2. 架构设计(Architecture Design):设计AI Agent的整体架构,比如感知模块、记忆模块、推理引擎、决策模块、工具库的选择和设计。
3. 提示工程(Prompt Engineering):设计高质量的提示词,包括系统提示(System Prompt)、少样本示例(Few-Shot Examples)、思维链提示(Chain-of-Thought Prompt)等。
4. 工具集成(Tool Integration):选择合适的工具,封装工具的API,定义工具的输入输出格式,集成到AI Agent中。
5. 记忆管理(Memory Management):设计记忆结构,选择合适的存储方式(比如上下文窗口、向量数据库),实现记忆的存储、检索、更新。
6. 规划调度(Planning & Scheduling):设计任务规划算法(比如ReAct、Tree-of-Thought),把复杂任务拆分成小步骤,合理安排顺序。
7. 错误处理(Error Handling):设计错误检测、错误纠正、错误恢复机制,比如当工具调用失败时,自动重试或者换一个工具。
8. 评估优化(Evaluation & Optimization):设计评估指标(比如准确率、完成率、响应时间),收集用户反馈,持续优化AI Agent的性能。
9. 安全对齐(Safety & Alignment):设计安全机制,比如内容过滤、用户授权、行为监控,确保AI Agent的行为符合人类的价值观。
10. 部署运维(Deployment & Operations):把AI Agent部署到生产环境,监控其运行状态,处理故障,进行版本更新。

Harness Engineering的工作流程:
需求分析 →  架构设计 →  提示工程 →  工具集成 →  记忆管理 →  规划调度 →  错误处理 →  开发测试 →  评估优化 →  安全对齐 →  部署运维 →  持续迭代

Mermaid 流程图

现在,我们用Mermaid流程图更直观地展示这三个核心概念的架构和交互关系:

Mermaid流程图一:LLM的工作流程

用户输入文本

Token化

向量转换 + 位置编码

多层Transformer处理

输出概率分布

采样下一个单词

是否生成结束

输出完整文本

Mermaid流程图二:AI Agent的工作流程(ReAct框架)

调用工具

回复用户

用户请求

感知模块

记忆模块读取

推理引擎思考

决策模块决定行动

行动类型

工具库

执行模块调用工具

观察模块获取结果

执行模块回复用户

反思模块调整策略

记忆模块更新

任务是否完成

结束任务

Mermaid流程图三:LLM、AI Agent、Harness Engineering的交互关系

构建和训练

使用

作为大脑

优化

请求

响应

大语言模型

输入层

Transformer层

输出层

AI Agent 智能体

感知模块

记忆模块

推理引擎

决策模块

工具库

执行模块

观察模块

反思模块

Harness Engineering 智能体工程

需求分析

架构设计

提示工程

工具集成

记忆管理

规划调度

错误处理

评估优化

安全对齐

部署运维

用户

Mermaid ER实体关系图:核心概念之间的实体关系

使用

包含作为大脑

调用

使用

构建和训练

包含

包含

包含

USER

string

user_id

string

name

string

preferences

AI_AGENT

string

agent_id

string

name

string

goal

string

architecture

LLM

string

model_id

string

name

string

provider

int

context_window

TOOL

string

tool_id

string

name

string

description

string

input_format

string

output_format

MEMORY

string

memory_id

string

type

string

storage

int

capacity

HARNESS_ENGINEERING

string

process_id

string

name

string

methodology

PROMPT_ENGINEERING

TOOL_INTEGRATION

MEMORY_MANAGEMENT


核心概念原理 & 具体操作步骤

在这一部分,我们将深入讲解LLM、AI Agent、Harness Engineering的核心原理,并通过Python代码展示具体的操作步骤,让大家能直观感受它们的区别。

核心概念一:大语言模型(LLM)的核心原理 & 具体操作步骤

LLM的核心原理:Transformer与自注意力机制

前面我们说过,LLM的核心是Transformer架构,而Transformer的核心是自注意力机制(Self-Attention)。现在我们用通俗易懂的方式解释一下自注意力机制:

想象一下,你在读一句话:“小猫躺在沙发上,它在睡觉。“当你读到"它"的时候,你会自动想到"它"指代的是前面的"小猫”,而不是"沙发”。自注意力机制就是让LLM具备这种能力:关注句子中不同单词之间的关系

自注意力机制的工作原理可以用三个步骤来解释:

  1. 计算查询(Query)、键(Key)、值(Value):给每个单词计算三个向量:查询向量(Q)、键向量(K)、值向量(V)。这三个向量是通过训练得到的,可以理解为每个单词的"身份特征"。
  2. 计算注意力分数(Attention Scores):对于每个单词的查询向量Q,计算它和所有单词的键向量K的相似度(通常用点积),然后用Softmax函数把这些相似度转换成概率分布,这就是注意力分数。注意力分数越高,说明这个单词越关注另一个单词。
  3. 加权求和值向量(Weighted Sum of Values):用注意力分数加权求和所有单词的值向量V,得到这个单词的最终表示。

用数学公式表示的话,自注意力机制的公式是:
Attention(Q,K,V)=softmax(QKTdk)V Attention(Q,K,V) = softmax(\frac{QK^T}{\sqrt{d_k}})V Attention(Q,K,V)=softmax(dk QKT)V
其中,dkd_kdk是键向量K的维度,除以dk\sqrt{d_k}dk 是为了防止点积太大导致Softmax函数的梯度消失。

多头自注意力机制(Multi-Head Self-Attention)就是把Q、K、V分成多个"头"(Head),每个头关注不同的关系,然后把结果拼接起来。比如,一个头关注"指代关系"(比如"它"指代"小猫"),另一个头关注"动作关系"(比如"躺"和"沙发"的关系),这样模型能学到更丰富的特征。

LLM的具体操作步骤:用Python调用OpenAI的GPT-3.5-turbo

现在我们用Python代码展示如何调用LLM(这里以OpenAI的GPT-3.5-turbo为例),感受一下LLM的核心能力:

步骤1:安装OpenAI库

首先,我们需要安装OpenAI的Python库:

pip install openai
步骤2:设置API密钥

然后,我们需要设置OpenAI的API密钥(你需要先去OpenAI官网注册一个账号,获取API密钥):

import openai

# 设置API密钥(注意:不要把API密钥直接写在代码里,最好用环境变量)
openai.api_key = "your-api-key-here"
步骤3:调用LLM生成文本

现在我们调用GPT-3.5-turbo,让它写一首关于春天的诗:

# 定义提示词
prompt = "请写一首关于春天的七言绝句,要求押韵,意境优美。"

# 调用OpenAI的ChatCompletion API
response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "system", "content": "你是一个才华横溢的诗人,擅长写古典诗词。"},
        {"role": "user", "content": prompt}
    ],
    temperature=0.7,  # 控制生成的随机性,0.0是最确定的,1.0是最随机的
    max_tokens=200    # 控制生成的最大长度
)

# 输出生成的文本
print("生成的诗:")
print(response.choices[0].message.content)

运行这段代码,你会得到一首关于春天的七言绝句,比如:

生成的诗:
春风送暖入屠苏,
柳绿桃红映碧湖。
燕子归来寻旧垒,
一年好景在今朝。
步骤4:展示LLM的局限

现在我们展示一下LLM的局限:比如它没法查实时天气。我们问它"北京今天的天气怎么样?":

# 定义提示词
prompt = "北京今天(2024年5月20日)的天气怎么样?"

# 调用OpenAI的ChatCompletion API
response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "system", "content": "你是一个天气助手,能回答关于天气的问题。"},
        {"role": "user", "content": prompt}
    ],
    temperature=0.0,
    max_tokens=200
)

# 输出生成的文本
print("LLM的回答:")
print(response.choices[0].message.content)

运行这段代码,你会得到类似这样的回答:

LLM的回答:
抱歉,我的知识截止到2023年10月,无法提供2024年5月20日的实时天气信息。你可以通过天气APP或网站查询最新的天气情况。

这就是LLM的局限:它没法查实时信息,因为它没有工具调用能力。

核心概念二:AI Agent的核心原理 & 具体操作步骤

AI Agent的核心原理:ReAct框架

前面我们说过,AI Agent的核心是"感知-推理-决策-行动-观察-反思"循环,而ReAct框架是实现这个循环的最常用方法之一。ReAct是"Reasoning(推理)"和"Acting(行动)"的结合,它让AI Agent在行动之前先推理,行动之后观察结果,再根据结果调整下一步行动。

ReAct框架的工作流程是:

  1. 思考(Thought):AI Agent根据用户的请求和当前的状态,思考下一步该做什么。
  2. 行动(Action):AI Agent决定调用哪个工具,并输入相应的参数。
  3. 观察(Observation):AI Agent观察工具的返回结果。
  4. 重复:回到步骤1,直到任务完成。

ReAct框架的提示词通常包含以下几个部分:

  • 系统提示(System Prompt):告诉AI Agent它的角色、目标、可用的工具。
  • 工具描述(Tool Descriptions):列出每个工具的名称、功能、输入输出格式。
  • 输出格式(Output Format):告诉AI Agent如何输出思考、行动、观察。
  • 少样本示例(Few-Shot Examples):给AI Agent几个示例,告诉它应该怎么做。
AI Agent的具体操作步骤:用LangChain构建一个能查天气的AI Agent

现在我们用LangChain(一个常用的AI Agent开发框架)构建一个能查天气的AI Agent,感受一下AI Agent和LLM的区别。

步骤1:安装必要的库

首先,我们需要安装LangChain、OpenAI、SerpAPI(一个搜索工具API,能查天气):

pip install langchain openai langchain-openai langchain-community google-search-results
步骤2:设置API密钥

然后,我们需要设置OpenAI和SerpAPI的API密钥(SerpAPI的API密钥可以去SerpAPI官网注册获取):

import os
from langchain_openai import ChatOpenAI
from langchain.agents import AgentType, initialize_agent, Tool
from langchain_community.utilities import SerpAPIWrapper

# 设置API密钥(最好用环境变量)
os.environ["OPENAI_API_KEY"] = "your-openai-api-key-here"
os.environ["SERPAPI_API_KEY"] = "your-serpapi-api-key-here"
步骤3:初始化LLM和工具

接下来,我们初始化LLM(GPT-3.5-turbo)和工具(SerpAPI搜索工具):

# 初始化LLM
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0.0)

# 初始化SerpAPI搜索工具
search = SerpAPIWrapper()

# 定义工具列表
tools = [
    Tool(
        name="Search",
        func=search.run,
        description="当你需要查询实时信息(比如天气、新闻、股票)或者不知道的知识时,可以使用这个工具。输入应该是一个搜索查询。"
    )
]
步骤4:初始化AI Agent

然后,我们用ReAct框架初始化AI Agent:

# 初始化AI Agent(使用ReAct框架)
agent = initialize_agent(
    tools,
    llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,  # 使用零样本ReAct框架
    verbose=True  # 输出详细的推理过程
)
步骤5:调用AI Agent查天气

现在我们调用AI Agent,问它"北京今天的天气怎么样?":

# 调用AI Agent
response = agent.run("北京今天(2024年5月20日)的天气怎么样?")

# 输出结果
print("\nAI Agent的最终回答:")
print(response)

运行这段代码,你会看到详细的推理过程,比如:

> Entering new AgentExecutor chain...
我需要查询北京今天的实时天气信息,因为我的知识截止到2023年10月,无法提供2024年5月20日的天气。我应该使用Search工具。
Action: Search
Action Input: 北京2024年5月20日天气
Observation: 北京2024年5月20日天气:晴,气温18℃-28℃,南风3-4级,空气质量优。
Thought: 我已经获取到了北京今天的天气信息,现在可以回答用户的问题了。
Final Answer: 北京今天(2024年5月20日)的天气是晴,气温18℃-28℃,南风3-4级,空气质量优。

> Finished chain.

AI Agent的最终回答:
北京今天(2024年5月20日)的天气是晴,气温18℃-28℃,南风3-4级,空气质量优。

你看,AI Agent能主动调用搜索工具查实时天气,这就是它和LLM的核心区别!

核心概念三:Harness Engineering的核心原理 & 具体操作步骤

Harness Engineering的核心原理:工程化构建可靠的AI Agent

前面我们说过,Harness Engineering是一套工程化构建AI Agent的方法论,它关注的是如何让AI Agent可靠、高效、安全地工作。现在我们讲解Harness Engineering的几个核心原理:

  1. 提示工程的系统化:提示工程不是"碰运气",而是有系统化的方法,比如思维链提示(Chain-of-Thought)、少样本提示(Few-Shot)、角色提示(Role Prompt)等。
  2. 工具的标准化封装:工具需要有明确的输入输出格式、错误处理机制、权限控制,不能随便调用。
  3. 记忆的结构化管理:记忆需要有明确的结构(比如短期记忆、长期记忆、语义记忆、情景记忆),能有效地存储和检索信息。
  4. 任务的分层规划:复杂任务需要拆分成小任务,小任务再拆分成更小的任务,形成一个分层的任务树。
  5. 错误的可恢复处理:AI Agent需要能识别错误、纠正错误、从错误中恢复,不能因为一个小错误就崩溃。
  6. 性能的持续优化:需要有明确的评估指标,收集用户反馈,持续优化AI Agent的性能。
  7. 安全的严格保障:需要有内容过滤、用户授权、行为监控、价值对齐等机制,确保AI Agent的行为符合人类的价值观。
Harness Engineering的具体操作步骤:优化刚才的AI Agent

现在我们用Harness Engineering的方法,优化刚才的AI Agent,让它更可靠、更高效、更安全。

步骤1:优化提示工程(添加思维链和少样本示例)

首先,我们优化提示工程,添加思维链提示和少样本示例,让AI Agent的推理更清晰:

from langchain.prompts import PromptTemplate

# 定义优化后的提示模板
prompt_template = """
你是一个专业的天气助手,能帮助用户查询天气信息。你必须严格按照以下步骤工作:

1. 思考:首先,你需要思考用户的问题是什么,是否需要调用工具。
2. 行动:如果需要调用工具,请使用Search工具,输入一个清晰的搜索查询。
3. 观察:仔细观察工具的返回结果,提取有用的信息。
4. 回答:根据观察结果,给用户一个清晰、准确、友好的回答。

你只能使用以下工具:
{tools}

使用工具的格式必须严格遵循以下要求:

Thought: 你对当前问题的思考
Action: 要调用的工具名称,只能是 [{tool_names}] 中的一个
Action Input: 工具的输入参数
Observation: 工具的返回结果

(这个思考/行动/观察的过程可以重复多次)

当你有了足够的信息回答用户的问题时,你必须使用以下格式:

Thought: 我现在有足够的信息回答用户的问题了
Final Answer: 你对用户的最终回答


现在开始!

---

下面是几个示例:
示例1:
用户:上海今天的天气怎么样?
Thought: 我需要查询上海今天的实时天气信息,应该使用Search工具。
Action: Search
Action Input: 上海今天天气
Observation: 上海今天天气:多云,气温20℃-26℃,东风2-3级,空气质量良。
Thought: 我现在有足够的信息回答用户的问题了
Final Answer: 上海今天的天气是多云,气温20℃-26℃,东风2-3级,空气质量良。

示例2:
用户:什么是人工智能?
Thought: 这是一个知识问答问题,我脑子里有足够的信息,不需要调用工具。
Final Answer: 人工智能(AI)是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。

---

现在处理用户的问题:
用户:{input}
{agent_scratchpad}
"""

# 创建提示模板
prompt = PromptTemplate.from_template(prompt_template)
步骤2:优化工具集成(添加错误处理)

接下来,我们优化工具集成,添加错误处理机制,当工具调用失败时,AI Agent能自动重试或者换一个方法:

# 定义一个带错误处理的搜索工具
def safe_search(query):
    try:
        return search.run(query)
    except Exception as e:
        return f"搜索工具调用失败,错误信息:{str(e)}。请尝试换一个搜索查询,或者稍后再试。"

# 更新工具列表
tools = [
    Tool(
        name="Search",
        func=safe_search,
        description="当你需要查询实时信息(比如天气、新闻、股票)或者不知道的知识时,可以使用这个工具。输入应该是一个清晰的搜索查询。如果工具
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐