request.rs

 1use crate::{role::Role, LanguageModelId};
 2use serde::{Deserialize, Serialize};
 3
 4#[derive(Serialize, Deserialize, Debug, Eq, PartialEq)]
 5pub struct LanguageModelRequestMessage {
 6    pub role: Role,
 7    pub content: String,
 8}
 9
10impl LanguageModelRequestMessage {
11    pub fn to_proto(&self) -> proto::LanguageModelRequestMessage {
12        proto::LanguageModelRequestMessage {
13            role: self.role.to_proto() as i32,
14            content: self.content.clone(),
15            tool_calls: Vec::new(),
16            tool_call_id: None,
17        }
18    }
19}
20
21#[derive(Debug, Default, Serialize, Deserialize)]
22pub struct LanguageModelRequest {
23    pub messages: Vec<LanguageModelRequestMessage>,
24    pub stop: Vec<String>,
25    pub temperature: f32,
26}
27
28impl LanguageModelRequest {
29    pub fn to_proto(&self, model_id: LanguageModelId) -> proto::CompleteWithLanguageModel {
30        proto::CompleteWithLanguageModel {
31            model: model_id.0.to_string(),
32            messages: self.messages.iter().map(|m| m.to_proto()).collect(),
33            stop: self.stop.clone(),
34            temperature: self.temperature,
35            tool_choice: None,
36            tools: Vec::new(),
37        }
38    }
39}
40
41#[derive(Serialize, Deserialize, Debug, Eq, PartialEq)]
42pub struct LanguageModelResponseMessage {
43    pub role: Option<Role>,
44    pub content: Option<String>,
45}