llms-py 2.0.9__py3-none-any.whl → 3.0.10__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. llms/__init__.py +4 -0
  2. llms/__main__.py +9 -0
  3. llms/db.py +359 -0
  4. llms/extensions/analytics/ui/index.mjs +1444 -0
  5. llms/extensions/app/README.md +20 -0
  6. llms/extensions/app/__init__.py +589 -0
  7. llms/extensions/app/db.py +536 -0
  8. {llms_py-2.0.9.data/data → llms/extensions/app}/ui/Recents.mjs +100 -73
  9. llms_py-2.0.9.data/data/ui/Sidebar.mjs → llms/extensions/app/ui/index.mjs +150 -79
  10. llms/extensions/app/ui/threadStore.mjs +433 -0
  11. llms/extensions/core_tools/CALCULATOR.md +32 -0
  12. llms/extensions/core_tools/__init__.py +637 -0
  13. llms/extensions/core_tools/ui/codemirror/addon/edit/closebrackets.js +201 -0
  14. llms/extensions/core_tools/ui/codemirror/addon/edit/closetag.js +185 -0
  15. llms/extensions/core_tools/ui/codemirror/addon/edit/continuelist.js +101 -0
  16. llms/extensions/core_tools/ui/codemirror/addon/edit/matchbrackets.js +160 -0
  17. llms/extensions/core_tools/ui/codemirror/addon/edit/matchtags.js +66 -0
  18. llms/extensions/core_tools/ui/codemirror/addon/edit/trailingspace.js +27 -0
  19. llms/extensions/core_tools/ui/codemirror/addon/selection/active-line.js +72 -0
  20. llms/extensions/core_tools/ui/codemirror/addon/selection/mark-selection.js +119 -0
  21. llms/extensions/core_tools/ui/codemirror/addon/selection/selection-pointer.js +98 -0
  22. llms/extensions/core_tools/ui/codemirror/codemirror.css +344 -0
  23. llms/extensions/core_tools/ui/codemirror/codemirror.js +9884 -0
  24. llms/extensions/core_tools/ui/codemirror/doc/docs.css +225 -0
  25. llms/extensions/core_tools/ui/codemirror/doc/source_sans.woff +0 -0
  26. llms/extensions/core_tools/ui/codemirror/mode/clike/clike.js +942 -0
  27. llms/extensions/core_tools/ui/codemirror/mode/javascript/index.html +118 -0
  28. llms/extensions/core_tools/ui/codemirror/mode/javascript/javascript.js +962 -0
  29. llms/extensions/core_tools/ui/codemirror/mode/javascript/typescript.html +62 -0
  30. llms/extensions/core_tools/ui/codemirror/mode/python/python.js +402 -0
  31. llms/extensions/core_tools/ui/codemirror/theme/dracula.css +40 -0
  32. llms/extensions/core_tools/ui/codemirror/theme/mocha.css +135 -0
  33. llms/extensions/core_tools/ui/index.mjs +650 -0
  34. llms/extensions/gallery/README.md +61 -0
  35. llms/extensions/gallery/__init__.py +63 -0
  36. llms/extensions/gallery/db.py +243 -0
  37. llms/extensions/gallery/ui/index.mjs +482 -0
  38. llms/extensions/katex/README.md +39 -0
  39. llms/extensions/katex/__init__.py +6 -0
  40. llms/extensions/katex/ui/README.md +125 -0
  41. llms/extensions/katex/ui/contrib/auto-render.js +338 -0
  42. llms/extensions/katex/ui/contrib/auto-render.min.js +1 -0
  43. llms/extensions/katex/ui/contrib/auto-render.mjs +244 -0
  44. llms/extensions/katex/ui/contrib/copy-tex.js +127 -0
  45. llms/extensions/katex/ui/contrib/copy-tex.min.js +1 -0
  46. llms/extensions/katex/ui/contrib/copy-tex.mjs +105 -0
  47. llms/extensions/katex/ui/contrib/mathtex-script-type.js +109 -0
  48. llms/extensions/katex/ui/contrib/mathtex-script-type.min.js +1 -0
  49. llms/extensions/katex/ui/contrib/mathtex-script-type.mjs +24 -0
  50. llms/extensions/katex/ui/contrib/mhchem.js +3213 -0
  51. llms/extensions/katex/ui/contrib/mhchem.min.js +1 -0
  52. llms/extensions/katex/ui/contrib/mhchem.mjs +3109 -0
  53. llms/extensions/katex/ui/contrib/render-a11y-string.js +887 -0
  54. llms/extensions/katex/ui/contrib/render-a11y-string.min.js +1 -0
  55. llms/extensions/katex/ui/contrib/render-a11y-string.mjs +800 -0
  56. llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.ttf +0 -0
  57. llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.woff +0 -0
  58. llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  59. llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  60. llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  61. llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  62. llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  63. llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  64. llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  65. llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  66. llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  67. llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  68. llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  69. llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  70. llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  71. llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.ttf +0 -0
  72. llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.woff +0 -0
  73. llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.woff2 +0 -0
  74. llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  75. llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  76. llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  77. llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.ttf +0 -0
  78. llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.woff +0 -0
  79. llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.woff2 +0 -0
  80. llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.ttf +0 -0
  81. llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.woff +0 -0
  82. llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.woff2 +0 -0
  83. llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  84. llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  85. llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  86. llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.ttf +0 -0
  87. llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.woff +0 -0
  88. llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.woff2 +0 -0
  89. llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  90. llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  91. llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  92. llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  93. llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  94. llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  95. llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  96. llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  97. llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  98. llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.ttf +0 -0
  99. llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.woff +0 -0
  100. llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.woff2 +0 -0
  101. llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.ttf +0 -0
  102. llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.woff +0 -0
  103. llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  104. llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.ttf +0 -0
  105. llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.woff +0 -0
  106. llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  107. llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.ttf +0 -0
  108. llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.woff +0 -0
  109. llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  110. llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.ttf +0 -0
  111. llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.woff +0 -0
  112. llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  113. llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  114. llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  115. llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  116. llms/extensions/katex/ui/index.mjs +92 -0
  117. llms/extensions/katex/ui/katex-swap.css +1230 -0
  118. llms/extensions/katex/ui/katex-swap.min.css +1 -0
  119. llms/extensions/katex/ui/katex.css +1230 -0
  120. llms/extensions/katex/ui/katex.js +19080 -0
  121. llms/extensions/katex/ui/katex.min.css +1 -0
  122. llms/extensions/katex/ui/katex.min.js +1 -0
  123. llms/extensions/katex/ui/katex.min.mjs +1 -0
  124. llms/extensions/katex/ui/katex.mjs +18547 -0
  125. llms/extensions/providers/__init__.py +22 -0
  126. llms/extensions/providers/anthropic.py +233 -0
  127. llms/extensions/providers/cerebras.py +37 -0
  128. llms/extensions/providers/chutes.py +153 -0
  129. llms/extensions/providers/google.py +481 -0
  130. llms/extensions/providers/nvidia.py +103 -0
  131. llms/extensions/providers/openai.py +154 -0
  132. llms/extensions/providers/openrouter.py +74 -0
  133. llms/extensions/providers/zai.py +182 -0
  134. llms/extensions/system_prompts/README.md +22 -0
  135. llms/extensions/system_prompts/__init__.py +45 -0
  136. llms/extensions/system_prompts/ui/index.mjs +280 -0
  137. llms/extensions/system_prompts/ui/prompts.json +1067 -0
  138. llms/extensions/tools/__init__.py +144 -0
  139. llms/extensions/tools/ui/index.mjs +706 -0
  140. llms/index.html +58 -0
  141. llms/llms.json +400 -0
  142. llms/main.py +4407 -0
  143. llms/providers-extra.json +394 -0
  144. llms/providers.json +1 -0
  145. llms/ui/App.mjs +188 -0
  146. llms/ui/ai.mjs +217 -0
  147. llms/ui/app.css +7081 -0
  148. llms/ui/ctx.mjs +412 -0
  149. llms/ui/index.mjs +131 -0
  150. llms/ui/lib/chart.js +14 -0
  151. llms/ui/lib/charts.mjs +16 -0
  152. llms/ui/lib/color.js +14 -0
  153. llms/ui/lib/servicestack-vue.mjs +37 -0
  154. llms/ui/lib/vue.min.mjs +13 -0
  155. llms/ui/lib/vue.mjs +18530 -0
  156. {llms_py-2.0.9.data/data → llms}/ui/markdown.mjs +33 -15
  157. llms/ui/modules/chat/ChatBody.mjs +976 -0
  158. llms/ui/modules/chat/SettingsDialog.mjs +374 -0
  159. llms/ui/modules/chat/index.mjs +991 -0
  160. llms/ui/modules/icons.mjs +46 -0
  161. llms/ui/modules/layout.mjs +271 -0
  162. llms/ui/modules/model-selector.mjs +811 -0
  163. llms/ui/tailwind.input.css +742 -0
  164. {llms_py-2.0.9.data/data → llms}/ui/typography.css +133 -7
  165. llms/ui/utils.mjs +261 -0
  166. llms_py-3.0.10.dist-info/METADATA +49 -0
  167. llms_py-3.0.10.dist-info/RECORD +177 -0
  168. llms_py-3.0.10.dist-info/entry_points.txt +2 -0
  169. {llms_py-2.0.9.dist-info → llms_py-3.0.10.dist-info}/licenses/LICENSE +1 -2
  170. llms.py +0 -1402
  171. llms_py-2.0.9.data/data/index.html +0 -64
  172. llms_py-2.0.9.data/data/llms.json +0 -447
  173. llms_py-2.0.9.data/data/requirements.txt +0 -1
  174. llms_py-2.0.9.data/data/ui/App.mjs +0 -20
  175. llms_py-2.0.9.data/data/ui/ChatPrompt.mjs +0 -389
  176. llms_py-2.0.9.data/data/ui/Main.mjs +0 -680
  177. llms_py-2.0.9.data/data/ui/app.css +0 -3951
  178. llms_py-2.0.9.data/data/ui/lib/servicestack-vue.min.mjs +0 -37
  179. llms_py-2.0.9.data/data/ui/lib/vue.min.mjs +0 -12
  180. llms_py-2.0.9.data/data/ui/tailwind.input.css +0 -261
  181. llms_py-2.0.9.data/data/ui/threadStore.mjs +0 -273
  182. llms_py-2.0.9.data/data/ui/utils.mjs +0 -114
  183. llms_py-2.0.9.data/data/ui.json +0 -1069
  184. llms_py-2.0.9.dist-info/METADATA +0 -941
  185. llms_py-2.0.9.dist-info/RECORD +0 -30
  186. llms_py-2.0.9.dist-info/entry_points.txt +0 -2
  187. {llms_py-2.0.9.data/data → llms}/ui/fav.svg +0 -0
  188. {llms_py-2.0.9.data/data → llms}/ui/lib/highlight.min.mjs +0 -0
  189. {llms_py-2.0.9.data/data → llms}/ui/lib/idb.min.mjs +0 -0
  190. {llms_py-2.0.9.data/data → llms}/ui/lib/marked.min.mjs +0 -0
  191. /llms_py-2.0.9.data/data/ui/lib/servicestack-client.min.mjs → /llms/ui/lib/servicestack-client.mjs +0 -0
  192. {llms_py-2.0.9.data/data → llms}/ui/lib/vue-router.min.mjs +0 -0
  193. {llms_py-2.0.9.dist-info → llms_py-3.0.10.dist-info}/WHEEL +0 -0
  194. {llms_py-2.0.9.dist-info → llms_py-3.0.10.dist-info}/top_level.txt +0 -0
@@ -1,64 +0,0 @@
1
- <html>
2
- <head>
3
- <title>llms.py</title>
4
- <link rel="stylesheet" href="/ui/typography.css">
5
- <link rel="stylesheet" href="/ui/app.css">
6
- <link rel="icon" type="image/svg" href="/ui/fav.svg">
7
- </head>
8
- <script type="importmap">
9
- {
10
- "imports": {
11
- "vue": "/ui/lib/vue.min.mjs",
12
- "vue-router": "/ui/lib/vue-router.min.mjs",
13
- "@servicestack/client": "/ui/lib/servicestack-client.min.mjs",
14
- "@servicestack/vue": "/ui/lib/servicestack-vue.min.mjs",
15
- "highlight.mjs": "/ui/lib/highlight.min.mjs"
16
- }
17
- }
18
- </script>
19
- <body>
20
- <div id="app"></div>
21
- </body>
22
- <script type="module">
23
- import { createApp, defineAsyncComponent } from 'vue'
24
- import { createWebHistory, createRouter } from "vue-router"
25
- import ServiceStackVue from "@servicestack/vue"
26
- import { useThreadStore } from '/ui/threadStore.mjs'
27
- import App from '/ui/App.mjs'
28
-
29
- async function init() {
30
- // Load models and prompts
31
- const { initDB } = useThreadStore()
32
- const [_, configRes, modelsRes] = await Promise.all([
33
- await initDB(),
34
- fetch('/ui.json'),
35
- fetch('/models'),
36
- ])
37
- const config = await configRes.json()
38
- const models = await modelsRes.json()
39
- return { config, models }
40
- }
41
-
42
- const { config, models } = await init()
43
- const MainComponent = defineAsyncComponent(() => import('/ui/Main.mjs'))
44
- const RecentsComponent = defineAsyncComponent(() => import('/ui/Recents.mjs'))
45
-
46
- const routes = [
47
- { path: '/', component: MainComponent },
48
- { path: '/c/:id', component: MainComponent },
49
- { path: '/recents', component: RecentsComponent },
50
- { path: '/:fallback(.*)*', component: MainComponent }
51
- ]
52
- const router = createRouter({
53
- history: createWebHistory(),
54
- routes,
55
- })
56
- const app = createApp(App, { config, models })
57
- app.use(router)
58
- app.use(ServiceStackVue)
59
- app.provide('config', config)
60
- app.provide('models', models)
61
-
62
- app.mount('#app')
63
- </script>
64
- </html>
@@ -1,447 +0,0 @@
1
- {
2
- "defaults": {
3
- "headers": {
4
- "Content-Type": "application/json",
5
- "User-Agent": "llms.py/1.0"
6
- },
7
- "text": {
8
- "model": "kimi-k2",
9
- "messages": [
10
- {
11
- "role": "user",
12
- "content": [
13
- {
14
- "type": "text",
15
- "text": ""
16
- }
17
- ]
18
- }
19
- ]
20
- },
21
- "image": {
22
- "model": "qwen2.5vl",
23
- "messages": [
24
- {
25
- "role": "user",
26
- "content": [
27
- {
28
- "type": "image_url",
29
- "image_url": {
30
- "url": ""
31
- }
32
- },
33
- {
34
- "type": "text",
35
- "text": "Describe the key features of the input image"
36
- }
37
- ]
38
- }
39
- ]
40
- },
41
- "audio": {
42
- "model": "gpt-4o-audio-preview",
43
- "messages": [
44
- {
45
- "role": "user",
46
- "content": [
47
- {
48
- "type": "input_audio",
49
- "input_audio": {
50
- "data": "",
51
- "format": "mp3"
52
- }
53
- },
54
- {
55
- "type": "text",
56
- "text": "Please transcribe and summarize this audio file"
57
- }
58
- ]
59
- }
60
- ]
61
- },
62
- "file": {
63
- "model": "qwen2.5vl",
64
- "messages": [
65
- {
66
- "role": "user",
67
- "content": [
68
- {
69
- "type": "file",
70
- "file": {
71
- "filename": "",
72
- "file_data": ""
73
- }
74
- },
75
- {
76
- "type": "text",
77
- "text": "Please summarize this document"
78
- }
79
- ]
80
- }
81
- ]
82
- }
83
- },
84
- "providers": {
85
- "openrouter_free": {
86
- "enabled": true,
87
- "type": "OpenAiProvider",
88
- "base_url": "https://openrouter.ai/api",
89
- "api_key": "$OPENROUTER_FREE_API_KEY",
90
- "models": {
91
- "qwen2.5vl": "qwen/qwen2.5-vl-32b-instruct:free",
92
- "llama4:109b": "meta-llama/llama-4-scout:free",
93
- "llama4:400b": "meta-llama/llama-4-maverick:free",
94
- "deepseek-v3.1:671b": "deepseek/deepseek-chat-v3.1:free",
95
- "deepseek-r1:671b": "deepseek/deepseek-r1-0528:free",
96
- "gemini-2.0-flash": "google/gemini-2.0-flash-exp:free",
97
- "glm-4.5-air": "z-ai/glm-4.5-air:free",
98
- "grok-4-fast": "x-ai/grok-4-fast:free",
99
- "mai-ds-r1": "microsoft/mai-ds-r1:free",
100
- "llama3.3:70b": "meta-llama/llama-3.3-70b-instruct:free",
101
- "kimi-k2": "moonshotai/kimi-k2:free",
102
- "nemotron-nano:9b": "nvidia/nemotron-nano-9b-v2:free",
103
- "deepseek-r1-distill-llama:70b": "deepseek/deepseek-r1-distill-llama-70b:free",
104
- "gpt-oss:20b": "openai/gpt-oss-20b:free",
105
- "mistral-small3.2:24b": "mistralai/mistral-small-3.2-24b-instruct:free",
106
- "mistral-nemo:12b": "mistralai/mistral-nemo:free",
107
- "devstral-small": "mistralai/devstral-small-2505:free",
108
- "venice-uncensored:24b": "cognitivecomputations/dolphin-mistral-24b-venice-edition:free",
109
- "llama3.3:8b": "meta-llama/llama-3.3-8b-instruct:free",
110
- "llama3.1:405b": "meta-llama/llama-3.1-405b-instruct:free",
111
- "kimi-dev:72b": "moonshotai/kimi-dev-72b:free",
112
- "gemma3:27b": "google/gemma-3-27b-it:free",
113
- "qwen3-coder": "qwen/qwen3-coder:free",
114
- "qwen3:235b": "qwen/qwen3-235b-a22b:free",
115
- "qwen3:30b": "qwen/qwen3-30b-a3b:free",
116
- "qwen3:8b": "qwen/qwen3-8b:free",
117
- "qwen3:4b": "qwen/qwen3-4b:free",
118
- "qwen2.5vl:72b": "qwen/qwen2.5-vl-72b-instruct:free",
119
- "qwen2.5vl:32b": "qwen/qwen2.5-vl-32b-instruct:free",
120
- "qwen-2.5:72b": "qwen/qwen-2.5-72b-instruct:free",
121
- "hunyuan-a13b": "tencent/hunyuan-a13b-instruct:free"
122
- }
123
- },
124
- "groq": {
125
- "enabled": true,
126
- "type": "OpenAiProvider",
127
- "base_url": "https://api.groq.com/openai",
128
- "api_key": "$GROQ_API_KEY",
129
- "models": {
130
- "allam-2-7b": "allam-2-7b",
131
- "gemma2:9b": "gemma2-9b-it",
132
- "compound": "groq/compound",
133
- "compound-mini": "groq/compound-mini",
134
- "llama3.1:8b": "llama-3.1-8b-instant",
135
- "llama3.3:70b": "llama-3.3-70b-versatile",
136
- "llama4:109b": "meta-llama/llama-4-scout-17b-16e-instruct",
137
- "llama4:400b": "meta-llama/llama-4-maverick-17b-128e-instruct",
138
- "llama-guard-4:12b": "meta-llama/llama-guard-4-12b",
139
- "llama-prompt-guard2:22m": "meta-llama/llama-prompt-guard-2-22m",
140
- "llama-prompt-guard2:86m": "meta-llama/llama-prompt-guard-2-86m",
141
- "kimi-k2": "moonshotai/kimi-k2-instruct-0905",
142
- "gpt-oss:120b": "openai/gpt-oss-120b",
143
- "gpt-oss:20b": "openai/gpt-oss-20b",
144
- "qwen3:32b": "qwen/qwen3-32b"
145
- }
146
- },
147
- "google_free": {
148
- "enabled": true,
149
- "type": "GoogleProvider",
150
- "api_key": "$GOOGLE_FREE_API_KEY",
151
- "models": {
152
- "gemini-flash-latest": "gemini-flash-latest",
153
- "gemini-flash-lite-latest": "gemini-flash-lite-latest",
154
- "gemini-2.5-pro": "gemini-2.5-pro",
155
- "gemini-2.5-flash": "gemini-2.5-flash",
156
- "gemini-2.5-flash-lite": "gemini-2.5-flash-lite"
157
- },
158
- "safety_settings": [
159
- {
160
- "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
161
- "threshold": "BLOCK_ONLY_HIGH"
162
- }
163
- ],
164
- "thinking_config": {
165
- "thinkingBudget": 1024,
166
- "includeThoughts": true
167
- }
168
- },
169
- "codestral": {
170
- "enabled": true,
171
- "type": "OpenAiProvider",
172
- "base_url": "https://codestral.mistral.ai",
173
- "api_key": "$CODESTRAL_API_KEY",
174
- "models": {
175
- "codestral:22b": "codestral-latest"
176
- }
177
- },
178
- "ollama": {
179
- "enabled": false,
180
- "type": "OllamaProvider",
181
- "base_url": "http://localhost:11434",
182
- "models": {},
183
- "all_models": true
184
- },
185
- "openrouter": {
186
- "enabled": false,
187
- "type": "OpenAiProvider",
188
- "base_url": "https://openrouter.ai/api",
189
- "api_key": "$OPENROUTER_API_KEY",
190
- "models": {
191
- "llama3.1:70b": "meta-llama/llama-3.1-405b-instruct",
192
- "llama3.3:70b": "meta-llama/llama-3.3-70b-instruct",
193
- "phi-4:14b": "microsoft/phi-4",
194
- "codestral:22b": "mistralai/codestral-2508",
195
- "mistral-nemo:12b": "mistralai/mistral-nemo",
196
- "mixtral:8x22b": "mistralai/mixtral-8x22b-instruct",
197
- "mistral-small3.2:24b": "mistralai/mistral-small-3.2-24b-instruct",
198
- "nova-micro": "amazon/nova-micro-v1",
199
- "nova-lite": "amazon/nova-lite-v1",
200
- "nova-pro": "amazon/nova-pro-v1",
201
- "claude-opus-4-1": "anthropic/claude-opus-4.1",
202
- "claude-sonnet-4-5": "anthropic/claude-sonnet-4.5",
203
- "claude-sonnet-4-0": "anthropic/claude-sonnet-4",
204
- "gpt-5": "openai/gpt-5",
205
- "gpt-5-chat": "openai/gpt-5-chat",
206
- "gpt-5-mini": "openai/gpt-5-mini",
207
- "gpt-5-nano": "openai/gpt-5-nano",
208
- "gpt-5-codex": "openai/gpt-5-codex",
209
- "gpt-oss:120b": "openai/gpt-oss-120b",
210
- "gpt-oss:20b": "openai/gpt-oss-20b",
211
- "gpt-4o": "openai/gpt-4o",
212
- "gpt-4o-mini": "openai/gpt-4o-mini",
213
- "gpt-4.1": "openai/gpt-4.1",
214
- "gpt-4.1-mini": "openai/gpt-4.1-mini",
215
- "gpt-4.1-nano": "openai/gpt-4.1-nano",
216
- "o4-mini": "openai/o4-mini",
217
- "o4-mini-high": "openai/o4-mini-high",
218
- "grok-4": "x-ai/grok-4",
219
- "grok-4-fast": "x-ai/grok-4-fast",
220
- "grok-code-fast-1": "x-ai/grok-code-fast-1",
221
- "glm-4.6": "z-ai/glm-4.6",
222
- "glm-4.5v": "z-ai/glm-4.5v",
223
- "glm-4.5": "z-ai/glm-4.5",
224
- "glm-4.5-air": "z-ai/glm-4.5-air",
225
- "kimi-k2": "moonshotai/kimi-k2",
226
- "deepseek-v3.1:671b": "deepseek/deepseek-chat",
227
- "deepseek-v3.2-exp": "deepseek/deepseek-v3.2-exp",
228
- "deepseek-chat-v3.1:671b": "deepseek/deepseek-chat-v3.1:free",
229
- "deepseek-r1:671b": "deepseek/deepseek-r1",
230
- "deepseek-v3.1-terminus": "deepseek/deepseek-v3.1-terminus",
231
- "qwen3:8b": "qwen/qwen3-8b:free",
232
- "qwen3:30b": "qwen/qwen3-30b-a3b",
233
- "qwen3:32b": "qwen/qwen3-32b",
234
- "qwen3:235b": "qwen/qwen3-235b-a22b",
235
- "qwen3-coder": "qwen/qwen3-coder",
236
- "qwen3-coder-flash": "qwen/qwen3-coder-flash",
237
- "qwen3-coder-plus": "qwen/qwen3-coder-plus",
238
- "qwen3-coder:30b": "qwen/qwen3-coder-30b-a3b-instruct",
239
- "qwen3-max": "qwen/qwen3-max",
240
- "qwen3-vl:235b": "qwen/qwen3-vl-235b-a22b-instruct",
241
- "qwen3-vl-thinking:235b": "qwen/qwen3-vl-235b-a22b-thinking",
242
- "llama4:109b": "meta-llama/llama-4-scout",
243
- "llama4:400b": "meta-llama/llama-4-maverick"
244
- }
245
- },
246
- "google": {
247
- "enabled": false,
248
- "type": "GoogleProvider",
249
- "api_key": "$GOOGLE_API_KEY",
250
- "models": {
251
- "gemini-flash-latest": "gemini-flash-latest",
252
- "gemini-flash-lite-latest": "gemini-flash-lite-latest",
253
- "gemini-2.5-pro": "gemini-2.5-pro",
254
- "gemini-2.5-flash": "gemini-2.5-flash",
255
- "gemini-2.5-flash-lite": "gemini-2.5-flash-lite"
256
- },
257
- "safety_settings": [
258
- {
259
- "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
260
- "threshold": "BLOCK_ONLY_HIGH"
261
- }
262
- ],
263
- "thinking_config": {
264
- "thinkingBudget": 1024,
265
- "includeThoughts": true
266
- }
267
- },
268
- "anthropic": {
269
- "enabled": false,
270
- "type": "OpenAiProvider",
271
- "base_url": "https://api.anthropic.com",
272
- "api_key": "$ANTHROPIC_API_KEY",
273
- "models": {
274
- "claude-opus-4-1": "claude-opus-4-1",
275
- "claude-opus-4": "claude-opus-4",
276
- "claude-sonnet-4-5": "claude-sonnet-4-5",
277
- "claude-sonnet-4-0": "claude-sonnet-4-0",
278
- "claude-3-7-sonnet": "claude-3-7-sonnet-latest",
279
- "claude-3-5-haiku": "claude-3-5-haiku-latest",
280
- "claude-3-haiku": "claude-3-haiku-20240307"
281
- }
282
- },
283
- "openai": {
284
- "enabled": false,
285
- "type": "OpenAiProvider",
286
- "base_url": "https://api.openai.com",
287
- "api_key": "$OPENAI_API_KEY",
288
- "models": {
289
- "gpt-5-codex": "gpt-5-codex",
290
- "gpt-audio": "gpt-audio",
291
- "gpt-realtime": "gpt-realtime",
292
- "gpt-5-nano": "gpt-5-nano",
293
- "gpt-5-mini": "gpt-5-mini",
294
- "gpt-5": "gpt-5",
295
- "gpt-5-chat-latest": "gpt-5-chat-latest",
296
- "o4-mini-deep-research": "o4-mini-deep-research",
297
- "codex-mini-latest": "codex-mini-latest",
298
- "gpt-image-1": "gpt-image-1",
299
- "gpt-4.1-nano": "gpt-4.1-nano",
300
- "gpt-4.1-mini": "gpt-4.1-mini",
301
- "gpt-4.1": "gpt-4.1",
302
- "o4-mini": "o4-mini",
303
- "o3": "o3",
304
- "gpt-4o-mini-tts": "gpt-4o-mini-tts",
305
- "o1-pro": "o1-pro",
306
- "gpt-4o-mini-transcribe": "gpt-4o-mini-transcribe",
307
- "gpt-4o-transcribe": "gpt-4o-transcribe",
308
- "gpt-4o-mini-search-preview": "gpt-4o-mini-search-preview",
309
- "gpt-4o-search-preview": "gpt-4o-search-preview",
310
- "o3-mini": "o3-mini",
311
- "o1": "o1",
312
- "omni-moderation-latest": "omni-moderation-latest",
313
- "gpt-4o-realtime-preview": "gpt-4o-realtime-preview",
314
- "gpt-4o-audio-preview": "gpt-4o-audio-preview",
315
- "gpt-4o-mini-audio-preview": "gpt-4o-mini-audio-preview",
316
- "o1-mini": "o1-mini",
317
- "chatgpt-4o-latest": "chatgpt-4o-latest",
318
- "gpt-4o-mini": "gpt-4o-mini",
319
- "gpt-4o": "gpt-4o",
320
- "gpt-4-turbo": "gpt-4-turbo",
321
- "text-embedding-3-large": "text-embedding-3-large",
322
- "text-embedding-3-small": "text-embedding-3-small",
323
- "tts-1-hd": "tts-1-hd",
324
- "gpt-3.5-turbo-instruct": "gpt-3.5-turbo-instruct",
325
- "babbage-002": "babbage-002",
326
- "davinci-002": "davinci-002",
327
- "gpt-4": "gpt-4",
328
- "tts-1": "tts-1",
329
- "gpt-3.5-turbo": "gpt-3.5-turbo"
330
- }
331
- },
332
- "grok": {
333
- "enabled": false,
334
- "type": "OpenAiProvider",
335
- "base_url": "https://api.x.ai",
336
- "api_key": "$GROK_API_KEY",
337
- "models": {
338
- "grok-4": "grok-4-0709",
339
- "grok-code-fast-1": "grok-code-fast-1",
340
- "grok-4-fast-reasoning": "grok-4-fast-reasoning",
341
- "grok-4-fast-non-reasoning": "grok-4-fast-non-reasoning",
342
- "grok-4-0709": "grok-4-0709",
343
- "grok-3-mini": "grok-3-mini",
344
- "grok-3": "grok-3"
345
- }
346
- },
347
- "qwen": {
348
- "enabled": false,
349
- "type": "OpenAiProvider",
350
- "base_url": "https://dashscope-intl.aliyuncs.com/compatible-mode",
351
- "api_key": "$DASHSCOPE_API_KEY",
352
- "models": {
353
- "qwen2.5vl": "qwen2.5-vl-7b-instruct",
354
- "qwen3-max": "qwen3-max",
355
- "qwen-max": "qwen-max",
356
- "qwen-plus": "qwen-plus",
357
- "qwen-flash": "qwen-flash",
358
- "qwq-plus": "qwq-plus",
359
- "qwen-turbo": "qwen-turbo",
360
- "qvq-max": "qvq-max",
361
- "qwen-vl-max": "qwen-vl-max",
362
- "qwen3-vl-plus": "qwen3-vl-plus",
363
- "qwen-vl-plus": "qwen-vl-plus",
364
- "qwen3-omni-flash": "qwen3-omni-flash",
365
- "qwen-omni-turbo": "qwen-omni-turbo",
366
- "qwen3-omni-flash-realtime": "qwen3-omni-flash-realtime",
367
- "qwen-omni-turbo-realtime": "qwen-omni-turbo-realtime",
368
- "qwen3-omni-captioner:30b": "qwen3-omni-30b-a3b-captioner",
369
- "qwen-vl-ocr": "qwen-vl-ocr",
370
- "qwen3-asr-flash": "qwen3-asr-flash",
371
- "qwen3-coder-plus": "qwen3-coder-plus",
372
- "qwen3-coder-flash": "qwen3-coder-flash",
373
- "qwen-plus-character-ja": "qwen-plus-character-ja",
374
- "qwen3-next-thinking:80b": "qwen3-next-80b-a3b-thinking",
375
- "qwen3-next:80b": "qwen3-next-80b-a3b-instruct",
376
- "qwen3:235b": "qwen3-235b-a22b",
377
- "qwen3:32b": "qwen3-32b",
378
- "qwen3:30b": "qwen3-30b-a3b",
379
- "qwen3:14b": "qwen3-14b",
380
- "qwen3:8b": "qwen3-8b",
381
- "qwen3:4b": "qwen3-4b",
382
- "qwen3:1.7b": "qwen3-1.7b",
383
- "qwen3:0.6b": "qwen3-0.6b",
384
- "qwen2.5:72b": "qwen2.5-72b-instruct",
385
- "qwen2.5:32b": "qwen2.5-32b-instruct",
386
- "qwen2.5:14b": "qwen2.5-14b-instruct",
387
- "qwen2.5:7b": "qwen2.5-7b-instruct",
388
- "qwen3-coder": "qwen3-coder-480b-a35b-instruct",
389
- "qwen3-coder:30b": "qwen3-coder-30b-a3b-instruct",
390
- "qwen3-vl-thinking:235b": "qwen3-vl-235b-a22b-thinking",
391
- "qwen3-vl:235b": "qwen3-vl-235b-a22b-instruct",
392
- "qwen2.5-vl:72b": "qwen2.5-vl-72b-instruct",
393
- "qwen2.5-vl:32b": "qwen2.5-vl-32b-instruct",
394
- "qwen2.5-vl:7b": "qwen2.5-vl-7b-instruct",
395
- "qwen2.5-vl:3b": "qwen2.5-vl-3b-instruct",
396
- "qwen2.5-omni:7b": "qwen2.5-omni-7b"
397
- },
398
- "enable_thinking": false
399
- },
400
- "z.ai": {
401
- "enabled": false,
402
- "type": "OpenAiProvider",
403
- "base_url": "https://api.z.ai/api/paas/v4",
404
- "api_key": "$ZAI_API_KEY",
405
- "models": {
406
- "glm-4.6": "glm-4.6",
407
- "glm-4.5": "glm-4.5",
408
- "glm-4.5-air": "glm-4.5-air",
409
- "glm-4.5-x": "glm-4.5-x",
410
- "glm-4.5-airx": "glm-4.5-airx",
411
- "glm-4.5-flash": "glm-4.5-flash",
412
- "glm-4:32b": "glm-4-32b-0414-128k"
413
- },
414
- "temperature": 0.7
415
- },
416
- "mistral": {
417
- "enabled": false,
418
- "type": "OpenAiProvider",
419
- "base_url": "https://api.mistral.ai",
420
- "api_key": "$MISTRAL_API_KEY",
421
- "models": {
422
- "mistral-medium": "mistral-medium-latest",
423
- "magistral-medium": "magistral-medium-latest",
424
- "devstral-medium": "devstral-medium-2507",
425
- "codestral:22b": "codestral-latest",
426
- "mistral-ocr": "mistral-ocr-latest",
427
- "mistral-small3.2:24b": "mistral-small-latest",
428
- "magistral-small": "magistral-small-latest",
429
- "devstral-small": "devstral-small-2507",
430
- "voxtral-small": "voxtral-small-latest",
431
- "voxtral-mini": "voxtral-mini-latest",
432
- "codestral-embed": "codestral-embed-2505",
433
- "mistral-embed": "mistral-embed",
434
- "mistral-large:123b": "mistral-large-latest",
435
- "pixtral-large:124b": "pixtral-large-latest",
436
- "pixtral:12b": "pixtral-12b",
437
- "mistral-nemo:12b": "open-mistral-nemo",
438
- "mistral-saba": "mistral-saba-latest",
439
- "mistral:7b": "open-mistral-7b",
440
- "mixtral:8x7b": "open-mixtral-8x7b",
441
- "mixtral:8x22b": "open-mixtral-8x22b",
442
- "ministral:8b": "ministral-8b-latest",
443
- "ministral:3b": "ministral-3b-latest"
444
- }
445
- }
446
- }
447
- }
@@ -1 +0,0 @@
1
- aiohttp
@@ -1,20 +0,0 @@
1
- import Sidebar from "./Sidebar.mjs"
2
-
3
- export default {
4
- components: {
5
- Sidebar,
6
- },
7
- template: `
8
- <div class="flex h-screen bg-white">
9
- <!-- Sidebar -->
10
- <div class="w-72 xl:w-80 flex-shrink-0">
11
- <Sidebar />
12
- </div>
13
-
14
- <!-- Main Area -->
15
- <div class="flex-1 flex flex-col">
16
- <RouterView />
17
- </div>
18
- </div>
19
- `,
20
- }