feat: 增加工具结果字符限制,提升处理能力至 100,000 字符
This commit is contained in:
parent
2f529e96d0
commit
d1d4998a26
@ -1448,8 +1448,8 @@ mod tests {
|
|||||||
context_window_tokens: None,
|
context_window_tokens: None,
|
||||||
model_extra: std::collections::HashMap::new(),
|
model_extra: std::collections::HashMap::new(),
|
||||||
max_tool_iterations: 1,
|
max_tool_iterations: 1,
|
||||||
tool_result_max_chars: 20_000,
|
tool_result_max_chars: 100_000,
|
||||||
context_tool_result_trim_chars: 20_000,
|
context_tool_result_trim_chars: 100_000,
|
||||||
max_images_in_context: 1,
|
max_images_in_context: 1,
|
||||||
max_image_age_rounds: 10,
|
max_image_age_rounds: 10,
|
||||||
}
|
}
|
||||||
@ -1554,9 +1554,9 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_truncate_tool_result_handles_utf8_char_boundaries() {
|
fn test_truncate_tool_result_handles_utf8_char_boundaries() {
|
||||||
let input = "范".repeat(20_500);
|
let input = "范".repeat(100_500);
|
||||||
|
|
||||||
let output = truncate_tool_result(&input, 20_000);
|
let output = truncate_tool_result(&input, 100_000);
|
||||||
|
|
||||||
assert!(output.contains("Output truncated"));
|
assert!(output.contains("Output truncated"));
|
||||||
assert!(output.is_char_boundary(output.len()));
|
assert!(output.is_char_boundary(output.len()));
|
||||||
|
|||||||
@ -555,7 +555,7 @@ impl InitWizard {
|
|||||||
provider: selected_provider.clone(),
|
provider: selected_provider.clone(),
|
||||||
model: selected_model.clone(),
|
model: selected_model.clone(),
|
||||||
max_tool_iterations: 100,
|
max_tool_iterations: 100,
|
||||||
tool_result_max_chars: 20000,
|
tool_result_max_chars: 100_000,
|
||||||
context_tool_result_trim_chars: 2000,
|
context_tool_result_trim_chars: 2000,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -438,7 +438,7 @@ fn default_max_tool_iterations() -> usize {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn default_tool_result_max_chars() -> usize {
|
fn default_tool_result_max_chars() -> usize {
|
||||||
20_000
|
100_000
|
||||||
}
|
}
|
||||||
|
|
||||||
fn default_context_tool_result_trim_chars() -> usize {
|
fn default_context_tool_result_trim_chars() -> usize {
|
||||||
@ -1077,7 +1077,7 @@ mod tests {
|
|||||||
assert_eq!(provider_config.temperature, Some(0.0));
|
assert_eq!(provider_config.temperature, Some(0.0));
|
||||||
assert_eq!(provider_config.max_tokens, None);
|
assert_eq!(provider_config.max_tokens, None);
|
||||||
assert_eq!(provider_config.llm_timeout_secs, 120);
|
assert_eq!(provider_config.llm_timeout_secs, 120);
|
||||||
assert_eq!(provider_config.tool_result_max_chars, 20_000);
|
assert_eq!(provider_config.tool_result_max_chars, 100_000);
|
||||||
assert_eq!(provider_config.context_tool_result_trim_chars, 2_000);
|
assert_eq!(provider_config.context_tool_result_trim_chars, 2_000);
|
||||||
assert_eq!(provider_config.context_summary_char_budget(), 32_000);
|
assert_eq!(provider_config.context_summary_char_budget(), 32_000);
|
||||||
}
|
}
|
||||||
@ -1322,7 +1322,7 @@ mod tests {
|
|||||||
|
|
||||||
let config = Config::load(file.path().to_str().unwrap()).unwrap();
|
let config = Config::load(file.path().to_str().unwrap()).unwrap();
|
||||||
assert_eq!(config.agents["default"].max_tool_iterations, 100);
|
assert_eq!(config.agents["default"].max_tool_iterations, 100);
|
||||||
assert_eq!(config.agents["default"].tool_result_max_chars, 20_000);
|
assert_eq!(config.agents["default"].tool_result_max_chars, 100_000);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
config.agents["default"].context_tool_result_trim_chars,
|
config.agents["default"].context_tool_result_trim_chars,
|
||||||
2_000
|
2_000
|
||||||
|
|||||||
@ -121,7 +121,7 @@ mod tests {
|
|||||||
context_window_tokens: None,
|
context_window_tokens: None,
|
||||||
model_extra: HashMap::new(),
|
model_extra: HashMap::new(),
|
||||||
max_tool_iterations: 1,
|
max_tool_iterations: 1,
|
||||||
tool_result_max_chars: 20_000,
|
tool_result_max_chars: 100_000,
|
||||||
context_tool_result_trim_chars: 20_000,
|
context_tool_result_trim_chars: 20_000,
|
||||||
max_images_in_context: 1,
|
max_images_in_context: 1,
|
||||||
max_image_age_rounds: 10,
|
max_image_age_rounds: 10,
|
||||||
|
|||||||
@ -65,7 +65,7 @@ mod tests {
|
|||||||
context_window_tokens: None,
|
context_window_tokens: None,
|
||||||
model_extra: HashMap::new(),
|
model_extra: HashMap::new(),
|
||||||
max_tool_iterations: 1,
|
max_tool_iterations: 1,
|
||||||
tool_result_max_chars: 20_000,
|
tool_result_max_chars: 100_000,
|
||||||
context_tool_result_trim_chars: 20_000,
|
context_tool_result_trim_chars: 20_000,
|
||||||
max_images_in_context: 1,
|
max_images_in_context: 1,
|
||||||
max_image_age_rounds: 10,
|
max_image_age_rounds: 10,
|
||||||
|
|||||||
@ -742,8 +742,8 @@ mod tests {
|
|||||||
context_window_tokens: None,
|
context_window_tokens: None,
|
||||||
model_extra: HashMap::new(),
|
model_extra: HashMap::new(),
|
||||||
max_tool_iterations: 1,
|
max_tool_iterations: 1,
|
||||||
tool_result_max_chars: 20_000,
|
tool_result_max_chars: 100_000,
|
||||||
context_tool_result_trim_chars: 20_000,
|
context_tool_result_trim_chars: 100_000,
|
||||||
max_images_in_context: 1,
|
max_images_in_context: 1,
|
||||||
max_image_age_rounds: 10,
|
max_image_age_rounds: 10,
|
||||||
}
|
}
|
||||||
@ -1004,8 +1004,8 @@ mod tests {
|
|||||||
max_tool_iterations: 1,
|
max_tool_iterations: 1,
|
||||||
llm_timeout_secs: 30,
|
llm_timeout_secs: 30,
|
||||||
memory_maintenance_timeout_secs: 600,
|
memory_maintenance_timeout_secs: 600,
|
||||||
tool_result_max_chars: 20_000,
|
tool_result_max_chars: 100_000,
|
||||||
context_tool_result_trim_chars: 20_000,
|
context_tool_result_trim_chars: 100_000,
|
||||||
max_images_in_context: 1,
|
max_images_in_context: 1,
|
||||||
max_image_age_rounds: 10,
|
max_image_age_rounds: 10,
|
||||||
};
|
};
|
||||||
@ -1052,8 +1052,8 @@ mod tests {
|
|||||||
max_tool_iterations: 1,
|
max_tool_iterations: 1,
|
||||||
llm_timeout_secs: 30,
|
llm_timeout_secs: 30,
|
||||||
memory_maintenance_timeout_secs: 600,
|
memory_maintenance_timeout_secs: 600,
|
||||||
tool_result_max_chars: 20_000,
|
tool_result_max_chars: 100_000,
|
||||||
context_tool_result_trim_chars: 20_000,
|
context_tool_result_trim_chars: 100_000,
|
||||||
max_images_in_context: 1,
|
max_images_in_context: 1,
|
||||||
max_image_age_rounds: 10,
|
max_image_age_rounds: 10,
|
||||||
};
|
};
|
||||||
@ -1130,8 +1130,8 @@ mod tests {
|
|||||||
max_tool_iterations: 1,
|
max_tool_iterations: 1,
|
||||||
llm_timeout_secs: 30,
|
llm_timeout_secs: 30,
|
||||||
memory_maintenance_timeout_secs: 600,
|
memory_maintenance_timeout_secs: 600,
|
||||||
tool_result_max_chars: 20_000,
|
tool_result_max_chars: 100_000,
|
||||||
context_tool_result_trim_chars: 20_000,
|
context_tool_result_trim_chars: 100_000,
|
||||||
max_images_in_context: 1,
|
max_images_in_context: 1,
|
||||||
max_image_age_rounds: 10,
|
max_image_age_rounds: 10,
|
||||||
};
|
};
|
||||||
@ -1218,8 +1218,8 @@ mod tests {
|
|||||||
max_tool_iterations: 1,
|
max_tool_iterations: 1,
|
||||||
llm_timeout_secs: 30,
|
llm_timeout_secs: 30,
|
||||||
memory_maintenance_timeout_secs: 600,
|
memory_maintenance_timeout_secs: 600,
|
||||||
tool_result_max_chars: 20_000,
|
tool_result_max_chars: 100_000,
|
||||||
context_tool_result_trim_chars: 20_000,
|
context_tool_result_trim_chars: 100_000,
|
||||||
max_images_in_context: 1,
|
max_images_in_context: 1,
|
||||||
max_image_age_rounds: 10,
|
max_image_age_rounds: 10,
|
||||||
};
|
};
|
||||||
@ -1308,8 +1308,8 @@ mod tests {
|
|||||||
max_tool_iterations: 1,
|
max_tool_iterations: 1,
|
||||||
llm_timeout_secs: 1,
|
llm_timeout_secs: 1,
|
||||||
memory_maintenance_timeout_secs: 600,
|
memory_maintenance_timeout_secs: 600,
|
||||||
tool_result_max_chars: 20_000,
|
tool_result_max_chars: 100_000,
|
||||||
context_tool_result_trim_chars: 20_000,
|
context_tool_result_trim_chars: 100_000,
|
||||||
max_images_in_context: 1,
|
max_images_in_context: 1,
|
||||||
max_image_age_rounds: 10,
|
max_image_age_rounds: 10,
|
||||||
};
|
};
|
||||||
@ -1397,8 +1397,8 @@ mod tests {
|
|||||||
max_tool_iterations: 1,
|
max_tool_iterations: 1,
|
||||||
llm_timeout_secs: 30,
|
llm_timeout_secs: 30,
|
||||||
memory_maintenance_timeout_secs: 600,
|
memory_maintenance_timeout_secs: 600,
|
||||||
tool_result_max_chars: 20_000,
|
tool_result_max_chars: 100_000,
|
||||||
context_tool_result_trim_chars: 20_000,
|
context_tool_result_trim_chars: 100_000,
|
||||||
max_images_in_context: 1,
|
max_images_in_context: 1,
|
||||||
max_image_age_rounds: 10,
|
max_image_age_rounds: 10,
|
||||||
};
|
};
|
||||||
@ -1468,8 +1468,8 @@ mod tests {
|
|||||||
max_tool_iterations: 1,
|
max_tool_iterations: 1,
|
||||||
llm_timeout_secs: 30,
|
llm_timeout_secs: 30,
|
||||||
memory_maintenance_timeout_secs: 600,
|
memory_maintenance_timeout_secs: 600,
|
||||||
tool_result_max_chars: 20_000,
|
tool_result_max_chars: 100_000,
|
||||||
context_tool_result_trim_chars: 20_000,
|
context_tool_result_trim_chars: 100_000,
|
||||||
max_images_in_context: 1,
|
max_images_in_context: 1,
|
||||||
max_image_age_rounds: 10,
|
max_image_age_rounds: 10,
|
||||||
};
|
};
|
||||||
@ -1548,8 +1548,8 @@ mod tests {
|
|||||||
max_tool_iterations: 1,
|
max_tool_iterations: 1,
|
||||||
llm_timeout_secs: 30,
|
llm_timeout_secs: 30,
|
||||||
memory_maintenance_timeout_secs: 600,
|
memory_maintenance_timeout_secs: 600,
|
||||||
tool_result_max_chars: 20_000,
|
tool_result_max_chars: 100_000,
|
||||||
context_tool_result_trim_chars: 20_000,
|
context_tool_result_trim_chars: 100_000,
|
||||||
max_images_in_context: 1,
|
max_images_in_context: 1,
|
||||||
max_image_age_rounds: 10,
|
max_image_age_rounds: 10,
|
||||||
};
|
};
|
||||||
@ -1615,8 +1615,8 @@ mod tests {
|
|||||||
max_tool_iterations: 1,
|
max_tool_iterations: 1,
|
||||||
llm_timeout_secs: 1,
|
llm_timeout_secs: 1,
|
||||||
memory_maintenance_timeout_secs: 600,
|
memory_maintenance_timeout_secs: 600,
|
||||||
tool_result_max_chars: 20_000,
|
tool_result_max_chars: 100_000,
|
||||||
context_tool_result_trim_chars: 20_000,
|
context_tool_result_trim_chars: 100_000,
|
||||||
max_images_in_context: 1,
|
max_images_in_context: 1,
|
||||||
max_image_age_rounds: 10,
|
max_image_age_rounds: 10,
|
||||||
};
|
};
|
||||||
|
|||||||
@ -7,7 +7,7 @@ use crate::text::take_prefix_chars;
|
|||||||
use crate::tools::traits::{Tool, ToolResult};
|
use crate::tools::traits::{Tool, ToolResult};
|
||||||
use crate::tools::extract_u64;
|
use crate::tools::extract_u64;
|
||||||
|
|
||||||
const MAX_CHARS: usize = 128_000;
|
const MAX_CHARS: usize = 100_000;
|
||||||
const DEFAULT_LIMIT: usize = 2000;
|
const DEFAULT_LIMIT: usize = 2000;
|
||||||
|
|
||||||
pub struct FileReadTool {
|
pub struct FileReadTool {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user