MCPcopy Index your code
hub / github.com/AI45Lab/Code / build_chat_request

Method build_chat_request

core/src/llm/openai.rs:315–354  ·  view source on GitHub ↗

Build a chat-completions request body, optionally applying a directive.

(
        &self,
        messages: &[Message],
        system: Option<&str>,
        tools: &[ToolDefinition],
        directive: Option<&structured::StructuredDirective>,
    )

Source from the content-addressed store, hash-verified

313
314 /// Build a chat-completions request body, optionally applying a directive.
315 fn build_chat_request(
316 &self,
317 messages: &[Message],
318 system: Option<&str>,
319 tools: &[ToolDefinition],
320 directive: Option<&structured::StructuredDirective>,
321 ) -> serde_json::Value {
322 let mut openai_messages = Vec::new();
323
324 if let Some(sys) = system {
325 openai_messages.push(serde_json::json!({
326 "role": "system",
327 "content": sys,
328 }));
329 }
330
331 openai_messages.extend(self.convert_messages(messages));
332
333 let mut request = serde_json::json!({
334 "model": self.model,
335 "messages": openai_messages,
336 });
337
338 if let Some(temp) = self.temperature {
339 request["temperature"] = serde_json::json!(temp);
340 }
341 if let Some(max) = self.max_tokens {
342 request["max_tokens"] = serde_json::json!(max);
343 }
344
345 if !tools.is_empty() {
346 request["tools"] = serde_json::json!(self.convert_tools(tools));
347 }
348
349 if let Some(directive) = directive {
350 Self::apply_directive(&mut request, directive);
351 }
352
353 request
354 }
355
356 /// Execute a fully-built (non-streaming) chat-completions request.
357 async fn send_request(&self, request: serde_json::Value) -> Result<LlmResponse> {

Calls 2

convert_messagesMethod · 0.80
is_emptyMethod · 0.45