vapi_client/models/
knowledge_base.rs

1/*
2 * Vapi API
3 *
4 * API for building voice assistants
5 *
6 * The version of the OpenAPI document: 1.0
7 *
8 * Generated by: https://openapi-generator.tech
9 */
10
11use serde::{Deserialize, Serialize};
12
13use crate::models;
14
15#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16pub struct KnowledgeBase {
17    /// The name of the knowledge base
18    #[serde(rename = "name")]
19    pub name: String,
20    /// The provider of the knowledge base
21    #[serde(rename = "provider")]
22    pub provider: Provider,
23    /// The model to use for the knowledge base
24    #[serde(rename = "model")]
25    pub model: Model,
26    /// A description of the knowledge base
27    #[serde(rename = "description")]
28    pub description: String,
29    /// The file IDs associated with this knowledge base
30    #[serde(rename = "fileIds")]
31    pub file_ids: Vec<String>,
32}
33
34impl KnowledgeBase {
35    pub fn new(
36        name: String,
37        provider: Provider,
38        model: Model,
39        description: String,
40        file_ids: Vec<String>,
41    ) -> KnowledgeBase {
42        KnowledgeBase {
43            name,
44            provider,
45            model,
46            description,
47            file_ids,
48        }
49    }
50}
51/// The provider of the knowledge base
52#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
53pub enum Provider {
54    #[serde(rename = "google")]
55    Google,
56}
57
58impl Default for Provider {
59    fn default() -> Provider {
60        Self::Google
61    }
62}
63/// The model to use for the knowledge base
64#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
65pub enum Model {
66    #[serde(rename = "gemini-2.0-flash-thinking-exp")]
67    Gemini2Period0FlashThinkingExp,
68    #[serde(rename = "gemini-2.0-pro-exp-02-05")]
69    Gemini2Period0ProExp0205,
70    #[serde(rename = "gemini-2.0-flash")]
71    Gemini2Period0Flash,
72    #[serde(rename = "gemini-2.0-flash-lite-preview-02-05")]
73    Gemini2Period0FlashLitePreview0205,
74    #[serde(rename = "gemini-2.0-flash-exp")]
75    Gemini2Period0FlashExp,
76    #[serde(rename = "gemini-2.0-flash-realtime-exp")]
77    Gemini2Period0FlashRealtimeExp,
78    #[serde(rename = "gemini-1.5-flash")]
79    Gemini1Period5Flash,
80    #[serde(rename = "gemini-1.5-flash-002")]
81    Gemini1Period5Flash002,
82    #[serde(rename = "gemini-1.5-pro")]
83    Gemini1Period5Pro,
84    #[serde(rename = "gemini-1.5-pro-002")]
85    Gemini1Period5Pro002,
86    #[serde(rename = "gemini-1.0-pro")]
87    Gemini1Period0Pro,
88}
89
90impl Default for Model {
91    fn default() -> Model {
92        Self::Gemini2Period0FlashThinkingExp
93    }
94}