doum_cli/core/
auto_mode.rs1use crate::llm::client::LLMRequest;
2use crate::llm::retry_with_parse;
3use crate::llm::{AutoResponse, LLMClient, Message, PromptBuilder, parse_auto_mode};
4use crate::system::{Config, SystemInfo};
5use anyhow::Result;
6
7pub async fn select_mode(
10 input: &str,
11 client: &dyn LLMClient,
12 system_info: &SystemInfo,
13 config: &Config,
14) -> Result<AutoResponse> {
15 let builder = PromptBuilder::new(system_info.clone());
16
17 let response = retry_with_parse(
19 || {
20 let request = LLMRequest {
21 system: builder.build_auto_mode(),
22 messages: vec![Message::user(input)],
23 use_websearch: false,
24 };
25 Box::pin(client.generate(request))
26 },
27 parse_auto_mode,
28 config.llm.max_retries,
29 )
30 .await?;
31
32 Ok(response)
33}