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