返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

OpenManus源码小读第二弹

[复制链接]
链载Ai 显示全部楼层 发表于 2 小时前 |阅读模式 打印 上一主题 下一主题

背景

上一篇文章解析了main.py作为入口的流程, 这次我们看run_flow.py的部分, 我们这次换一个提示词,
计算斐波那契数列的第五位,并记录结果到文件中

调试

运行

结果是不停的输出这样的异常的
我们暂时先不管这个异常结果,而是关注里面的流程
这个我们在上一讲看过类似的提示词了,我们主要关心这里 ,

messages和tools

messages也就是提示词如下:
调用的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
当前memory是什么样呢
当完成所有步骤后,会进入到

最后让llm总结下过程,然后输出

小bug

其实这里有个小bug
这个是因为在step1中,虽然提示词写明了要按步骤执行,但在agent在执行斐波那契的计算后,仍旧添加了保存到文件的另一个function call

尝试修复

我试着在提示词里制止llm在执行当前step时执行后续的步骤。
结果还是一样。。依旧重复,不过这些东西都有望随着llm的强大而解决,不应该因为这些小问题停止对目前新技术的学习。

后续

看看最近比较火的MCP

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ