通过亚马逊云科技Bedrock打造自定义AI智能体Agent(上)
大家对于智能体代理Agent一定已经非常熟悉,自主代理(Autonomous Agents) 目前在AI行业极其热门并具有巨大的潜力,能够显著提升开发者日常的工作效率、自动化日常琐碎、重复性任务,并生成全新的内容。Agent可以理解用户的请求,并通过后端集成的工具来满足用户们这些需求,而无需手动设置具体的执行步骤。
在本篇文章中,小李哥会带大家手把手了解如何使用Amazon Bedrock和其标准化Converse API轻松创建一个自定义AI智能体。下面我将通过利用Streamlit框架开发的应用,在浏览器中与后端代理进行交互分析自媒体文章里的情感倾向。我为代理配备了一个网页检索服务用于获取网页内容和总结网页信息,最后将以上信息总结分析社交媒体帖子的情感倾向。除了本文介绍的场景外,智能体也可以应用于来许多实用的应用场景。
解决方案概览
本次介绍的云端解决方案由几个关键组件组成,我们将通过这些组件搭建代理,关键组件如下:
- agent.py - 运行代理的核心逻辑
- tools.py - 定义代理可使用的工具
- utils.py - 代理辅助函数
- streamlit_app.py - 与代理交互的前端UI
方案架构图如下:
AI智能体核心运行逻辑解析
我们方案中的agent.py文件包含代理运行的核心逻辑,下面是工作流程图和逐步解析:
1. 用户输入一条消息,该消息会按照Converse API的格式转换为为用户消息(User Message)。
2. 格式化后的用户消息被添加到消息列表(Message List)中。
3. 代理通过Converse API调用Bedrock上的大语言模型(LLM),并传递第二步中包括用户输入的消息列表,以及代理可用的工具类型。
4. Bedrock上的大语言模型会返回助手消息(Assistant Message),其中可能包含文本、工具调用记录以及会话停止标识(stopReason)。
6.代理检查stopReason,它可能是:
tool_use:表示LLM已决定调用某个工具;
end_turn:表示LLM已完成工具调用,并结束当前的用户交互会话;
7. 如果stopReason是tool_use,则会话未结束,代理接下来会继续调用其集成的工具完成任务。
8. 继续执行被调用的工具后返回调用结果(toolResult)。
9. toolResult被封装为用户消息,并追加到消息列表末尾。
10. 代理再次开启新一轮调用Converse API,并重复执行步骤4至9,直到接收到stopReason的值为end_turn。
11. 当stopReason为end_turn时,裁表示该代理需要执行的全部任务已完成,代理的任务周期结束。
12. 最终代理调用AI模型的的响应会作为回复在用户界面返回给用户。用户此时可以继续输入新的消息,该流程将从步骤1重新开始。
使用场景测试展示
下图展示了该Agent在Streamlit框架开发的前端UI界面中的使用案例。我们输入提示词,请求代理对提供的链接进行总结。我们Agent中使用AI模型会自动决策需要使用后端集成工具,并首先调用 RetrieveUrlTool工具来获取网页内容。在该工具检索网页内容后,代理使用html2text工具预处理了提取内容,最后将网页转换为Markdown格式,作为toolResult结果返回给代理。代理处理了 toolResult结果生成最终响应返回给用户,UI中展示响应则为包含网页内容的总结摘要。
以上就是亚马逊云科技上通过自定义智能体抓取网页结果、进行格式转换,并在streamlit框架的用户界面中展示网页提取内容的全部内容,在本系列的下篇中,小李哥将分享构建该自定义智能体的全部代码和实操步骤。欢迎大家关注小李哥和本系列的下篇,不要错过未来更多国际前沿的AWS云开发/云架构方案。