liter_llm/types/
responses.rs1use 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}