llms-py 2.0.35__tar.gz → 3.0.0b1__tar.gz

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 (67) hide show
  1. {llms_py-2.0.35 → llms_py-3.0.0b1}/PKG-INFO +1 -1
  2. llms_py-3.0.0b1/llms/llms.json +336 -0
  3. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/main.py +885 -181
  4. llms_py-3.0.0b1/llms/providers.json +1 -0
  5. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/ChatPrompt.mjs +138 -122
  6. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/Main.mjs +162 -112
  7. llms_py-3.0.0b1/llms/ui/ModelSelector.mjs +693 -0
  8. llms_py-3.0.0b1/llms/ui/ProviderIcon.mjs +36 -0
  9. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/ProviderStatus.mjs +2 -2
  10. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/ai.mjs +10 -10
  11. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/app.css +369 -83
  12. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/markdown.mjs +8 -5
  13. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/threadStore.mjs +54 -45
  14. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/utils.mjs +100 -28
  15. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms_py.egg-info/PKG-INFO +1 -1
  16. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms_py.egg-info/SOURCES.txt +3 -0
  17. {llms_py-2.0.35 → llms_py-3.0.0b1}/pyproject.toml +3 -3
  18. {llms_py-2.0.35 → llms_py-3.0.0b1}/setup.py +2 -1
  19. llms_py-3.0.0b1/tests/test_provider_checks.py +150 -0
  20. llms_py-3.0.0b1/tests/test_provider_config.py +232 -0
  21. llms_py-2.0.35/llms/llms.json +0 -1214
  22. llms_py-2.0.35/llms/ui/ModelSelector.mjs +0 -78
  23. llms_py-2.0.35/llms/ui/ProviderIcon.mjs +0 -30
  24. {llms_py-2.0.35 → llms_py-3.0.0b1}/LICENSE +0 -0
  25. {llms_py-2.0.35 → llms_py-3.0.0b1}/MANIFEST.in +0 -0
  26. {llms_py-2.0.35 → llms_py-3.0.0b1}/README.md +0 -0
  27. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/__init__.py +0 -0
  28. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/__main__.py +0 -0
  29. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/index.html +0 -0
  30. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/Analytics.mjs +0 -0
  31. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/App.mjs +0 -0
  32. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/Avatar.mjs +0 -0
  33. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/Brand.mjs +0 -0
  34. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/OAuthSignIn.mjs +0 -0
  35. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/Recents.mjs +0 -0
  36. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/SettingsDialog.mjs +0 -0
  37. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/Sidebar.mjs +0 -0
  38. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/SignIn.mjs +0 -0
  39. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/SystemPromptEditor.mjs +0 -0
  40. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/SystemPromptSelector.mjs +0 -0
  41. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/Welcome.mjs +0 -0
  42. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/fav.svg +0 -0
  43. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/lib/chart.js +0 -0
  44. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/lib/charts.mjs +0 -0
  45. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/lib/color.js +0 -0
  46. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/lib/highlight.min.mjs +0 -0
  47. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/lib/idb.min.mjs +0 -0
  48. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/lib/marked.min.mjs +0 -0
  49. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/lib/servicestack-client.mjs +0 -0
  50. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/lib/servicestack-vue.mjs +0 -0
  51. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/lib/vue-router.min.mjs +0 -0
  52. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/lib/vue.min.mjs +0 -0
  53. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/lib/vue.mjs +0 -0
  54. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/tailwind.input.css +0 -0
  55. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui/typography.css +0 -0
  56. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms/ui.json +0 -0
  57. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms_py.egg-info/dependency_links.txt +0 -0
  58. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms_py.egg-info/entry_points.txt +0 -0
  59. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms_py.egg-info/not-zip-safe +0 -0
  60. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms_py.egg-info/requires.txt +0 -0
  61. {llms_py-2.0.35 → llms_py-3.0.0b1}/llms_py.egg-info/top_level.txt +0 -0
  62. {llms_py-2.0.35 → llms_py-3.0.0b1}/requirements.txt +0 -0
  63. {llms_py-2.0.35 → llms_py-3.0.0b1}/setup.cfg +0 -0
  64. {llms_py-2.0.35 → llms_py-3.0.0b1}/tests/test_async.py +0 -0
  65. {llms_py-2.0.35 → llms_py-3.0.0b1}/tests/test_config.py +0 -0
  66. {llms_py-2.0.35 → llms_py-3.0.0b1}/tests/test_integration.py +0 -0
  67. {llms_py-2.0.35 → llms_py-3.0.0b1}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: llms-py
3
- Version: 2.0.35
3
+ Version: 3.0.0b1
4
4
  Summary: A lightweight CLI tool and OpenAI-compatible server for querying multiple Large Language Model (LLM) providers
5
5
  Home-page: https://github.com/ServiceStack/llms
6
6
  Author: ServiceStack
@@ -0,0 +1,336 @@
1
+ {
2
+ "version": 3,
3
+ "auth": {
4
+ "enabled": false,
5
+ "github": {
6
+ "client_id": "GITHUB_CLIENT_ID",
7
+ "client_secret": "GITHUB_CLIENT_SECRET",
8
+ "redirect_uri": "http://localhost:8000/auth/github/callback",
9
+ "restrict_to": "GITHUB_USERS"
10
+ }
11
+ },
12
+ "defaults": {
13
+ "headers": {
14
+ "Content-Type": "application/json",
15
+ "User-Agent": "llmspy.org/1.0"
16
+ },
17
+ "text": {
18
+ "model": "kimi-k2",
19
+ "messages": [
20
+ {
21
+ "role": "user",
22
+ "content": [
23
+ {
24
+ "type": "text",
25
+ "text": ""
26
+ }
27
+ ]
28
+ }
29
+ ]
30
+ },
31
+ "image": {
32
+ "model": "qwen2.5vl",
33
+ "messages": [
34
+ {
35
+ "role": "user",
36
+ "content": [
37
+ {
38
+ "type": "image_url",
39
+ "image_url": {
40
+ "url": ""
41
+ }
42
+ },
43
+ {
44
+ "type": "text",
45
+ "text": "Describe the key features of the input image"
46
+ }
47
+ ]
48
+ }
49
+ ]
50
+ },
51
+ "audio": {
52
+ "model": "gpt-4o-audio-preview",
53
+ "messages": [
54
+ {
55
+ "role": "user",
56
+ "content": [
57
+ {
58
+ "type": "input_audio",
59
+ "input_audio": {
60
+ "data": "",
61
+ "format": "mp3"
62
+ }
63
+ },
64
+ {
65
+ "type": "text",
66
+ "text": "Please transcribe and summarize this audio file"
67
+ }
68
+ ]
69
+ }
70
+ ]
71
+ },
72
+ "file": {
73
+ "model": "qwen2.5vl",
74
+ "messages": [
75
+ {
76
+ "role": "user",
77
+ "content": [
78
+ {
79
+ "type": "file",
80
+ "file": {
81
+ "filename": "",
82
+ "file_data": ""
83
+ }
84
+ },
85
+ {
86
+ "type": "text",
87
+ "text": "Please summarize this document"
88
+ }
89
+ ]
90
+ }
91
+ ]
92
+ },
93
+ "check": {
94
+ "messages": [
95
+ {
96
+ "role": "user",
97
+ "content": [
98
+ {
99
+ "type": "text",
100
+ "text": "1+1="
101
+ }
102
+ ]
103
+ }
104
+ ],
105
+ "max_completion_tokens": 16,
106
+ "stream": false
107
+ }
108
+ },
109
+ "limits": {
110
+ "client_max_size": 20971520
111
+ },
112
+ "convert": {
113
+ "image": {
114
+ "max_size": "1536x1024",
115
+ "max_length": 1572864
116
+ }
117
+ },
118
+ "providers": {
119
+ "groq": {
120
+ "enabled": true
121
+ },
122
+ "codestral": {
123
+ "enabled": true,
124
+ "id": "codestral",
125
+ "npm": "codestral",
126
+ "api": "https://codestral.mistral.ai/v1",
127
+ "env": [
128
+ "CODESTRAL_API_KEY"
129
+ ],
130
+ "models": {
131
+ "codestral-latest": {
132
+ "id": "codestral-latest",
133
+ "name": "Codestral",
134
+ "attachment": false,
135
+ "reasoning": false,
136
+ "tool_call": true,
137
+ "temperature": true,
138
+ "knowledge": "2024-10",
139
+ "release_date": "2024-05-29",
140
+ "last_updated": "2025-01-04",
141
+ "modalities": {
142
+ "input": [
143
+ "text"
144
+ ],
145
+ "output": [
146
+ "text"
147
+ ]
148
+ },
149
+ "open_weights": true,
150
+ "cost": {
151
+ "input": 0.0,
152
+ "output": 0.0
153
+ },
154
+ "limit": {
155
+ "context": 256000,
156
+ "output": 4096
157
+ }
158
+ }
159
+ },
160
+ "check": {
161
+ "messages": [
162
+ {
163
+ "role": "user",
164
+ "content": [
165
+ {
166
+ "type": "text",
167
+ "text": "1+1="
168
+ }
169
+ ]
170
+ }
171
+ ],
172
+ "stream": false
173
+ }
174
+ },
175
+ "github-copilot": {
176
+ "enabled": false
177
+ },
178
+ "github-models": {
179
+ "enabled": false,
180
+ "check": {
181
+ "messages": [
182
+ {
183
+ "role": "user",
184
+ "content": [
185
+ {
186
+ "type": "text",
187
+ "text": "1+1="
188
+ }
189
+ ]
190
+ }
191
+ ],
192
+ "stream": false
193
+ }
194
+ },
195
+ "zai-coding-plan": {
196
+ "enabled": true,
197
+ "temperature": 0.7
198
+ },
199
+ "minimax": {
200
+ "enabled": true,
201
+ "temperature": 1.0
202
+ },
203
+ "openrouter_free": {
204
+ "enabled": true,
205
+ "id": "openrouter",
206
+ "include_models": ":free$"
207
+ },
208
+ "ollama": {
209
+ "enabled": true,
210
+ "id": "ollama",
211
+ "npm": "ollama",
212
+ "api": "http://localhost:11434"
213
+ },
214
+ "lmstudio": {
215
+ "enabled": true,
216
+ "npm": "lmstudio",
217
+ "api": "http://127.0.0.1:1234/v1",
218
+ "models": {}
219
+ },
220
+ "google": {
221
+ "enabled": true,
222
+ "map_models": {
223
+ "gemini-flash-latest": "gemini-flash-latest",
224
+ "gemini-flash-lite-latest": "gemini-flash-lite-latest",
225
+ "gemini-2.5-pro": "gemini-2.5-pro",
226
+ "gemini-2.5-flash": "gemini-2.5-flash",
227
+ "gemini-2.5-flash-lite": "gemini-2.5-flash-lite"
228
+ },
229
+ "safety_settings": [
230
+ {
231
+ "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
232
+ "threshold": "BLOCK_ONLY_HIGH"
233
+ }
234
+ ],
235
+ "thinking_config": {
236
+ "thinkingBudget": 1024,
237
+ "includeThoughts": true
238
+ },
239
+ "check": {
240
+ "messages": [
241
+ {
242
+ "role": "user",
243
+ "content": [
244
+ {
245
+ "type": "text",
246
+ "text": "1+1="
247
+ }
248
+ ]
249
+ }
250
+ ],
251
+ "max_completion_tokens": 512,
252
+ "reasoning": {
253
+ "max_tokens": 128,
254
+ "reasoning_effort": "low"
255
+ },
256
+ "stream": false
257
+ }
258
+ },
259
+ "anthropic": {
260
+ "enabled": true,
261
+ "check": {
262
+ "messages": [
263
+ {
264
+ "role": "user",
265
+ "content": [
266
+ {
267
+ "type": "text",
268
+ "text": "1+1="
269
+ }
270
+ ]
271
+ }
272
+ ],
273
+ "max_completion_tokens": 512,
274
+ "reasoning": {
275
+ "max_tokens": 128,
276
+ "reasoning_effort": "low"
277
+ },
278
+ "stream": false
279
+ }
280
+ },
281
+ "openai": {
282
+ "enabled": true
283
+ },
284
+ "xai": {
285
+ "enabled": true
286
+ },
287
+ "alibaba": {
288
+ "enabled": true,
289
+ "enable_thinking": false
290
+ },
291
+ "zai": {
292
+ "enabled": true,
293
+ "temperature": 0.7
294
+ },
295
+ "mistral": {
296
+ "enabled": true,
297
+ "check": {
298
+ "messages": [
299
+ {
300
+ "role": "user",
301
+ "content": [
302
+ {
303
+ "type": "text",
304
+ "text": "1+1="
305
+ }
306
+ ]
307
+ }
308
+ ],
309
+ "stream": false
310
+ }
311
+ },
312
+ "chutes": {
313
+ "enabled": true
314
+ },
315
+ "deepseek": {
316
+ "enabled": true
317
+ },
318
+ "moonshotai": {
319
+ "enabled": false
320
+ },
321
+ "nvidia": {
322
+ "enabled": true
323
+ },
324
+ "huggingface": {
325
+ "enabled": true
326
+ },
327
+ "fireworks-ai": {
328
+ "enabled": false
329
+ },
330
+ "openrouter": {
331
+ "enabled": true,
332
+ "id": "openrouter",
333
+ "exclude_models": ":free$"
334
+ }
335
+ }
336
+ }