背景
上一篇文章解析了main.py作为入口的流程, 这次我们看run_flow.py的部分, 我们这次换一个提示词,调试
运行
这个我们在上一讲看过类似的提示词了,我们主要关心这里 ,messages和tools
调用的tool如下,这里展示一个格式化后的tools描述[ { "type": "function", "function": { "name": "planning", "description": "规划工具,用于创建和管理复杂任务的解决方案计划。\n提供创建计划、更新步骤和跟踪进度等功能。", "parameters": { "type": "object", "properties": { "command": { "type": "string", "description": "执行的命令,可选值:create(创建计划)、update(更新计划)、list(列出计划)、get(获取详情)、set_active(设置激活计划)、mark_step(标记步骤状态)、delete(删除计划)", "enum": ["create", "update", "list", "get", "set_active", "mark_step", "delete"] }, "plan_id": { "type": "string", "description": "计划唯一标识符。create/update/set_active/delete命令必填,get/mark_step命令可不填(默认使用当前激活计划)" }, "title": { "type": "string", "description": "计划标题。create命令必填,update命令可选" }, "steps": { "type": "array", "description": "计划步骤列表。create命令必填,update命令可选", "items": { "type": "object", "properties": { "step_description": {"type": "string"}, "expected_result": {"type": "string"} } } }, "step_index": { "type": "integer", "description": "步骤序号(从0开始)。mark_step命令必填" }, "step_status": { "type": "string", "description": "步骤状态。用于mark_step命令", "enum": ["not_started", "in_progress", "completed", "failed"] }, "step_notes": { "type": "string", "description": "步骤备注。mark_step命令可选" } }, "required": ["command"], "additionalProperties": False } } }]可以看到大模型的输出恰好是之前是那些tools的提示词创建计划,然后一步一步执行
mark_step的作用是先更新下step对应的状态新的提示词
里面表达了,当前计划一共需要多少步,执行到了第几步接着就回到第一讲中的agent执行的部分了
def fibonacci(n): if n <= 0: return 0 elif n == 1: return 1 else: return fibonacci(n-1) + fibonacci(n-2)
fib_5 = fibonacci(5)print(fib_5)
之前python_execute报错是因为exec(code, safe_globals,{})的写法有误,当递归调用时,函数名会在safe_globals的命名空间中寻找,改成这样就行(社区最新版已经修复了这个问题了)第一个step完成后,memory的prompt继续append,这一条是file_save最后让llm总结下过程,然后输出
小bug
这个是因为在step1中,虽然提示词写明了要按步骤执行,但在agent在执行斐波那契的计算后,仍旧添加了保存到文件的另一个function call尝试修复
我试着在提示词里制止llm在执行当前step时执行后续的步骤。结果还是一样。。依旧重复,不过这些东西都有望随着llm的强大而解决,不应该因为这些小问题停止对目前新技术的学习。后续
立即咨询 JOTO
JOTO 提供覆盖企业智能体规划与搭建、AI 平台私有化部署、RAG 知识工程、AI 安全治理、FDE 驻场共创及持续运营优化的全周期 AI 落地服务,帮助企业把验证中的 AI 能力转化为安全、可控、可持续迭代的生产力。 联系 JOTO 获取 AI 落地咨询