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 ListAssistant {
100 pub object: String,
101 pub data: Vec<AssistantObject>,
102}
103
104#[derive(Debug, Serialize, Clone)]
105pub struct AssistantFileRequest {
106 pub file_id: String,
107}
108
109#[derive(Debug, Deserialize, Serialize)]
110pub struct AssistantFileObject {
111 pub id: String,
112 pub object: String,
113 pub created_at: i64,
114 pub assistant_id: String,
115}
116
117#[derive(Debug, Deserialize, Serialize)]
118pub struct ListAssistantFile {
119 pub object: String,
120 pub data: Vec<AssistantFileObject>,
121}