微信扫码
添加专属顾问
我要投稿
深入解析大模型应用模式差异,从智能问答到Agent,揭示LLM的神秘面纱。核心内容:1. 大模型应用模式的误解与困惑2. 输入提示词与输出成果的差异对比3. 多轮对话中上下文输入的重要性
▲关注公众号,可查看更多精彩内容
针对当下大模型比较成熟的几种应用模式,包括智能问答、RAG、Agent、Agent+MCP等等,大家理解时容易陷入两种极端:
当你刚开始入门时,看到这些概念一定很混淆,往往把大模型LLM想的很神奇,感觉它什么都能干,什么业务场景都能用。
当你通过cherrystudio或dify等工具,按照网上一些教程来实现过一些场景时,往往又会感觉很僵硬,只会照着做,并没有理解大模型LLM的本质。
本文以容易理解的信息化视角,将LLM视作一个黑盒的文字系统,通过比较输入提示词+输出成果在几种LLM应用模式下的不同,来分析这些应用模式的差异,本质上也是对使用LLM的过程做一个“祛魅”。
个人觉得哪怕我们对LLM内部的encode、decode、transformer、attention、MoE等概念和架构一知半解、似懂非懂,也不妨碍我们从使用角度去理解不同场景下LLM的应用模式。
基础问答提示词(系统指令+用户输入)
一些最基础的问答场景中,你会要求LLM模仿某种角色来回答用户的提问,或者要求LLM根据用户的输入来生成相应的内容,同时要求遵守某种结构进行生成答案,并做一些限制(比如不能随意发挥)等。
以上这些要求,其实就对应LLM的系统提示词,在Dify中配置界面大致如下:
上图system系统提示词就对应高阶指令,它是用来告诉LLM要如何响应用户诉求,要输出何种格式等等,是由LLM应用开发者预先设置好的,所以它被称之为system系统级指令,而user提示词对应是用户实际输入信息。其底层实现逻辑可以这样理解:
以适配OpenAI的接口规范为例,在这种最基础场景下,具体访问LLM的输入参数结构是:
可以看到输入该服务的messages包括两部分组成,一个是开发者提前设置好的role:system指令内容,一个是用户实际输入问题role:user内容。
既然通过信息化视角来理解,那有输入就必然有输出,进一步看看LLM服务的输出格式:
在choices/message结构内部,role:assistant这个节点的作用,是用来标记大模型输出信息(为啥要这么标记下,后面会讲),然后才是具体LLM生成内容的content节点。
多轮对话提示词(增加上下文的输入)
以上是最基础的一次对话过程,如果你还要反复进行追问,也就是要实现多轮对话,其底层实现逻辑是这样:
如图,核心就是要把上一轮对话结果也作为提示词的一部分再次输入给LLM,具体输入参数结构是:
RAG方式提示词(增加知识的输入)
在以上利用LLM进行对话的基础上,当你发现LLM缺少最新知识、或者缺乏某个行业领域内部知识时,通常就需要采用RAG方案了(RAG含义是知识检索增强),也就是要通过检索外挂知识库来增强LLM的生成能力,其底层实现逻辑是:
其核心就是要把知识检索到的内容,也作为提示词的一部分输入给LLM,对应输入参数结构是:
Tips:并不是所有需要用到知识的地方,都要使用向量化外挂知识库去做分片向量存储和语义相似度检索的,也并不是LLM对向量知识库有什么特殊依赖,这些组合方案都只是一种工程化范式而已。
比如一些简单场景要用到固定的几条知识,完全可以不用分片,不向量化,不用检索,每次调用LLM时,都自动附加到role:user中,输入给LLM就可以了。
调用工具提示词(早期function方式)
在以上RAG的基础上,如果你还需要在AI Agent中进一步调用工具,比如要调用工具查询数据库,比如要根据用户意图,调用查询天气、订票的工具等,其底层实现逻辑是:
其核心就是要把可以提供的工具描述信息,也作为提示词的一部分输入给LLM,对应输入参数结构是:
对应图中增加了一个functions输入节点,来输入工具或函数的描述信息,包括函数名称、和对应入参信息,注意这里functions节点是个数组,意味着可以输入多个可用的工具描述信息,供LLM选择和判断。
和前面几个小节略有不同的是,之前system、user、assistant等role的输入,都是在messages这个节点里面,而这里funtions节点则是和messages节点同级并列。
对于这种有工具描述的输入,LLM会根据用户的问题,自行判断是否需要调用工具,以及要调用哪个合适的工具,最终在LLM的输出信息中反馈要调用的工具,其对应输出结构是:
和前面基础对话场景中LLM的输出结构做个对比,可以看到对应的role还是assistant,但content为null,额外增加了funtion_call的节点。
你的AI Agent中通过解析LLM反馈信息中funtion_call节点,就可以得到要调用的函数名和要用到的参数值,再去执行这个函数即可。
后来改成tools方式
以上是LLM早期的function call机制,自从24年底Anthropic推出MCP协议以后,各厂商最新推出的LLM,经过强化训练后,也都支持标准的工具调用模式,其底层实现逻辑和上节funcnion call机制基本类似,但具体输入参数结构有所调整:
输入结构看起来变化不大,就是把functions节点换成了tools节点,同样也是一个数组。但LLM的输出结构就变化比较大了:
和前面提到的多轮对话场景的输入有点类似,也是通过在role:assistant节点将上一轮LLM的输出结果反馈给LLM,同时通过role:tool节点,将工具实际调用结果信息,再反馈给LLM。
当然实际使用MCP框架时,输入给LLM的tools数组不用手动组织了,都是框架会自动从mcp server中拉取工具描述信息,包括调用工具的环节,也是在mcp client的sdk中封装好了。
延伸阅读:在以上工具调用场景中,有一些比较极端复杂的场景,假如要输入给LLM可用工具数量很多,意味着要输入很多的描述信息列表,你会发现提示词会变得很长,如果再结合ReAct机制多轮次调用,那就很难避免提示词膨胀(prompt bloat),这会导致LLM大量消耗tokens,同时降低LLM处理速度,而且会造成LLM注意力不集中,很可能给出错误的tool选择。
这里推荐一篇文章《RAG-MCP:突破大模型工具调用瓶颈,告别Prompt膨胀》,它是通过将工具描述信息放到知识库中,每次按需检索要用的工具信息再输入给LLM,这样可以有效规避这个问题。
本系列说明:笔者在以往案例基础上结合实际项目经验,从落地AI的视角出发,按照LM、RAG、Agent、Training这样的顺序梳理一套基础技术体系,对应投入和落地难度从小到大,欢迎读者持续关注完整合集《AI基础》。
—End—
如果您觉得这篇文章对您有帮助欢迎转发和分享,也恳请您关注以下公众号,里面有更多精彩思考和总结
注:原创不易,合作请在公众号后台留言,未经许可,不得随意修改及盗用原文。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-05-31
AI智能体常用五大范式:反思、工具、推理、规划与多智能体协作
2025-05-31
MCP、A2A 后,AI 领域又新增 AG-UI 协议
2025-05-31
Cursor 0.51.1: 小版本,大更新!
2025-05-31
一文搞懂大模型知识增强:知识注入(Prompt + Finetune + RAG)
2025-05-31
深度长文|重磅揭秘!AI大脑“想得越少越聪明”:一场颠覆认知的效率革命
2025-05-31
AI 平权时代:当技术温度触达每一个 "少数群体" —— 人工智能包容性设计实践
2025-05-31
从元器到扣子,中国AI智能体的真较量
2025-05-31
谷歌搜索“AI模式”来了,Perplexity慌不慌?
2024-08-13
2024-06-13
2024-08-21
2024-07-31
2024-09-23
2024-05-28
2024-08-04
2024-04-26
2024-07-09
2024-07-20