openai_api_rs/v1/
assistant.rs1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4use super::types;
5use crate::impl_builder_methods;
6
7#[derive(Debug, Serialize, Clone)]
8pub struct AssistantRequest {
9 pub model: String,
10 #[serde(skip_serializing_if = "Option::is_none")]
11 pub name: Option<String>,
12 #[serde(skip_serializing_if = "Option::is_none")]
13 pub description: Option<String>,
14 #[serde(skip_serializing_if = "Option::is_none")]
15 pub instructions: Option<String>,
16 #[serde(skip_serializing_if = "Option::is_none")]
17 pub tools: Option<Vec<HashMap<String, String>>>,
18 #[serde(skip_serializing_if = "Option::is_none")]
19 pub tool_resources: Option<ToolResource>,
20 #[serde(skip_serializing_if = "Option::is_none")]
21 pub metadata: Option<HashMap<String, String>>,
22}
23
24impl AssistantRequest {
25 pub fn new(model: String) -> Self {
26 Self {
27 model,
28 name: None,
29 description: None,
30 instructions: None,
31 tools: None,
32 tool_resources: None,
33 metadata: None,
34 }
35 }
36}
37
38impl_builder_methods!(
39 AssistantRequest,
40 name: String,
41 description: String,
42 instructions: String,
43 tools: Vec<HashMap<String, String>>,
44 tool_resources: ToolResource,
45 metadata: HashMap<String, String>
46);
47
48#[derive(Debug, Deserialize, Serialize)]
49pub struct AssistantObject {
50 pub id: String,
51 pub object: String,
52 pub created_at: i64,
53 #[serde(skip_serializing_if = "Option::is_none")]
54 pub name: Option<String>,
55 #[serde(skip_serializing_if = "Option::is_none")]
56 pub description: Option<String>,
57 pub model: String,
58 #[serde(skip_serializing_if = "Option::is_none")]
59 pub instructions: Option<String>,
60 pub tools: Vec<types::Tools>,
61 #[serde(skip_serializing_if = "Option::is_none")]
62 pub tool_resources: Option<ToolResource>,
63 pub metadata: Option<HashMap<String, String>>,
64}
65
66#[derive(Debug, Deserialize, Serialize, Clone)]
67pub struct ToolResource {
68 #[serde(skip_serializing_if = "Option::is_none")]
69 pub code_interpreter: Option<CodeInterpreter>,
70 #[serde(skip_serializing_if = "Option::is_none")]
71 pub file_search: Option<FileSearch>,
72}
73
74#[derive(Debug, Deserialize, Serialize, Clone)]
75pub struct CodeInterpreter {
76 #[serde(skip_serializing_if = "Option::is_none")]
77 pub file_ids: Option<Vec<String>>,
78}
79
80#[derive(Debug, Deserialize, Serialize, Clone)]
81pub struct FileSearch {
82 #[serde(skip_serializing_if = "Option::is_none")]
83 pub vector_store_ids: Option<Vec<String>>,
84 #[serde(skip_serializing_if = "Option::is_none")]
85 pub vector_stores: Option<VectorStores>,
86}
87
88#[derive(Debug, Deserialize, Serialize, Clone)]
89pub struct VectorStores {
90 #[serde(skip_serializing_if = "Option::is_none")]
91 pub file_ids: Option<Vec<String>>,
92 #[serde(skip_serializing_if = "Option::is_none")]
93 pub chunking_strategy: Option<String>,
94 #[serde(skip_serializing_if = "Option::is_none")]
95 pub metadata: Option<HashMap<String, String>>,
96}
97
98#[derive(Debug, Deserialize, Serialize)]
99pub struct DeletionStatus {
100 pub id: String,
101 pub object: String,
102 pub deleted: bool,
103}
104
105#[derive(Debug, Deserialize, Serialize)]
106pub struct ListAssistant {
107 pub object: String,
108 pub data: Vec<AssistantObject>,
109}
110
111#[derive(Debug, Serialize, Clone)]
112pub struct AssistantFileRequest {
113 pub file_id: String,
114}
115
116#[derive(Debug, Deserialize, Serialize)]
117pub struct AssistantFileObject {
118 pub id: String,
119 pub object: String,
120 pub created_at: i64,
121 pub assistant_id: String,
122}
123
124#[derive(Debug, Deserialize, Serialize)]
125pub struct ListAssistantFile {
126 pub object: String,
127 pub data: Vec<AssistantFileObject>,
128}