use langchainrust::{AgentState, END, GraphBuilder, START, StateUpdate};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let compiled = GraphBuilder::<AgentState>::new()
.add_node_fn("greet", |state: &AgentState| {
Ok(StateUpdate::full(AgentState::new(format!("你好:{}", state.input))))
})
.add_node_fn("reply", |state: &AgentState| {
let mut s = state.clone();
s.set_output(format!("回复:{}", state.input));
Ok(StateUpdate::full(s))
})
.add_edge(START, "greet")
.add_edge("greet", "reply")
.add_edge("reply", END)
.compile()?;
let result = compiled.invoke(AgentState::new("世界".to_string())).await?;
println!("input: {}", result.final_state.input);
println!("output: {:?}", result.final_state.output);
Ok(())
}