35 lines
1.0 KiB
Rust
35 lines
1.0 KiB
Rust
use serde::{Deserialize, Serialize};
|
|||
|
|
use serde_json::Value;
|
||
|
|
|
||
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||
|
|
pub struct ChatRequest {
|
||
|
|
pub model: String,
|
||
|
|
pub messages: Vec<super::super::chat::message::ChatMessage>,
|
||
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||
|
|
pub max_tokens: Option<u32>,
|
||
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||
|
|
pub temperature: Option<f32>,
|
||
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||
|
|
pub tools: Option<Vec<ToolDef>>,
|
||
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||
|
|
pub stream: Option<bool>,
|
||
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||
|
|
pub top_p: Option<f32>,
|
||
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||
|
|
pub stop: Option<Vec<String>>,
|
||
|
|
}
|
||
|
|
|
||
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||
|
|
pub struct ToolDef {
|
||
|
|
#[serde(rename = "type")]
|
||
|
|
pub type_: String,
|
||
|
|
pub function: ToolFunctionDef,
|
||
|
|
}
|
||
|
|
|
||
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||
|
|
pub struct ToolFunctionDef {
|
||
|
|
pub name: String,
|
||
|
|
pub description: String,
|
||
|
|
pub parameters: Value,
|
||
|
|
}
|