Skip to main content

liter_llm/types/
responses.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
4#[serde(deny_unknown_fields)]
5pub struct CreateResponseRequest {
6    pub model: String,
7    pub input: serde_json::Value,
8    #[serde(default, skip_serializing_if = "Option::is_none")]
9    pub instructions: Option<String>,
10    #[serde(default, skip_serializing_if = "Option::is_none")]
11    pub tools: Option<Vec<ResponseTool>>,
12    #[serde(default, skip_serializing_if = "Option::is_none")]
13    pub temperature: Option<f64>,
14    #[serde(default, skip_serializing_if = "Option::is_none")]
15    pub max_output_tokens: Option<u64>,
16    #[serde(default, skip_serializing_if = "Option::is_none")]
17    pub metadata: Option<serde_json::Value>,
18}
19
20#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
21pub struct ResponseTool {
22    #[serde(rename = "type")]
23    pub tool_type: String,
24    #[serde(flatten)]
25    pub config: serde_json::Value,
26}
27
28#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
29pub struct ResponseObject {
30    pub id: String,
31    pub object: String,
32    pub created_at: u64,
33    pub model: String,
34    pub status: String,
35    pub output: Vec<ResponseOutputItem>,
36    #[serde(default, skip_serializing_if = "Option::is_none")]
37    pub usage: Option<ResponseUsage>,
38    #[serde(default, skip_serializing_if = "Option::is_none")]
39    pub error: Option<serde_json::Value>,
40}
41
42#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
43pub struct ResponseOutputItem {
44    #[serde(rename = "type")]
45    pub item_type: String,
46    #[serde(flatten)]
47    pub content: serde_json::Value,
48}
49
50#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
51pub struct ResponseUsage {
52    pub input_tokens: u64,
53    pub output_tokens: u64,
54    pub total_tokens: u64,
55}