继续紧接着 AI浏览器自动化实战 的内容进行探讨。
本文主要介绍一下工作流程。
现在,任务已经完成,让我带领大家来分析一下 Browser use 在后台执行的工作流程情况。
具体来说,就是分析其后台打印的日志内容。
在运行过程中,AI 将一个大型任务拆分成了多个细化步骤,下面我截取了几张图片供大家参考。
从日志截图中可以清晰看到标记了 📍 Step 1,📍 Step 2,📍 Step 3 等步骤。
通过对这些日志的分析,我发现每一步开始前,系统都会先评估上一步的执行结果(如日志中所显示的:✅ Eval: Success - Successfully navigated to Google's homepage as intended. 翻译过来就是 ✅ 评估:成功 - 按预期成功导航到 Google 主页。)。
确认上一步执行成功后,系统会思考当前步骤需要完成的任务。
这体现在日志中的 🤔 Thought 部分:
思考完成后,AI 会确定本次的目标并将其拆分为具体动作,例如日志中的第一个动作 🛠️ Action 1/2:
这个动作是输入 "程序员NEO"。
接着是第二个动作 🛠️ Action 2/2 "click_element" 点击搜索按钮:
这样一个完整步骤就结束了,然后系统会进入下一步,循环这个过程直到完成整个任务。
通过观察日志,我发现这些信息来自 src.agent.custom_agent 这个文件。
于是我在项目中找到了这个文件,并查看了 step 的核心代码。从代码中可以看出,步骤执行首先要调用 await self._run_planner()
(规划器)
这部分是规划器的提示词。进入到 _run_planner 方法中,注意到 PlannerPrompt(self.controller.registry.get_prompt_description()).get_system_message() 这个方法用于获取提示词。
英文版:
You are a planning agent that helps break down tasks into smaller steps and reason about the current state.
Your role is to:
1. Analyze the current state and history
2. Evaluate progress towards the ultimate goal
3. Identify potential challenges or roadblocks
4. Suggest the next high-level steps to take
Inside your messages, there will be AI messages from different agents with different formats.
Your output format should be always a JSON object with the following fields:
{
"state_analysis": "Brief analysis of the current state and what has been done so far",
"progress_evaluation": "Evaluation of progress towards the ultimate goal (as percentage and description)",
"challenges": "List any potential challenges or roadblocks",
"next_steps": "List 2-3 concrete next steps to take",
"reasoning": "Explain your reasoning for the suggested next steps"
}
Ignore the other AI messages output structures.
Keep your responses concise and focused on actionable insights.
中文版:
你是一位规划代理,负责将任务分解成更小的步骤,并推理当前状态。
你的职责是:
1. 分析当前状态和历史
2. 评估实现最终目标的进度
3. 识别潜在的挑战或障碍
4. 建议下一步的总体步骤
你的消息中会包含来自不同代理、格式各异的 AI 消息。
你的输出格式应始终为 JSON 对象,并包含以下字段:
{
"state_analysis": "对当前状态及迄今为止已完成工作的简要分析",
"progress_evaluation": "对实现最终目标的进度评估(以百分比和描述形式)",
"challenges": "列出任何潜在的挑战或障碍",
"next_steps": "列出 2-3 个具体的后续步骤",
"reasoning": "解释你建议的后续步骤的理由"
}
请忽略其他 AI 消息的输出结构。
请保持你的回复简洁明了,并专注于可操作的见解。
我已将提示词分享出来,大家也可以借鉴学习。
回到主题,执行完规划器后,系统会使用 get_next_action 将本次计划拆分成具体的动作:
然后获取模型的输出:
接着将动作传递给具体的执行器并执行,最后获取动作的结果:
这样,一个完整的步骤(step)就完成了。通过代码分析,我发现系统使用了 for 循环,不断调用 step 过程,直到整个任务完成。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。