添加规划器#
规划器负责接收提示词、选择工具并处理工具结果。接入自定义规划器时,实现 Planner.solve,然后将其加入构建入口和 CLI 选项。
以下为接口示意,省略了模型请求和工具循环,不能直接作为实现运行。完整示例可参考 rpent/planner/api_loop.py。
# rpent/planner/my_planner.py
from rpent.planner.base import PlannerResult
class MyPlanner:
def solve(
self,
*,
system_prompt,
user_message,
toolkit,
max_turns,
input_queue=None,
dashboard_interaction=None,
):
tool_specs = toolkit.get_tools_spec()
# 使用 system_prompt、user_message 和 tool_specs 调用模型。
# 每次工具调用都通过下面的接口执行:
tool_result = toolkit.execute_tool(tool_name, arguments)
...
return PlannerResult(
finish_result=finish_result,
messages=messages,
stats=stats,
error=error,
)
任何 planner 必须:
接收已经渲染好的
system_prompt和user_message。从
toolkit.get_tools_spec()取得工具定义,并通过toolkit.execute_tool(name, arguments)执行工具。将
ToolResult.content_blocks中的文本和图片转换成模型 SDK 所需的格式。识别
ToolResult.is_finish,并按max_turns等限制终止循环。返回包含结束状态、消息、统计信息和可选错误的
PlannerResult。
由于 RPent 工具定义和 prompt 渲染流程保持不变,新增 planner 不需要修改工具或环境服务。接口参见 系统架构与执行流程;想给 自定义 planner 暴露新工具,见 添加动作原语。
接入与验证#
在 rpent/planner/base.py 的 build_planner 中添加构建分支,并在 rpent/cli/main.py 的 --planner 选项中加入名称。需要 Dashboard 或连接诊断时,还应接入对应的规划器选择与 rpent/planner/check.py,不能仅添加一个类。
验证工具调用、文本和图像返回、finish、轮数上限、错误结果,以及需要支持的中断和交互路径。复用 tests/unit_tests/rpent/planner/ 中的测试模式;真实模型连接需要单独验证。