pub struct ToolUseConfig {
pub system_prompt: Option<String>,
pub max_iterations: usize,
pub max_output_tokens: u32,
pub max_total_output_tokens: Option<u32>,
pub max_total_reasoning_tokens: Option<u32>,
pub context_budget: ContextBudget,
pub request_options: RequestOptions,
pub stream_thinking: bool,
pub retry_policy: RetryPolicy,
}Expand description
ToolUseLoop 纯参数配置。
Clone+Send+Sync— 可安全跨线程共享- 仅包含数据字段,不含行为逻辑
- 未来可扩展为
Serialize/Deserialize
Fields§
§system_prompt: Option<String>系统提示(运行时注入,不修改 messages)
max_iterations: usize最大迭代轮次(默认 10)
max_output_tokens: u32每次 LLM 请求的最大输出 token 数(默认 4k)
控制单次 Provider 调用的响应长度上限,防止模型输出过长。
工具调用轮次通常只需几百 token,但模型 thinking 会消耗额外空间,
4k 在“够用“和“不浪费“之间取得平衡。
若需要长文本生成,可通过 Builder 调大。
会自动注入到 ChatRequest.max_tokens。
max_total_output_tokens: Option<u32>整个 Agent Run 的最大输出 token 总数(可选,默认无限制)。
即使每轮的 max_output_tokens 设置合理,多轮工具调用仍可能导致
总输出巨大(如 10 轮 × 4k = 40k)。此字段提供聚合层面的保险丝,
防止因工具循环或 Provider 忽略 max_tokens 而导致的成本失控。
统计范围:Assistant Text(不含 Thinking,不含 Tool Call 结构开销)。 在流式模式下边接收边检查,达到阈值立即停止。
max_total_reasoning_tokens: Option<u32>整个 Agent Run 的最大推理 token 总数(可选,默认无限制)。
与 max_total_output_tokens 分离:thinking 是模型内部推理,不计入输出预算。
双层设计:
- 单轮:
RequestOptions.max_reasoning_tokens→ 透传给 Provider - 总计:
max_total_reasoning_tokens→ Agent 层累计检查
context_budget: ContextBudget上下文预算管理(默认开启)
v0.1: 默认 ContextBudget::default()(max_tokens = 128,000)
v0.2: 从 ResolvedModel.context_window 自动推导(window * 0.8)
若要关闭限制,设置 max_tokens = usize::MAX。
request_options: RequestOptions每轮 LLM 调用的生成参数覆盖。
独立字段定义,不与 ChatRequest 耦合。
apply() 方法将非默认值(temperature、top_p、reasoning 等)
覆盖到 Agent 层构建的基础 ChatRequest 上。
model、messages、tools 由 Agent 层注入,不会被覆盖。
stream_thinking: bool是否向消费者流式输出推理过程(ThinkingDelta 事件)。
false(默认)= 模型可推理,但不向消费者发射 ThinkingDelta 事件
true = 将推理内容以 ThinkingDelta 事件流式输出
重要: 此字段控制框架行为(Event 管道),不属于协议参数。
不应出现在 ChatRequest 中(Codec 不应看到此字段)。
retry_policy: RetryPolicy工具重试策略
Trait Implementations§
Source§impl Clone for ToolUseConfig
impl Clone for ToolUseConfig
Source§fn clone(&self) -> ToolUseConfig
fn clone(&self) -> ToolUseConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more