本文为《React Agent:从零开始构建 AI 智能体》专栏系列文章。 专栏地址:https://blog.csdn.net/suiyingy/category_12933485.html。项目地址:https://gitee.com/fgai/react-agent(含完整代码示例与实战源)。完整介绍:https://blog.csdn.net/suiyingy/article/details/146983582。
1 多轮对话
多轮对话场景需要在智能体与用户的多轮交互过程中,对对话的状态进行跟踪、维护和管理,以确保对话的连贯性和有效性。对话状态包括用户的意图、当前对话的上下文、已获取的信息、任务的进展情况等。
例如,在一个查询天气的多轮对话中,用户可能首先询问“北京明天的天气如何”,智能体回答后,用户接着问“那后天呢”,此时对话状态需要记录用户当前查询的地点是北京,以及之前已经查询了明天的天气,现在需要查询后天的天气,以便智能体能够准确理解用户的后续提问并提供相应的回答。
对话状态可以用多种方式表示。基于框架的表示将对话状态表示为一个框架,其中包含多个槽位(Slot),每个槽位对应一个特定的信息,如用户的意图、地点、时间、数量等。槽位的值可以是用户明确提供的信息,也可以是智能体通过推理或查询获取的信息。例如,在订票对话中,框架可能包含出发地、目的地、出发时间、座位类型等槽位,每个槽位的值随着对话的进行逐步填充。
更通用的方式是使用基于上下文的方式来维护对话的状态,实现方式与上述记忆内容部分基本一致。对话的历史内容作为上下文通过大模型的上下文理解能力来维护对话状态。大模型可以根据之前记忆的对话历史,自动推断当前对话的状态,而不需要显式地维护槽位信息。这种方法适用于对话流程相对灵活、槽位数量不固定的场景。
以下是一个天气查询多轮对话执行过程的示例,涵盖了用户询问天气、获取信息后进一步询问以及系统的相应处理和回复。在这个多轮对话执行过程中,系统首先根据用户的初始天气查询请求返回基本天气信息,然后根据用户进一步的提问提供更详细的相关信息,最后在用户表示结束查询时礼貌回应。
第一轮对话:用户发起天气查询请求
用户:“你好,我想查询一下北京明天的天气。”
系统:“好的,为你查询北京明天的天气。北京明天的天气是多云,气温在 15℃到 25℃之间,微风。请问你还需要了解关于北京明天天气的其他信息吗?比如紫外线强度或者穿衣建议。”
第二轮对话:用户进一步询问穿衣建议
用户:“那你能给我一些明天在北京的穿衣建议吗?”
系统:“根据明天北京 15℃到 25℃的气温,白天温度适中,你可以穿一件薄长袖衬衫或者短袖搭配一件薄外套,比如牛仔外套或者薄开衫。晚上温度稍低,建议加一件厚一点的长袖上衣。希望这些建议能帮助到你。还需要我提供其他相关天气信息吗?”
第三轮对话:用户询问紫外线强度
用户:“好的,那北京明天的紫外线强度怎么样呢?”
系统:“北京明天的紫外线强度为中等水平,外出时可以适当涂抹防晒霜,佩戴太阳镜和遮阳帽,以保护皮肤和眼睛。请问关于北京明天的天气,还有什么想了解的吗?”
第四轮对话:用户结束查询
用户:“没有了,谢谢你的回答。”
系统:“不客气!如果之后你还需要查询其他城市或时间的天气,随时找我就行。祝你生活愉快!”
2 工具(Tools)
在大模型智能体中,工具是指智能体可以调用的外部资源和功能模块,用于扩展智能体的能力,使其能够完成自身无法直接实现的任务。它可以是各种 API 接口、数据库、计算工具、文件处理工具等。它在“感知 - 决策 - 执行”流程中的执行阶段完成特定任务。
工具的作用主要包括获取外部信息、执行特定任务以及与外部系统交互三个方面。具体而言,智能体可通过调用天气 API、新闻 API、知识库 API等工具获取实时且最新的外部信息,为用户提供准确查询结果,例如查天气智能体调用天气 API 获取天气数据;对于数据分析、图像识别、语音合成等需要专业处理或复杂计算的特定任务,智能体能够调用相应工具完成,像数据分析智能体调用数据分析工具进行数据统计、分析和可视化;同时,它还能助力智能体与其他外部系统交互,比如调用企业内部业务系统接口来完成订单处理、客户管理等任务。
常用工具类型包括:
(1)检索工具:检索工具是智能体获取信息的重要途径,它能够在海量数据资源中快速定位到所需内容。这类工具通过构建索引、优化搜索算法等方式,极大地提高了信息检索的效率与准确性。以搜索引擎为例,其通过爬虫程序抓取网页内容,建立索引数据库,当用户输入查询关键词时,搜索引擎能够迅速从索引中匹配相关网页,并按照相关性、权威性等因素进行排序,将最符合用户需求的结果呈现出来。在智能体应用中,检索工具可以帮助其快速获取各类知识、用户历史记录等信息,从而为后续的分析与决策提供有力支撑,无论是解答用户提问,还是处理复杂任务,检索工具都发挥着不可或缺的作用。很多大模型网页直接提供搜索工具。除以上原因之外,大模型基于历史数据进行训练,缺乏对当前信息的掌握,搜索工具可以弥补这方面的不足。
图1 搜索工具
(2)查询工具:用于查询各类信息,如天气、新闻、百科知识、地图导航等。查询工具借助各类专业的 API 接口,打破了信息获取的壁垒,实现了信息的实时性与准确性。例如,OpenWeatherMap API 凭借其覆盖全球的气象监测网络和高效的数据处理能力,能够为智能体提供精确到分钟级的天气数据,包括温度、湿度、风速等,满足用户对出行、旅游等场景下的天气查询需求。地图 API 则整合了庞大的地理信息数据,不仅可以帮助智能体获取地理位置信息,还能提供智能导航、实时路况等功能,为用户规划最优出行路线。这些查询工具让智能体如同拥有了一个庞大的信息宝库,能够快速响应用户多样化的查询需求,极大地提升了用户体验。
图 2 查询工具
(3)数据分析工具:包括数据处理库(如 Python 的 Pandas、Numpy)、数据分析框架(如 Spark)、数据可视化工具(如 Matplotlib、Tableau)等。在数据驱动的时代,数据分析工具是挖掘数据价值的关键利器。Python 的 Pandas 库提供了高效的数据结构和数据操作函数,能够轻松处理复杂的结构化数据,进行数据清洗、转换和聚合等操作;Numpy 则专注于数值计算,为科学计算和数据分析提供了强大的支持。Spark 作为分布式计算框架,能够在集群环境下快速处理海量数据,实现数据的并行分析与计算。而 Matplotlib 和 Tableau 等数据可视化工具,则将复杂的数据以直观的图表、图形形式展示出来,帮助用户快速理解数据特征和趋势。这些工具相互配合,使得智能体能够对数据进行全方位的处理和分析,从数据中提取有价值的信息,为决策提供科学依据,广泛应用于商业分析、市场调研、科学研究等众多领域。
图3 数据分析工具
(4)文件处理工具:用于处理各种文件格式,如读取和写入文本文件、Excel 文件、PDF 文件等,以及对文件进行转换、压缩、加密等操作。在数字化办公和信息管理中,文件处理工具是不可或缺的一环。它能够适应不同文件格式的特点,实现文件内容的高效读取与写入。例如,对于文本文件,文件处理工具可以快速读取其中的文字信息,并进行编辑、搜索等操作;对于 Excel 文件,能够处理复杂的表格数据,进行数据计算、筛选等。在文件转换方面,工具可以将 PDF 文件转换为 Word 文档,方便用户进行内容修改;通过压缩工具,可以减小文件体积,节省存储空间和传输带宽;加密功能则能保护文件内容的安全性,防止敏感信息泄露。这些功能使得文件处理工具在企业文档管理、个人资料存储等场景中发挥着重要作用,保障了文件处理的便捷性、高效性和安全性。
图4 文件处理工具
(5)机器学习工具:包括机器学习框架(如 TensorFlow、PyTorch)、模型训练工具、模型评估工具等。机器学习工具是智能体实现智能化的核心组件,它赋予了智能体学习和预测的能力。TensorFlow 和 PyTorch 作为主流的机器学习框架,提供了丰富的神经网络模型构建和训练接口,降低了机器学习开发的门槛,开发者可以利用这些框架快速搭建复杂的机器学习模型。模型训练工具则负责对模型进行优化,通过调整模型参数,使模型能够更好地拟合数据,提高模型的预测准确性。模型评估工具通过各种指标对训练好的模型进行性能评估,如准确率、召回率、F1 值等,帮助开发者了解模型的优缺点,从而进行改进和优化。借助这些机器学习工具,智能体能够不断学习新知识、提升自身能力,在图像识别、自然语言处理、智能推荐等领域发挥重要作用,推动人工智能技术的广泛应用和发展。
(6)通信工具:用于与其他智能体、系统或用户进行通信,如发送电子邮件、短信、即时消息等。通信工具构建起了智能体与外界交互的桥梁,打破了信息传递的时空限制。在企业办公场景中,电子邮件工具可以让智能体与员工、合作伙伴进行正式的信息沟通,传递文件、报告等重要资料;短信工具则适用于快速通知用户重要信息,如订单状态变更、账户安全提醒等。即时消息工具如微信、钉钉等,支持实时的文字、语音、视频交流,方便智能体与用户进行高效沟通,及时解答用户疑问,提供个性化服务。此外,通信工具还能实现智能体之间的协作,通过信息共享和交互,共同完成复杂任务。这些通信工具使得智能体能够紧密融入各种业务场景和用户生活,提升信息传递的效率和服务质量。
智能体需根据任务需求和目标选择合适工具,分析任务类型、输入输出格式、工具可用性及可靠性等因素;随后根据工具要求准备输入参数,参数可能来自用户输入、记忆信息或智能体内部状态,例如调用天气 API 时需准备城市名称、查询时间等;接着通过 API 接口或函数调用等方式向工具发送请求、传递参数并等待响应;最后接收工具返回的结果,对其进行解析处理,转换为智能体可用格式,按需更新对话状态或记忆信息,如调用天气 API 返回数据后,将其整理成用户易理解的形式再生成回答返回给用户。
下一节将详细解析工具调用代码。
立即关注获取最新动态
点击订阅《React Agent 开发专栏》,每周获取智能体开发深度教程。项目代码持续更新至React Agent 开源仓库,欢迎 Star 获取实时更新通知!FGAI 人工智能平台:FGAI 人工智能平台 https://www.botaigc.cn/