openai_api_rs/v1/
types.rs1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Eq)]
5pub struct Function {
6 pub name: String,
7 #[serde(skip_serializing_if = "Option::is_none")]
8 pub description: Option<String>,
9 pub parameters: FunctionParameters,
10}
11
12#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Eq)]
13pub struct FunctionParameters {
14 #[serde(rename = "type")]
15 pub schema_type: JSONSchemaType,
16 #[serde(skip_serializing_if = "Option::is_none")]
17 pub properties: Option<HashMap<String, Box<JSONSchemaDefine>>>,
18 #[serde(skip_serializing_if = "Option::is_none")]
19 pub required: Option<Vec<String>>,
20}
21
22#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Eq)]
23#[serde(rename_all = "lowercase")]
24pub enum JSONSchemaType {
25 Object,
26 Number,
27 String,
28 Array,
29 Null,
30 Boolean,
31}
32
33#[derive(Debug, Deserialize, Serialize, Clone, Default, PartialEq, Eq)]
34pub struct JSONSchemaDefine {
35 #[serde(rename = "type")]
36 pub schema_type: Option<JSONSchemaType>,
37 #[serde(skip_serializing_if = "Option::is_none")]
38 pub description: Option<String>,
39 #[serde(skip_serializing_if = "Option::is_none")]
40 pub enum_values: Option<Vec<String>>,
41 #[serde(skip_serializing_if = "Option::is_none")]
42 pub properties: Option<HashMap<String, Box<JSONSchemaDefine>>>,
43 #[serde(skip_serializing_if = "Option::is_none")]
44 pub required: Option<Vec<String>>,
45 #[serde(skip_serializing_if = "Option::is_none")]
46 pub items: Option<Box<JSONSchemaDefine>>,
47}
48
49#[derive(Debug, Deserialize, Serialize, Clone)]
50#[serde(tag = "type")]
51#[serde(rename_all = "snake_case")]
52pub enum Tools {
53 CodeInterpreter,
54 FileSearch(ToolsFileSearch),
55 Function(ToolsFunction),
56}
57
58#[derive(Debug, Deserialize, Serialize, Clone)]
59pub struct ToolsFileSearch {
60 #[serde(skip_serializing_if = "Option::is_none")]
61 pub file_search: Option<ToolsFileSearchObject>,
62}
63
64#[derive(Debug, Deserialize, Serialize, Clone)]
65pub struct ToolsFunction {
66 pub function: Function,
67}
68
69#[derive(Debug, Deserialize, Serialize, Clone)]
70pub struct ToolsFileSearchObject {
71 pub max_num_results: Option<u8>,
72 pub ranking_options: Option<FileSearchRankingOptions>,
73}
74
75#[derive(Debug, Deserialize, Serialize, Clone)]
76pub struct FileSearchRankingOptions {
77 pub ranker: Option<FileSearchRanker>,
78 pub score_threshold: Option<f32>,
79}
80
81#[derive(Debug, Deserialize, Serialize, Clone)]
82pub enum FileSearchRanker {
83 #[serde(rename = "auto")]
84 Auto,
85 #[serde(rename = "default_2024_08_21")]
86 Default2024_08_21,
87}