foundry_local_sdk/
types.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
5pub enum DeviceType {
6 Invalid,
7 #[default]
8 CPU,
9 GPU,
10 NPU,
11}
12
13#[derive(Debug, Clone, Serialize, Deserialize)]
15#[serde(rename_all = "camelCase")]
16pub struct PromptTemplate {
17 #[serde(skip_serializing_if = "Option::is_none")]
18 pub system: Option<String>,
19 #[serde(skip_serializing_if = "Option::is_none")]
20 pub user: Option<String>,
21 #[serde(skip_serializing_if = "Option::is_none")]
22 pub assistant: Option<String>,
23 #[serde(skip_serializing_if = "Option::is_none")]
24 pub prompt: Option<String>,
25}
26
27#[derive(Debug, Clone, Serialize, Deserialize)]
29#[serde(rename_all = "camelCase")]
30pub struct Runtime {
31 pub device_type: DeviceType,
32 pub execution_provider: String,
33}
34
35#[derive(Debug, Clone, Serialize, Deserialize)]
37#[serde(rename_all = "camelCase")]
38pub struct Parameter {
39 pub name: String,
40 #[serde(skip_serializing_if = "Option::is_none")]
41 pub value: Option<String>,
42}
43
44#[derive(Debug, Clone, Serialize, Deserialize)]
46#[serde(rename_all = "camelCase")]
47pub struct ModelSettings {
48 #[serde(skip_serializing_if = "Option::is_none")]
49 pub parameters: Option<Vec<Parameter>>,
50}
51
52#[derive(Debug, Clone, Serialize, Deserialize)]
54#[serde(rename_all = "camelCase")]
55pub struct ModelInfo {
56 pub id: String,
57 pub name: String,
58 pub version: u64,
59 pub alias: String,
60 #[serde(skip_serializing_if = "Option::is_none")]
61 pub display_name: Option<String>,
62 pub provider_type: String,
63 pub uri: String,
64 pub model_type: String,
65 #[serde(skip_serializing_if = "Option::is_none")]
66 pub prompt_template: Option<PromptTemplate>,
67 #[serde(skip_serializing_if = "Option::is_none")]
68 pub publisher: Option<String>,
69 #[serde(skip_serializing_if = "Option::is_none")]
70 pub model_settings: Option<ModelSettings>,
71 #[serde(skip_serializing_if = "Option::is_none")]
72 pub license: Option<String>,
73 #[serde(skip_serializing_if = "Option::is_none")]
74 pub license_description: Option<String>,
75 pub cached: bool,
76 #[serde(skip_serializing_if = "Option::is_none")]
77 pub task: Option<String>,
78 #[serde(skip_serializing_if = "Option::is_none")]
79 pub runtime: Option<Runtime>,
80 #[serde(skip_serializing_if = "Option::is_none")]
81 pub file_size_mb: Option<u64>,
82 #[serde(skip_serializing_if = "Option::is_none")]
83 pub supports_tool_calling: Option<bool>,
84 #[serde(skip_serializing_if = "Option::is_none")]
85 pub max_output_tokens: Option<u64>,
86 #[serde(skip_serializing_if = "Option::is_none")]
87 pub min_fl_version: Option<String>,
88 #[serde(default)]
89 pub created_at_unix: u64,
90 #[serde(skip_serializing_if = "Option::is_none")]
91 pub context_length: Option<u64>,
92 #[serde(skip_serializing_if = "Option::is_none")]
93 pub input_modalities: Option<String>,
94 #[serde(skip_serializing_if = "Option::is_none")]
95 pub output_modalities: Option<String>,
96 #[serde(skip_serializing_if = "Option::is_none")]
97 pub capabilities: Option<String>,
98}
99
100#[derive(Debug, Clone)]
105pub enum ChatResponseFormat {
106 Text,
108 JsonObject,
110 JsonSchema(String),
112 LarkGrammar(String),
114}
115
116#[derive(Debug, Clone)]
118pub enum ChatToolChoice {
119 None,
121 Auto,
123 Required,
125 Function(String),
127}
128
129#[derive(Debug, Clone, Serialize, Deserialize)]
131#[serde(rename_all = "PascalCase")]
132pub struct EpInfo {
133 pub name: String,
135 pub is_registered: bool,
137}
138
139#[derive(Debug, Clone, Serialize, Deserialize)]
141#[serde(rename_all = "PascalCase")]
142pub struct EpDownloadResult {
143 pub success: bool,
145 pub status: String,
147 pub registered_eps: Vec<String>,
149 pub failed_eps: Vec<String>,
151}