2大语言模型LLM
在Agent系统中,把大模型看成大脑即可,和人脑之于人的定位,完全一样。
它负责理解用户目标,进行推理和任务规划,并输出下一步需要做什么。比如调用某个工具、继续获取信息,又或者是整理材料输出答案等。当然,大脑只负责思考和输出,这些其他外部操作,都是由模型之外的Agent Runtime和Harness来完成的(之后文章会详细介绍)。
Agent系统中的大模型=聊天机器人中的大模型,两者完全一样,区别只在于使用方式不同。
后者主要是跟用户交互,输出相对比较随意;前者很多输出,还需要继续交给程序处理:调用哪个工具?传哪些参数等?所以会约束要求输出格式。
比如用户输入:帮我查一下北京明天的天气。
聊天机器人的大模型:明天北京预计晴到多云,最高气温约18℃,最低气温约7℃,出门建议带件外套。
也就是说,两者用的模型完全一样,但在Agent场景中,模型中间输出需要程序可读、可执行,所以格式更规范。
如何让模型输出更规范呢?主要就是系统提示词不同!
还是刚才的例子,在聊天机器人中,系统提示词是:你是一个智能助手,请回答用户的问题。
最终给到大模型的输入是:系统提示词+用户提示词,即你是一个智能助手,请回答用户的问题。帮我查一下北京明天的天气。
但在Agent中,系统提示词会改成:
你是一个 Agent。
当用户需要查询天气时,不要直接回答,而是输出需要调用的工具和参数。
必须严格按照下面的JSON格式输出:
于是,同一个模型,在Agent中就会输出上述中间结果,程序能读懂,继续下一步操作:调用天气查询工具。
没错,就是这么简单粗暴,模型没变,变的只是提示词,通过提示词去规范模型的输出格式。