ruby_llm-providers-lms 0.1.0 → 0.2.0

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 (51) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +121 -0
  3. data/README.md +514 -24
  4. data/lib/ruby_llm/providers/lms/anthropic_messages.rb +28 -0
  5. data/lib/ruby_llm/providers/lms/connection_guard.rb +27 -0
  6. data/lib/ruby_llm/providers/lms/endpoints.rb +18 -0
  7. data/lib/ruby_llm/providers/lms/model_management.rb +59 -0
  8. data/lib/ruby_llm/providers/lms/models.rb +44 -12
  9. data/lib/ruby_llm/providers/lms/native_chat/conversation.rb +93 -0
  10. data/lib/ruby_llm/providers/lms/native_chat/streaming.rb +67 -0
  11. data/lib/ruby_llm/providers/lms/native_chat.rb +134 -0
  12. data/lib/ruby_llm/providers/lms/native_v1.rb +97 -0
  13. data/lib/ruby_llm/providers/lms/responses.rb +47 -0
  14. data/lib/ruby_llm/providers/lms/version.rb +15 -0
  15. data/lib/ruby_llm/providers/lms.rb +57 -1
  16. data/models.json +69 -454
  17. metadata +14 -37
  18. data/.flayignore +0 -1
  19. data/.github/workflows/ci.yml +0 -32
  20. data/.github/workflows/gitleaks.yml +0 -22
  21. data/.github/workflows/release.yml +0 -36
  22. data/.overcommit.yml +0 -31
  23. data/.rspec +0 -2
  24. data/.rubocop.yml +0 -29
  25. data/Archspec.rb +0 -14
  26. data/spec/fixtures/vcr_cassettes/rubyllm_chat_lms_openai_gpt_oss_20b_can_handle_a_multi_turn_conversation.yml +0 -92
  27. data/spec/fixtures/vcr_cassettes/rubyllm_chat_lms_openai_gpt_oss_20b_can_have_a_basic_conversation.yml +0 -45
  28. data/spec/fixtures/vcr_cassettes/rubyllm_chat_lms_openai_gpt_oss_20b_can_use_tools.yml +0 -129
  29. data/spec/fixtures/vcr_cassettes/rubyllm_chat_lms_openai_gpt_oss_20b_returns_the_raw_response.yml +0 -73
  30. data/spec/fixtures/vcr_cassettes/rubyllm_chat_lms_openai_gpt_oss_20b_supports_streaming_responses.yml +0 -81
  31. data/spec/fixtures/vcr_cassettes/rubyllm_chat_lms_qwen3_0_6b_bible_assistant_can_have_a_basic_conversation.yml +0 -73
  32. data/spec/fixtures/vcr_cassettes/rubyllm_chat_lms_qwen3_0_6b_bible_assistant_returns_structured_output.yml +0 -73
  33. data/spec/fixtures/vcr_cassettes/rubyllm_chat_lms_qwen3_0_6b_bible_assistant_returns_the_raw_response.yml +0 -73
  34. data/spec/fixtures/vcr_cassettes/rubyllm_embedding_lms_text_embedding_nomic_embed_text_v1_5_embeds_one_text.yml +0 -828
  35. data/spec/fixtures/vcr_cassettes/rubyllm_embedding_lms_text_embedding_nomic_embed_text_v1_5_embeds_several_texts.yml +0 -2375
  36. data/spec/ruby_llm/chat_schema_spec.rb +0 -30
  37. data/spec/ruby_llm/chat_spec.rb +0 -35
  38. data/spec/ruby_llm/chat_streaming_spec.rb +0 -22
  39. data/spec/ruby_llm/chat_tools_spec.rb +0 -30
  40. data/spec/ruby_llm/embedding_spec.rb +0 -49
  41. data/spec/ruby_llm/image_spec.rb +0 -23
  42. data/spec/ruby_llm/models_spec.rb +0 -11
  43. data/spec/ruby_llm/moderation_spec.rb +0 -22
  44. data/spec/ruby_llm/providers/lms_spec.rb +0 -149
  45. data/spec/ruby_llm/rerank_spec.rb +0 -23
  46. data/spec/ruby_llm/speech_spec.rb +0 -25
  47. data/spec/ruby_llm/video_spec.rb +0 -27
  48. data/spec/spec_helper.rb +0 -26
  49. data/spec/support/models.rb +0 -29
  50. data/spec/support/rubyllm_configuration.rb +0 -14
  51. data/spec/support/vcr_configuration.rb +0 -16
@@ -1,7 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'ruby_llm'
4
+ require 'ruby_llm/providers/lms/version'
5
+ require 'ruby_llm/providers/lms/endpoints'
6
+ require 'ruby_llm/providers/lms/connection_guard'
7
+ require 'ruby_llm/providers/lms/native_v1'
4
8
  require 'ruby_llm/providers/lms/models'
9
+ require 'ruby_llm/providers/lms/responses'
10
+ require 'ruby_llm/providers/lms/anthropic_messages'
11
+ require 'ruby_llm/providers/lms/model_management'
12
+ require 'ruby_llm/providers/lms/native_chat/conversation'
13
+ require 'ruby_llm/providers/lms/native_chat/streaming'
14
+ require 'ruby_llm/providers/lms/native_chat'
5
15
 
6
16
  module RubyLLM
7
17
  module Providers
@@ -17,8 +27,35 @@ module RubyLLM
17
27
  include LMS::Models
18
28
  end
19
29
 
30
+ # LM Studio's native v0 chat endpoint. Request and response shapes
31
+ # match the OpenAI-compatible endpoint exactly — streaming and tool
32
+ # calls included — but the response says more about the inference:
33
+ # it fills in the `stats` block that /v1/chat/completions leaves
34
+ # empty (tokens per second, time to first token, generation time,
35
+ # stop reason) and adds `model_info` and `runtime`. RubyLLM has no
36
+ # field for any of it, so it arrives through Message#raw:
37
+ #
38
+ # RubyLLM.configure { |config| config.lms_protocol = :native_v0 }
39
+ # response = RubyLLM.chat(model: 'qwen/qwen3-4b', provider: :lms).ask('Hello')
40
+ # response.raw.body['stats']['tokens_per_second'] # => 251.5
41
+ class NativeChatCompletions < ChatCompletions
42
+ def completion_url
43
+ '../api/v0/chat/completions'
44
+ end
45
+ end
46
+
20
47
  protocol :chat_completions, ChatCompletions
21
- protocol :responses, Protocols::Responses
48
+ protocol :responses, Responses
49
+ protocol :native_chat, NativeChat
50
+ protocol :native_v0, NativeChatCompletions
51
+ protocol :anthropic, AnthropicMessages
52
+
53
+ include ModelManagement
54
+
55
+ def initialize(config)
56
+ super
57
+ @connection = ConnectionGuard.new(@connection)
58
+ end
22
59
 
23
60
  def api_base
24
61
  @config.lms_api_base || DEFAULT_API_BASE
@@ -30,6 +67,19 @@ module RubyLLM
30
67
  { 'Authorization' => "Bearer #{@config.lms_api_key}" }
31
68
  end
32
69
 
70
+ # LM Studio serves POST /v1/embeddings on the same port whichever chat
71
+ # dialect is in effect, so lms_protocol has no say over where an
72
+ # embedding goes. RubyLLM would otherwise resolve embeddings to the
73
+ # configured chat protocol — and :anthropic refuses them outright
74
+ # rather than falling back to the OpenAI endpoint.
75
+ def embed(text, model:, dimensions:, **)
76
+ embedding_protocol(model).embed(text, model: model_id_for(model), dimensions: dimensions, **)
77
+ end
78
+
79
+ def render_embedding(text, model:, dimensions: nil) # :nodoc:
80
+ embedding_protocol(model).render_embedding(text, model: model_id_for(model), dimensions: dimensions)
81
+ end
82
+
33
83
  class << self
34
84
  def display_name
35
85
  'LM Studio'
@@ -47,6 +97,12 @@ module RubyLLM
47
97
  true
48
98
  end
49
99
  end
100
+
101
+ private
102
+
103
+ def embedding_protocol(model)
104
+ protocols.fetch(:chat_completions).new(self, model)
105
+ end
50
106
  end
51
107
  end
52
108
  end
data/models.json CHANGED
@@ -1,7 +1,7 @@
1
1
  [
2
2
  {
3
3
  "id": "qwen/qwen3.8-27b",
4
- "name": "qwen/qwen3.8-27b",
4
+ "name": "Qwen3.8 27B",
5
5
  "provider": "lms",
6
6
  "family": "qwen35",
7
7
  "created_at": null,
@@ -21,7 +21,9 @@
21
21
  "streaming",
22
22
  "structured_output",
23
23
  "function_calling",
24
- "vision"
24
+ "tool_choice",
25
+ "vision",
26
+ "reasoning"
25
27
  ],
26
28
  "pricing": {},
27
29
  "metadata": {
@@ -30,12 +32,35 @@
30
32
  "arch": "qwen35",
31
33
  "compatibility_type": "gguf",
32
34
  "quantization": "Q4_K_M",
33
- "state": "not-loaded"
35
+ "bits_per_weight": 4,
36
+ "state": "not-loaded",
37
+ "display_name": "Qwen3.8 27B",
38
+ "params_string": "27B",
39
+ "size_bytes": 17742039110,
40
+ "variants": [
41
+ "qwen/qwen3.8-27b@q4_k_m"
42
+ ],
43
+ "selected_variant": "qwen/qwen3.8-27b@q4_k_m",
44
+ "reasoning_options": [
45
+ {
46
+ "type": "effort",
47
+ "values": [
48
+ "none",
49
+ "low",
50
+ "medium",
51
+ "xhigh"
52
+ ],
53
+ "default": "xhigh"
54
+ },
55
+ {
56
+ "type": "toggle"
57
+ }
58
+ ]
34
59
  }
35
60
  },
36
61
  {
37
62
  "id": "unlimited-ocr",
38
- "name": "unlimited-ocr",
63
+ "name": "Unlimited OCR",
39
64
  "provider": "lms",
40
65
  "family": "deepseek2-ocr",
41
66
  "created_at": null,
@@ -63,12 +88,16 @@
63
88
  "arch": "deepseek2-ocr",
64
89
  "compatibility_type": "gguf",
65
90
  "quantization": "IQ2_M",
66
- "state": "not-loaded"
91
+ "bits_per_weight": 2,
92
+ "state": "not-loaded",
93
+ "display_name": "Unlimited OCR",
94
+ "params_string": "64x550M",
95
+ "size_bytes": 2044024672
67
96
  }
68
97
  },
69
98
  {
70
99
  "id": "kimi-k2.7-code",
71
- "name": "kimi-k2.7-code",
100
+ "name": "Kimi K2.7 Code UD",
72
101
  "provider": "lms",
73
102
  "family": "deepseek2",
74
103
  "created_at": null,
@@ -96,299 +125,18 @@
96
125
  "arch": "deepseek2",
97
126
  "compatibility_type": "gguf",
98
127
  "quantization": "IQ1_M",
99
- "state": "not-loaded"
100
- }
101
- },
102
- {
103
- "id": "qwen/qwen3.6-35b-a3b",
104
- "name": "qwen/qwen3.6-35b-a3b",
105
- "provider": "lms",
106
- "family": "qwen3_5_moe",
107
- "created_at": null,
108
- "context_window": 262144,
109
- "max_output_tokens": null,
110
- "knowledge_cutoff": null,
111
- "modalities": {
112
- "input": [
113
- "text",
114
- "image"
115
- ],
116
- "output": [
117
- "text"
118
- ]
119
- },
120
- "capabilities": [
121
- "streaming",
122
- "structured_output",
123
- "function_calling",
124
- "vision"
125
- ],
126
- "pricing": {},
127
- "metadata": {
128
- "owned_by": "organization_owner",
129
- "publisher": "qwen",
130
- "arch": "qwen3_5_moe",
131
- "compatibility_type": "mlx",
132
- "quantization": "4bit",
133
- "state": "not-loaded"
134
- }
135
- },
136
- {
137
- "id": "bibleai",
138
- "name": "bibleai",
139
- "provider": "lms",
140
- "family": "gemma4",
141
- "created_at": null,
142
- "context_window": 131072,
143
- "max_output_tokens": null,
144
- "knowledge_cutoff": null,
145
- "modalities": {
146
- "input": [
147
- "text"
148
- ],
149
- "output": [
150
- "text"
151
- ]
152
- },
153
- "capabilities": [
154
- "streaming",
155
- "structured_output"
156
- ],
157
- "pricing": {},
158
- "metadata": {
159
- "owned_by": "organization_owner",
160
- "publisher": "rhemabible",
161
- "arch": "gemma4",
162
- "compatibility_type": "gguf",
163
- "quantization": "Q8_0",
164
- "state": "not-loaded"
165
- }
166
- },
167
- {
168
- "id": "bible-study-phi3-mini",
169
- "name": "bible-study-phi3-mini",
170
- "provider": "lms",
171
- "family": "llama",
172
- "created_at": null,
173
- "context_window": 4096,
174
- "max_output_tokens": null,
175
- "knowledge_cutoff": null,
176
- "modalities": {
177
- "input": [
178
- "text"
179
- ],
180
- "output": [
181
- "text"
182
- ]
183
- },
184
- "capabilities": [
185
- "streaming",
186
- "structured_output"
187
- ],
188
- "pricing": {},
189
- "metadata": {
190
- "owned_by": "organization_owner",
191
- "publisher": "Phora68",
192
- "arch": "llama",
193
- "compatibility_type": "gguf",
194
- "quantization": "Q4_K_M",
195
- "state": "not-loaded"
196
- }
197
- },
198
- {
199
- "id": "qwen3-0.6b-bible-assistant",
200
- "name": "qwen3-0.6b-bible-assistant",
201
- "provider": "lms",
202
- "family": "qwen3",
203
- "created_at": null,
204
- "context_window": 40960,
205
- "max_output_tokens": null,
206
- "knowledge_cutoff": null,
207
- "modalities": {
208
- "input": [
209
- "text"
210
- ],
211
- "output": [
212
- "text"
213
- ]
214
- },
215
- "capabilities": [
216
- "streaming",
217
- "structured_output",
218
- "function_calling"
219
- ],
220
- "pricing": {},
221
- "metadata": {
222
- "owned_by": "organization_owner",
223
- "publisher": "juvereturn",
224
- "arch": "qwen3",
225
- "compatibility_type": "gguf",
226
- "quantization": "Q4_K_M",
227
- "state": "not-loaded"
228
- }
229
- },
230
- {
231
- "id": "kimi-k2.6-control-vectors",
232
- "name": "kimi-k2.6-control-vectors",
233
- "provider": "lms",
234
- "family": "controlvector",
235
- "created_at": null,
236
- "context_window": null,
237
- "max_output_tokens": null,
238
- "knowledge_cutoff": null,
239
- "modalities": {
240
- "input": [
241
- "text"
242
- ],
243
- "output": [
244
- "text"
245
- ]
246
- },
247
- "capabilities": [
248
- "streaming",
249
- "structured_output"
250
- ],
251
- "pricing": {},
252
- "metadata": {
253
- "owned_by": "organization_owner",
254
- "publisher": "gghfez",
255
- "arch": "controlvector",
256
- "compatibility_type": "gguf",
257
- "state": "not-loaded"
258
- }
259
- },
260
- {
261
- "id": "eloyon/christian-bible-expert-v2.0-24b",
262
- "name": "eloyon/christian-bible-expert-v2.0-24b",
263
- "provider": "lms",
264
- "family": "llama",
265
- "created_at": null,
266
- "context_window": 32768,
267
- "max_output_tokens": null,
268
- "knowledge_cutoff": null,
269
- "modalities": {
270
- "input": [
271
- "text"
272
- ],
273
- "output": [
274
- "text"
275
- ]
276
- },
277
- "capabilities": [
278
- "streaming",
279
- "structured_output"
280
- ],
281
- "pricing": {},
282
- "metadata": {
283
- "owned_by": "organization_owner",
284
- "publisher": "EloyOn",
285
- "arch": "llama",
286
- "compatibility_type": "gguf",
287
- "quantization": "Q5_0",
288
- "state": "not-loaded"
289
- }
290
- },
291
- {
292
- "id": "eloyon/baptist-christian-bible-expert-v2.0-22b",
293
- "name": "eloyon/baptist-christian-bible-expert-v2.0-22b",
294
- "provider": "lms",
295
- "family": "llama",
296
- "created_at": null,
297
- "context_window": 32768,
298
- "max_output_tokens": null,
299
- "knowledge_cutoff": null,
300
- "modalities": {
301
- "input": [
302
- "text"
303
- ],
304
- "output": [
305
- "text"
306
- ]
307
- },
308
- "capabilities": [
309
- "streaming",
310
- "structured_output",
311
- "function_calling"
312
- ],
313
- "pricing": {},
314
- "metadata": {
315
- "owned_by": "organization_owner",
316
- "publisher": "EloyOn",
317
- "arch": "llama",
318
- "compatibility_type": "gguf",
319
- "quantization": "Q5_0",
320
- "state": "not-loaded"
321
- }
322
- },
323
- {
324
- "id": "reformed-christian-bible-expert-v2.1-12b-mlx",
325
- "name": "reformed-christian-bible-expert-v2.1-12b-mlx",
326
- "provider": "lms",
327
- "family": "mistral",
328
- "created_at": null,
329
- "context_window": 131072,
330
- "max_output_tokens": null,
331
- "knowledge_cutoff": null,
332
- "modalities": {
333
- "input": [
334
- "text"
335
- ],
336
- "output": [
337
- "text"
338
- ]
339
- },
340
- "capabilities": [
341
- "streaming",
342
- "structured_output",
343
- "function_calling"
344
- ],
345
- "pricing": {},
346
- "metadata": {
347
- "owned_by": "organization_owner",
348
- "publisher": "brianroberg",
349
- "arch": "mistral",
350
- "compatibility_type": "mlx",
351
- "quantization": "bf16",
352
- "state": "not-loaded"
353
- }
354
- },
355
- {
356
- "id": "christian-bible-expert-v2.0-12b",
357
- "name": "christian-bible-expert-v2.0-12b",
358
- "provider": "lms",
359
- "family": "llama",
360
- "created_at": null,
361
- "context_window": 131072,
362
- "max_output_tokens": null,
363
- "knowledge_cutoff": null,
364
- "modalities": {
365
- "input": [
366
- "text"
367
- ],
368
- "output": [
369
- "text"
370
- ]
371
- },
372
- "capabilities": [
373
- "streaming",
374
- "structured_output",
375
- "function_calling"
376
- ],
377
- "pricing": {},
378
- "metadata": {
379
- "owned_by": "organization_owner",
380
- "publisher": "EloyOn",
381
- "arch": "llama",
382
- "compatibility_type": "gguf",
383
- "quantization": "Q5_0",
384
- "state": "not-loaded"
128
+ "bits_per_weight": 1,
129
+ "state": "not-loaded",
130
+ "display_name": "Kimi K2.7 Code UD",
131
+ "params_string": "384x14B",
132
+ "size_bytes": 305793771748
385
133
  }
386
134
  },
387
135
  {
388
136
  "id": "text-embedding-nomic-embed-text-v1.5",
389
- "name": "text-embedding-nomic-embed-text-v1.5",
137
+ "name": "Nomic Embed Text v1.5",
390
138
  "provider": "lms",
391
- "family": "nomic-bert",
139
+ "family": "lms",
392
140
  "created_at": null,
393
141
  "context_window": 2048,
394
142
  "max_output_tokens": null,
@@ -406,15 +154,17 @@
406
154
  "metadata": {
407
155
  "owned_by": "organization_owner",
408
156
  "publisher": "nomic-ai",
409
- "arch": "nomic-bert",
410
157
  "compatibility_type": "gguf",
411
158
  "quantization": "Q4_K_M",
412
- "state": "not-loaded"
159
+ "bits_per_weight": 4,
160
+ "state": "not-loaded",
161
+ "display_name": "Nomic Embed Text v1.5",
162
+ "size_bytes": 84106624
413
163
  }
414
164
  },
415
165
  {
416
166
  "id": "openai/gpt-oss-20b",
417
- "name": "openai/gpt-oss-20b",
167
+ "name": "GPT-OSS 20B",
418
168
  "provider": "lms",
419
169
  "family": "gpt_oss",
420
170
  "created_at": null,
@@ -432,7 +182,9 @@
432
182
  "capabilities": [
433
183
  "streaming",
434
184
  "structured_output",
435
- "function_calling"
185
+ "function_calling",
186
+ "tool_choice",
187
+ "reasoning"
436
188
  ],
437
189
  "pricing": {},
438
190
  "metadata": {
@@ -441,163 +193,26 @@
441
193
  "arch": "gpt_oss",
442
194
  "compatibility_type": "mlx",
443
195
  "quantization": "8bit",
444
- "state": "not-loaded"
445
- }
446
- },
447
- {
448
- "id": "nondenominational-christian-bible-expert-v2.0-24b",
449
- "name": "nondenominational-christian-bible-expert-v2.0-24b",
450
- "provider": "lms",
451
- "family": "llama",
452
- "created_at": null,
453
- "context_window": 32768,
454
- "max_output_tokens": null,
455
- "knowledge_cutoff": null,
456
- "modalities": {
457
- "input": [
458
- "text"
459
- ],
460
- "output": [
461
- "text"
462
- ]
463
- },
464
- "capabilities": [
465
- "streaming",
466
- "structured_output"
467
- ],
468
- "pricing": {},
469
- "metadata": {
470
- "owned_by": "organization_owner",
471
- "publisher": "mradermacher",
472
- "arch": "llama",
473
- "compatibility_type": "gguf",
474
- "quantization": "Q4_K_S",
475
- "state": "not-loaded"
476
- }
477
- },
478
- {
479
- "id": "mradermacher/baptist-christian-bible-expert-v2.0-22b",
480
- "name": "mradermacher/baptist-christian-bible-expert-v2.0-22b",
481
- "provider": "lms",
482
- "family": "llama",
483
- "created_at": null,
484
- "context_window": 32768,
485
- "max_output_tokens": null,
486
- "knowledge_cutoff": null,
487
- "modalities": {
488
- "input": [
489
- "text"
490
- ],
491
- "output": [
492
- "text"
493
- ]
494
- },
495
- "capabilities": [
496
- "streaming",
497
- "structured_output",
498
- "function_calling"
499
- ],
500
- "pricing": {},
501
- "metadata": {
502
- "owned_by": "organization_owner",
503
- "publisher": "mradermacher",
504
- "arch": "llama",
505
- "compatibility_type": "gguf",
506
- "quantization": "Q4_K_S",
507
- "state": "not-loaded"
508
- }
509
- },
510
- {
511
- "id": "protestant-christian-bible-expert-v2.0-24b",
512
- "name": "protestant-christian-bible-expert-v2.0-24b",
513
- "provider": "lms",
514
- "family": "llama",
515
- "created_at": null,
516
- "context_window": 32768,
517
- "max_output_tokens": null,
518
- "knowledge_cutoff": null,
519
- "modalities": {
520
- "input": [
521
- "text"
522
- ],
523
- "output": [
524
- "text"
196
+ "bits_per_weight": 8,
197
+ "state": "not-loaded",
198
+ "display_name": "GPT-OSS 20B",
199
+ "params_string": "20B",
200
+ "size_bytes": 22256625356,
201
+ "variants": [
202
+ "openai/gpt-oss-20b@8bit"
203
+ ],
204
+ "selected_variant": "openai/gpt-oss-20b@8bit",
205
+ "reasoning_options": [
206
+ {
207
+ "type": "effort",
208
+ "values": [
209
+ "low",
210
+ "medium",
211
+ "high"
212
+ ],
213
+ "default": "low"
214
+ }
525
215
  ]
526
- },
527
- "capabilities": [
528
- "streaming",
529
- "structured_output"
530
- ],
531
- "pricing": {},
532
- "metadata": {
533
- "owned_by": "organization_owner",
534
- "publisher": "mradermacher",
535
- "arch": "llama",
536
- "compatibility_type": "gguf",
537
- "quantization": "Q4_K_S",
538
- "state": "not-loaded"
539
- }
540
- },
541
- {
542
- "id": "mradermacher/christian-bible-expert-v2.0-24b",
543
- "name": "mradermacher/christian-bible-expert-v2.0-24b",
544
- "provider": "lms",
545
- "family": "llama",
546
- "created_at": null,
547
- "context_window": 32768,
548
- "max_output_tokens": null,
549
- "knowledge_cutoff": null,
550
- "modalities": {
551
- "input": [
552
- "text"
553
- ],
554
- "output": [
555
- "text"
556
- ]
557
- },
558
- "capabilities": [
559
- "streaming",
560
- "structured_output"
561
- ],
562
- "pricing": {},
563
- "metadata": {
564
- "owned_by": "organization_owner",
565
- "publisher": "mradermacher",
566
- "arch": "llama",
567
- "compatibility_type": "gguf",
568
- "quantization": "Q4_K_S",
569
- "state": "not-loaded"
570
- }
571
- },
572
- {
573
- "id": "baptist-christian-bible-expert-v2.0-24b",
574
- "name": "baptist-christian-bible-expert-v2.0-24b",
575
- "provider": "lms",
576
- "family": "llama",
577
- "created_at": null,
578
- "context_window": 32768,
579
- "max_output_tokens": null,
580
- "knowledge_cutoff": null,
581
- "modalities": {
582
- "input": [
583
- "text"
584
- ],
585
- "output": [
586
- "text"
587
- ]
588
- },
589
- "capabilities": [
590
- "streaming",
591
- "structured_output"
592
- ],
593
- "pricing": {},
594
- "metadata": {
595
- "owned_by": "organization_owner",
596
- "publisher": "mradermacher",
597
- "arch": "llama",
598
- "compatibility_type": "gguf",
599
- "quantization": "Q4_K_S",
600
- "state": "not-loaded"
601
216
  }
602
217
  }
603
218
  ]