Skip to main content

codetether_agent/search/
request.rs

1//! Build the `CompletionRequest` used to ask the router model for a plan.
2
3use crate::provider::{CompletionRequest, ContentPart, Message, Role};
4
5use super::prompt::{ROUTER_SYSTEM, build_user_prompt};
6
7/// Construct the provider request carrying the router prompt.
8///
9/// `temperature = 1.0` keeps the request compatible with the Z.AI GLM
10/// family (see project AGENTS notes on GLM-5.1 temperature).
11///
12/// # Examples
13///
14/// ```rust
15/// use codetether_agent::search::request::build_router_request;
16/// let req = build_router_request("glm-5.1", "find fn main", 1);
17/// assert_eq!(req.messages.len(), 2);
18/// ```
19pub fn build_router_request(model: &str, query: &str, top_n: usize) -> CompletionRequest {
20    CompletionRequest {
21        model: model.to_string(),
22        messages: vec![
23            Message {
24                role: Role::System,
25                content: vec![ContentPart::Text {
26                    text: ROUTER_SYSTEM.to_string(),
27                }],
28            },
29            Message {
30                role: Role::User,
31                content: vec![ContentPart::Text {
32                    text: build_user_prompt(query, top_n),
33                }],
34            },
35        ],
36        tools: Vec::new(),
37        temperature: Some(1.0),
38        top_p: Some(0.9),
39        max_tokens: Some(400),
40        stop: Vec::new(),
41    }
42}