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}