从LLM到OpenManus
· 4 min read
初心
随着DeepSeek的爆火,当看到大量LLM API出现之后,自己也萌生了接触prompt engineering,开发LLM应用的想法,虽然国内调用gemini很麻烦,但是还是有几个大厂的ds api看上去还是廉价可口, 于是想找几个LLM应用学习一下,并且搞明白几个问题:
- LLM如何保证可靠性
- 提示词的使用技巧
- 如何减少上下文占用的token
- LLM如何调用其他工具
学习OpenManus
Agent
负责决策和执行任务,是系统的智能核心
- base.py:定义了BaseAgent基类,包括状态管理、内存管理和执行循环
- run():执行循环,调用step()执行步骤,调用is_stuck()排查是否陷入重复循环。
- update_memory():存储上下文,图 片和消息
- state_context():状态管理
- react.py:实现了ReAct模式的智能体,基于推理-行动循环模式
- 定义了step()的实现:先思考再执行,然后把具体的think()和act()交给子类
- toolcall.py:实现了工具调用智能体,负责管理和执行各种工具
- 实现了think()和act()
- browser.py:实现了浏览器相关的代理功能,用于网页交互
- 重写了think(),在调用父类think之前,填充上下文和提示词
- manus.py:实现了Manus主智能体
- mcp.py:实现了MCP(Manus Control Protocol)智能体,MCP是一个和LLM交互的协议,有待深入了解
- swe.py:实现了软件工程(SWE)相关的智能体,在toolcall的基础上配备了与操作系统交互,与代码交互的工具