pub struct IterativeProblemSolver { /* private fields */ }Expand description
An agent that iteratively attempts to solve a problem using available tools.
The solver uses a chat-based approach to break down and solve complex problems. It will continue attempting to solve the problem until it either succeeds, fails explicitly, or reaches the maximum number of iterations.
§Examples
ⓘ
use mojentic::agents::IterativeProblemSolver;
use mojentic::llm::{LlmBroker, LlmGateway};
use mojentic::llm::gateways::OllamaGateway;
use mojentic::llm::tools::simple_date_tool::SimpleDateTool;
use std::sync::Arc;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let gateway = Arc::new(OllamaGateway::default());
let broker = LlmBroker::new("qwen3:32b", gateway, None);
let tools: Vec<Box<dyn LlmTool>> = vec![Box::new(SimpleDateTool)];
let solver = IterativeProblemSolver::builder(broker)
.tools(tools)
.max_iterations(5)
.build();
let result = solver.solve("What's the date next Friday?").await?;
println!("Result: {}", result);
Ok(())
}Implementations§
Source§impl IterativeProblemSolver
impl IterativeProblemSolver
Sourcepub fn builder(broker: LlmBroker) -> IterativeProblemSolverBuilder
pub fn builder(broker: LlmBroker) -> IterativeProblemSolverBuilder
Create a problem solver builder for custom configuration.
§Arguments
broker- The LLM broker to use for generating responses
§Examples
ⓘ
use mojentic::agents::IterativeProblemSolver;
let solver = IterativeProblemSolver::builder(broker)
.max_iterations(10)
.system_prompt("You are a specialized problem solver.")
.tools(vec![Box::new(SimpleDateTool)])
.build();Sourcepub async fn solve(&mut self, problem: &str) -> Result<String>
pub async fn solve(&mut self, problem: &str) -> Result<String>
Execute the problem-solving process.
This method runs the iterative problem-solving process, continuing until one of these conditions is met:
- The task is completed successfully (response contains “DONE”)
- The task fails explicitly (response contains “FAIL”)
- The maximum number of iterations is reached
After completion, the agent requests a summary of the final result.
§Arguments
problem- The problem or request to be solved
§Returns
A summary of the final result, excluding the process details
§Examples
ⓘ
let result = solver.solve("Calculate the date 7 days from now").await?;
println!("Solution: {}", result);Auto Trait Implementations§
impl Freeze for IterativeProblemSolver
impl !RefUnwindSafe for IterativeProblemSolver
impl Send for IterativeProblemSolver
impl Sync for IterativeProblemSolver
impl Unpin for IterativeProblemSolver
impl !UnwindSafe for IterativeProblemSolver
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more