openai_api_rs/v1/
assistant.rs

1use 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}