ruby_llm_swarm 1.9.5 → 1.9.7

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 250f16e4521232b0043c1efe54c8aebf308128957c8481347f783e7c7a229261
4
- data.tar.gz: 7317b59fa7b49b8982a7d7e8ed6b07bff67de8f9283aea467e5507a2dab8e44e
3
+ metadata.gz: 19f34b323fb1f8d53f6fb3a4cf1fd9a831fc8d01bec22254a7550be6c9c854f5
4
+ data.tar.gz: 7778b17bbbbb77b7ad5f777eac898f42ee19e80dae760ebf571f5168d666c872
5
5
  SHA512:
6
- metadata.gz: 8e81b60fda56f5fdb9ec9b6821f05dd63f24fa028e422b08110eebb18ac468a8f0f1289f1d4047f6e868804cf97d34ddc2c043b0b62ee8b88ee1d306f6c81931
7
- data.tar.gz: b87c712097ef18332880b5f057c56363da5221478cb31b0a1c666411e9243a5ff10ecafb58b30b1367e33c3351dec41d5da02e3e9f4b47c71904d0179cf18593
6
+ metadata.gz: a02b1dca605850a16c90a27bc59ddb7f84737ba8f4a4266b23d43c4e5b0a49e5d253ba43e7176c4b95a47ed6cddad026ffbeefa5b792d691ef3a14fc00502117
7
+ data.tar.gz: 6387dd11c1b2285f4d204cc6b49257381158b0db3022e97dbf91c0732c49a1f27ae73525848e434c8b8c85092cc51ba2c1627c9c154543859aeeba24666669f4
@@ -8,6 +8,7 @@ module RubyLLM
8
8
  :openai_organization_id,
9
9
  :openai_project_id,
10
10
  :openai_use_system_role,
11
+ :anthropic_api_base,
11
12
  :anthropic_api_key,
12
13
  :gemini_api_key,
13
14
  :gemini_api_base,
@@ -37,6 +38,9 @@ module RubyLLM
37
38
  :use_new_acts_as,
38
39
  # Connection configuration
39
40
  :request_timeout,
41
+ :read_timeout,
42
+ :open_timeout,
43
+ :write_timeout,
40
44
  :max_retries,
41
45
  :retry_interval,
42
46
  :retry_backoff_factor,
@@ -50,6 +54,9 @@ module RubyLLM
50
54
 
51
55
  def initialize
52
56
  @request_timeout = 300
57
+ @read_timeout = nil # Defaults to request_timeout if not set
58
+ @open_timeout = 30
59
+ @write_timeout = 30
53
60
  @max_retries = 3
54
61
  @retry_interval = 0.1
55
62
  @retry_backoff_factor = 2
@@ -57,6 +57,11 @@ module RubyLLM
57
57
 
58
58
  def setup_timeout(faraday)
59
59
  faraday.options.timeout = @config.request_timeout
60
+ faraday.options.open_timeout = @config.open_timeout if @config.open_timeout
61
+ faraday.options.write_timeout = @config.write_timeout if @config.write_timeout
62
+ # read_timeout defaults to request_timeout for streaming support
63
+ # This ensures long gaps between chunks (model thinking) don't cause timeouts
64
+ faraday.options.read_timeout = @config.read_timeout || @config.request_timeout
60
65
  end
61
66
 
62
67
  def setup_logging(faraday)
@@ -5,7 +5,7 @@
5
5
  "provider": "anthropic",
6
6
  "family": "claude-haiku-4-5",
7
7
  "created_at": null,
8
- "context_window": null,
8
+ "context_window": 200000,
9
9
  "max_output_tokens": 64000,
10
10
  "knowledge_cutoff": null,
11
11
  "modalities": {
@@ -36,7 +36,7 @@
36
36
  "provider": "anthropic",
37
37
  "family": "claude-haiku-4-5",
38
38
  "created_at": null,
39
- "context_window": null,
39
+ "context_window": 200000,
40
40
  "max_output_tokens": 64000,
41
41
  "knowledge_cutoff": null,
42
42
  "modalities": {
@@ -62,13 +62,13 @@
62
62
  "metadata": {}
63
63
  },
64
64
  {
65
- "id": "claude-opus-4-1",
66
- "name": "Claude Opus 4.1",
65
+ "id": "claude-opus-4-5",
66
+ "name": "Claude Opus 4.5",
67
67
  "provider": "anthropic",
68
- "family": "claude-opus-4-1",
68
+ "family": "claude-opus-4-5",
69
69
  "created_at": null,
70
- "context_window": null,
71
- "max_output_tokens": 32000,
70
+ "context_window": 200000,
71
+ "max_output_tokens": 64000,
72
72
  "knowledge_cutoff": null,
73
73
  "modalities": {
74
74
  "input": [
@@ -85,21 +85,21 @@
85
85
  "pricing": {
86
86
  "text_tokens": {
87
87
  "standard": {
88
- "input_per_million": 15.0,
89
- "output_per_million": 75.0
88
+ "input_per_million": 5.0,
89
+ "output_per_million": 25.0
90
90
  }
91
91
  }
92
92
  },
93
93
  "metadata": {}
94
94
  },
95
95
  {
96
- "id": "claude-opus-4-1-20250805",
97
- "name": "Claude Opus 4.1",
96
+ "id": "claude-opus-4-5-20251101",
97
+ "name": "Claude Opus 4.5",
98
98
  "provider": "anthropic",
99
- "family": "claude-opus-4-1",
99
+ "family": "claude-opus-4-5",
100
100
  "created_at": null,
101
- "context_window": null,
102
- "max_output_tokens": 32000,
101
+ "context_window": 200000,
102
+ "max_output_tokens": 64000,
103
103
  "knowledge_cutoff": null,
104
104
  "modalities": {
105
105
  "input": [
@@ -116,8 +116,8 @@
116
116
  "pricing": {
117
117
  "text_tokens": {
118
118
  "standard": {
119
- "input_per_million": 15.0,
120
- "output_per_million": 75.0
119
+ "input_per_million": 5.0,
120
+ "output_per_million": 25.0
121
121
  }
122
122
  }
123
123
  },
@@ -129,7 +129,7 @@
129
129
  "provider": "anthropic",
130
130
  "family": "claude-sonnet-4-5",
131
131
  "created_at": null,
132
- "context_window": 1000000,
132
+ "context_window": 200000,
133
133
  "max_output_tokens": 64000,
134
134
  "knowledge_cutoff": null,
135
135
  "modalities": {
@@ -160,7 +160,7 @@
160
160
  "provider": "anthropic",
161
161
  "family": "claude-sonnet-4-5",
162
162
  "created_at": null,
163
- "context_window": 1000000,
163
+ "context_window": 200000,
164
164
  "max_output_tokens": 64000,
165
165
  "knowledge_cutoff": null,
166
166
  "modalities": {
@@ -223,7 +223,7 @@
223
223
  "provider": "deepseek",
224
224
  "family": "deepseek-reasoner",
225
225
  "created_at": null,
226
- "context_window": null,
226
+ "context_window": 128000,
227
227
  "max_output_tokens": 64000,
228
228
  "knowledge_cutoff": null,
229
229
  "modalities": {
@@ -238,22 +238,28 @@
238
238
  "function_calling",
239
239
  "structured_output"
240
240
  ],
241
- "pricing": {},
241
+ "pricing": {
242
+ "text_tokens": {
243
+ "standard": {
244
+ "input_per_million": 0.28,
245
+ "cached_input_per_million": 0.028,
246
+ "output_per_million": 0.42
247
+ }
248
+ }
249
+ },
242
250
  "metadata": {}
243
251
  },
244
252
  {
245
- "id": "gemini-2.0-flash",
246
- "name": "Gemini 2.0 Flash",
247
- "provider": "gemini",
248
- "family": "gemini-2.0-flash",
253
+ "id": "deepseek-reasoner-speciale",
254
+ "name": "deepseek-reasoner(1)",
255
+ "provider": "deepseek",
256
+ "family": "deepseek-reasoner-speciale",
249
257
  "created_at": null,
250
- "context_window": 1048576,
251
- "max_output_tokens": 8192,
258
+ "context_window": 128000,
259
+ "max_output_tokens": 128000,
252
260
  "knowledge_cutoff": null,
253
261
  "modalities": {
254
262
  "input": [
255
- "audio",
256
- "image",
257
263
  "text"
258
264
  ],
259
265
  "output": [
@@ -261,27 +267,21 @@
261
267
  ]
262
268
  },
263
269
  "capabilities": [
264
- "batch",
265
- "function_calling",
266
- "structured_output"
270
+ "function_calling"
267
271
  ],
268
272
  "pricing": {
269
273
  "text_tokens": {
270
274
  "standard": {
271
- "input_per_million": 0.1,
272
- "cached_input_per_million": 0.025,
273
- "output_per_million": 0.4
274
- },
275
- "batch": {
276
- "input_per_million": 0.05,
277
- "output_per_million": 0.2
275
+ "input_per_million": 0.28,
276
+ "cached_input_per_million": 0.028,
277
+ "output_per_million": 0.42
278
278
  }
279
279
  }
280
280
  },
281
281
  "metadata": {}
282
282
  },
283
283
  {
284
- "id": "gemini-2.0-flash-001",
284
+ "id": "gemini-2.0-flash",
285
285
  "name": "Gemini 2.0 Flash",
286
286
  "provider": "gemini",
287
287
  "family": "gemini-2.0-flash",
@@ -320,7 +320,7 @@
320
320
  "metadata": {}
321
321
  },
322
322
  {
323
- "id": "gemini-2.0-flash-exp",
323
+ "id": "gemini-2.0-flash-001",
324
324
  "name": "Gemini 2.0 Flash",
325
325
  "provider": "gemini",
326
326
  "family": "gemini-2.0-flash",
@@ -359,10 +359,10 @@
359
359
  "metadata": {}
360
360
  },
361
361
  {
362
- "id": "gemini-2.0-flash-lite",
363
- "name": "Gemini 2.0 Flash-Lite",
362
+ "id": "gemini-2.0-flash-exp",
363
+ "name": "Gemini 2.0 Flash",
364
364
  "provider": "gemini",
365
- "family": "gemini-2.0-flash-lite",
365
+ "family": "gemini-2.0-flash",
366
366
  "created_at": null,
367
367
  "context_window": 1048576,
368
368
  "max_output_tokens": 8192,
@@ -398,7 +398,7 @@
398
398
  "metadata": {}
399
399
  },
400
400
  {
401
- "id": "gemini-2.0-flash-lite-001",
401
+ "id": "gemini-2.0-flash-lite",
402
402
  "name": "Gemini 2.0 Flash-Lite",
403
403
  "provider": "gemini",
404
404
  "family": "gemini-2.0-flash-lite",
@@ -437,10 +437,10 @@
437
437
  "metadata": {}
438
438
  },
439
439
  {
440
- "id": "gemini-2.0-flash-live-001",
441
- "name": "Gemini 2.0 Flash Live",
440
+ "id": "gemini-2.0-flash-lite-001",
441
+ "name": "Gemini 2.0 Flash-Lite",
442
442
  "provider": "gemini",
443
- "family": "gemini-2.0-flash-live-001",
443
+ "family": "gemini-2.0-flash-lite",
444
444
  "created_at": null,
445
445
  "context_window": 1048576,
446
446
  "max_output_tokens": 8192,
@@ -448,14 +448,15 @@
448
448
  "modalities": {
449
449
  "input": [
450
450
  "audio",
451
+ "image",
451
452
  "text"
452
453
  ],
453
454
  "output": [
454
- "audio",
455
455
  "text"
456
456
  ]
457
457
  },
458
458
  "capabilities": [
459
+ "batch",
459
460
  "function_calling",
460
461
  "structured_output"
461
462
  ],
@@ -465,6 +466,10 @@
465
466
  "input_per_million": 0.1,
466
467
  "cached_input_per_million": 0.025,
467
468
  "output_per_million": 0.4
469
+ },
470
+ "batch": {
471
+ "input_per_million": 0.05,
472
+ "output_per_million": 0.2
468
473
  }
469
474
  }
470
475
  },
@@ -665,9 +670,9 @@
665
670
  },
666
671
  {
667
672
  "id": "gemini-2.5-flash-lite-preview-09-2025",
668
- "name": "Gemini 2.5 Flash-Lite Preview",
673
+ "name": "Gemini 2.5 Flash-Lite",
669
674
  "provider": "gemini",
670
- "family": "gemini-2.5-flash-lite-preview-09-2025",
675
+ "family": "gemini-2.5-flash-lite",
671
676
  "created_at": null,
672
677
  "context_window": 1048576,
673
678
  "max_output_tokens": 65536,
@@ -706,7 +711,40 @@
706
711
  "id": "gemini-2.5-flash-native-audio-preview-09-2025",
707
712
  "name": "Gemini 2.5 Flash Native Audio Preview",
708
713
  "provider": "gemini",
709
- "family": "gemini-2.5-flash-native-audio-preview-09-2025",
714
+ "family": "gemini-2.5-flash-native-audio-preview",
715
+ "created_at": null,
716
+ "context_window": 131072,
717
+ "max_output_tokens": 8192,
718
+ "knowledge_cutoff": null,
719
+ "modalities": {
720
+ "input": [
721
+ "audio",
722
+ "text"
723
+ ],
724
+ "output": [
725
+ "audio",
726
+ "text"
727
+ ]
728
+ },
729
+ "capabilities": [
730
+ "function_calling"
731
+ ],
732
+ "pricing": {
733
+ "text_tokens": {
734
+ "standard": {
735
+ "input_per_million": 0.3,
736
+ "cached_input_per_million": 0.03,
737
+ "output_per_million": 2.5
738
+ }
739
+ }
740
+ },
741
+ "metadata": {}
742
+ },
743
+ {
744
+ "id": "gemini-2.5-flash-native-audio-preview-12-2025",
745
+ "name": "Gemini 2.5 Flash Native Audio Preview",
746
+ "provider": "gemini",
747
+ "family": "gemini-2.5-flash-native-audio-preview",
710
748
  "created_at": null,
711
749
  "context_window": 131072,
712
750
  "max_output_tokens": 8192,
@@ -737,9 +775,9 @@
737
775
  },
738
776
  {
739
777
  "id": "gemini-2.5-flash-preview-09-2025",
740
- "name": "Gemini 2.5 Flash Preview",
778
+ "name": "Gemini 2.5 Flash",
741
779
  "provider": "gemini",
742
- "family": "gemini-2.5-flash-preview-09-2025",
780
+ "family": "gemini-2.5-flash",
743
781
  "created_at": null,
744
782
  "context_window": 1048576,
745
783
  "max_output_tokens": 65536,
@@ -791,19 +829,13 @@
791
829
  "audio"
792
830
  ]
793
831
  },
794
- "capabilities": [
795
- "batch"
796
- ],
832
+ "capabilities": [],
797
833
  "pricing": {
798
834
  "text_tokens": {
799
835
  "standard": {
800
836
  "input_per_million": 0.3,
801
837
  "cached_input_per_million": 0.03,
802
838
  "output_per_million": 2.5
803
- },
804
- "batch": {
805
- "input_per_million": 0.15,
806
- "output_per_million": 1.25
807
839
  }
808
840
  }
809
841
  },
@@ -850,28 +882,38 @@
850
882
  },
851
883
  {
852
884
  "id": "gemini-2.5-pro-preview-tts",
853
- "name": "Gemini 2.5 Pro TTS",
885
+ "name": "Gemini 2.5 Pro",
854
886
  "provider": "gemini",
855
- "family": "gemini-2.5-pro-preview-tts",
887
+ "family": "gemini-2.5-pro",
856
888
  "created_at": null,
857
- "context_window": 8192,
858
- "max_output_tokens": 16384,
889
+ "context_window": 1048576,
890
+ "max_output_tokens": 65536,
859
891
  "knowledge_cutoff": null,
860
892
  "modalities": {
861
893
  "input": [
894
+ "audio",
895
+ "image",
862
896
  "text"
863
897
  ],
864
898
  "output": [
865
- "audio"
899
+ "text"
866
900
  ]
867
901
  },
868
- "capabilities": [],
902
+ "capabilities": [
903
+ "batch",
904
+ "function_calling",
905
+ "structured_output"
906
+ ],
869
907
  "pricing": {
870
908
  "text_tokens": {
871
909
  "standard": {
872
910
  "input_per_million": 1.25,
873
911
  "cached_input_per_million": 0.125,
874
912
  "output_per_million": 10.0
913
+ },
914
+ "batch": {
915
+ "input_per_million": 0.625,
916
+ "output_per_million": 5.0
875
917
  }
876
918
  }
877
919
  },
@@ -900,7 +942,18 @@
900
942
  "batch",
901
943
  "structured_output"
902
944
  ],
903
- "pricing": {},
945
+ "pricing": {
946
+ "text_tokens": {
947
+ "standard": {
948
+ "input_per_million": 2.0,
949
+ "output_per_million": 12.0
950
+ },
951
+ "batch": {
952
+ "input_per_million": 1.0,
953
+ "output_per_million": 6.0
954
+ }
955
+ }
956
+ },
904
957
  "metadata": {}
905
958
  },
906
959
  {
@@ -942,39 +995,6 @@
942
995
  },
943
996
  "metadata": {}
944
997
  },
945
- {
946
- "id": "gemini-live-2.5-flash-preview",
947
- "name": "Gemini 2.5 Flash Native Audio Preview",
948
- "provider": "gemini",
949
- "family": "gemini-2.5-flash-native-audio-preview-09-2025",
950
- "created_at": null,
951
- "context_window": 131072,
952
- "max_output_tokens": 8192,
953
- "knowledge_cutoff": null,
954
- "modalities": {
955
- "input": [
956
- "audio",
957
- "text"
958
- ],
959
- "output": [
960
- "audio",
961
- "text"
962
- ]
963
- },
964
- "capabilities": [
965
- "function_calling"
966
- ],
967
- "pricing": {
968
- "text_tokens": {
969
- "standard": {
970
- "input_per_million": 0.3,
971
- "cached_input_per_million": 0.03,
972
- "output_per_million": 2.5
973
- }
974
- }
975
- },
976
- "metadata": {}
977
- },
978
998
  {
979
999
  "id": "babbage-002",
980
1000
  "name": "babbage-002",
@@ -1034,40 +1054,6 @@
1034
1054
  },
1035
1055
  "metadata": {}
1036
1056
  },
1037
- {
1038
- "id": "codex-mini-latest",
1039
- "name": "codex-mini-latest",
1040
- "provider": "openai",
1041
- "family": "codex-mini-latest",
1042
- "created_at": null,
1043
- "context_window": 200000,
1044
- "max_output_tokens": 100000,
1045
- "knowledge_cutoff": null,
1046
- "modalities": {
1047
- "input": [
1048
- "image",
1049
- "text"
1050
- ],
1051
- "output": [
1052
- "embeddings",
1053
- "text"
1054
- ]
1055
- },
1056
- "capabilities": [
1057
- "function_calling",
1058
- "structured_output"
1059
- ],
1060
- "pricing": {
1061
- "text_tokens": {
1062
- "standard": {
1063
- "input_per_million": 1.5,
1064
- "cached_input_per_million": 0.375,
1065
- "output_per_million": 6.0
1066
- }
1067
- }
1068
- },
1069
- "metadata": {}
1070
- },
1071
1057
  {
1072
1058
  "id": "computer-use-preview",
1073
1059
  "name": "computer-use-preview",
@@ -1142,29 +1128,6 @@
1142
1128
  },
1143
1129
  "metadata": {}
1144
1130
  },
1145
- {
1146
- "id": "dall-e-2",
1147
- "name": "DALL·E 2",
1148
- "provider": "openai",
1149
- "family": "dall-e-2",
1150
- "created_at": null,
1151
- "context_window": null,
1152
- "max_output_tokens": null,
1153
- "knowledge_cutoff": null,
1154
- "modalities": {
1155
- "input": [
1156
- "text"
1157
- ],
1158
- "output": [
1159
- "embeddings",
1160
- "image",
1161
- "text"
1162
- ]
1163
- },
1164
- "capabilities": [],
1165
- "pricing": {},
1166
- "metadata": {}
1167
- },
1168
1131
  {
1169
1132
  "id": "dall-e-3",
1170
1133
  "name": "DALL·E 3",
@@ -1174,44 +1137,17 @@
1174
1137
  "context_window": null,
1175
1138
  "max_output_tokens": null,
1176
1139
  "knowledge_cutoff": null,
1177
- "modalities": {
1178
- "input": [],
1179
- "output": [
1180
- "embeddings",
1181
- "image"
1182
- ]
1183
- },
1184
- "capabilities": [],
1185
- "pricing": {},
1186
- "metadata": {}
1187
- },
1188
- {
1189
- "id": "davinci-002",
1190
- "name": "davinci-002",
1191
- "provider": "openai",
1192
- "family": "davinci-002",
1193
- "created_at": null,
1194
- "context_window": null,
1195
- "max_output_tokens": 16384,
1196
- "knowledge_cutoff": null,
1197
1140
  "modalities": {
1198
1141
  "input": [
1199
1142
  "text"
1200
1143
  ],
1201
1144
  "output": [
1202
1145
  "embeddings",
1203
- "text"
1146
+ "image"
1204
1147
  ]
1205
1148
  },
1206
1149
  "capabilities": [],
1207
- "pricing": {
1208
- "text_tokens": {
1209
- "standard": {
1210
- "input_per_million": 2.0,
1211
- "output_per_million": 2.0
1212
- }
1213
- }
1214
- },
1150
+ "pricing": {},
1215
1151
  "metadata": {}
1216
1152
  },
1217
1153
  {
@@ -1774,7 +1710,7 @@
1774
1710
  "metadata": {}
1775
1711
  },
1776
1712
  {
1777
- "id": "gpt-4o-2023-01-01",
1713
+ "id": "gpt-4o-2024-08-06",
1778
1714
  "name": "GPT-4o",
1779
1715
  "provider": "openai",
1780
1716
  "family": "gpt-4o",
@@ -2130,13 +2066,17 @@
2130
2066
  "knowledge_cutoff": null,
2131
2067
  "modalities": {
2132
2068
  "input": [
2133
- "audio"
2069
+ "audio",
2070
+ "text"
2134
2071
  ],
2135
2072
  "output": [
2136
- "embeddings"
2073
+ "embeddings",
2074
+ "text"
2137
2075
  ]
2138
2076
  },
2139
- "capabilities": [],
2077
+ "capabilities": [
2078
+ "structured_output"
2079
+ ],
2140
2080
  "pricing": {
2141
2081
  "text_tokens": {
2142
2082
  "standard": {
@@ -2851,10 +2791,10 @@
2851
2791
  "metadata": {}
2852
2792
  },
2853
2793
  {
2854
- "id": "gpt-5.1-codex-mini",
2855
- "name": "GPT-5.1 Codex mini",
2794
+ "id": "gpt-5.1-codex-max",
2795
+ "name": "GPT-5.1-Codex-Max",
2856
2796
  "provider": "openai",
2857
- "family": "gpt-5.1-codex-mini",
2797
+ "family": "gpt-5.1-codex-max",
2858
2798
  "created_at": null,
2859
2799
  "context_window": 400000,
2860
2800
  "max_output_tokens": 128000,
@@ -2876,9 +2816,175 @@
2876
2816
  "pricing": {
2877
2817
  "text_tokens": {
2878
2818
  "standard": {
2879
- "input_per_million": 0.25,
2880
- "cached_input_per_million": 0.025,
2881
- "output_per_million": 2.0
2819
+ "input_per_million": 1.25,
2820
+ "cached_input_per_million": 0.125,
2821
+ "output_per_million": 10.0
2822
+ }
2823
+ }
2824
+ },
2825
+ "metadata": {}
2826
+ },
2827
+ {
2828
+ "id": "gpt-5.2",
2829
+ "name": "GPT-5.2",
2830
+ "provider": "openai",
2831
+ "family": "gpt-5.2",
2832
+ "created_at": null,
2833
+ "context_window": 400000,
2834
+ "max_output_tokens": 128000,
2835
+ "knowledge_cutoff": null,
2836
+ "modalities": {
2837
+ "input": [
2838
+ "image",
2839
+ "text"
2840
+ ],
2841
+ "output": [
2842
+ "embeddings",
2843
+ "text"
2844
+ ]
2845
+ },
2846
+ "capabilities": [
2847
+ "function_calling",
2848
+ "structured_output"
2849
+ ],
2850
+ "pricing": {
2851
+ "text_tokens": {
2852
+ "standard": {
2853
+ "input_per_million": 1.75,
2854
+ "cached_input_per_million": 0.175,
2855
+ "output_per_million": 14.0
2856
+ }
2857
+ }
2858
+ },
2859
+ "metadata": {}
2860
+ },
2861
+ {
2862
+ "id": "gpt-5.2-2025-12-11",
2863
+ "name": "GPT-5.2",
2864
+ "provider": "openai",
2865
+ "family": "gpt-5.2",
2866
+ "created_at": null,
2867
+ "context_window": 400000,
2868
+ "max_output_tokens": 128000,
2869
+ "knowledge_cutoff": null,
2870
+ "modalities": {
2871
+ "input": [
2872
+ "image",
2873
+ "text"
2874
+ ],
2875
+ "output": [
2876
+ "embeddings",
2877
+ "text"
2878
+ ]
2879
+ },
2880
+ "capabilities": [
2881
+ "function_calling",
2882
+ "structured_output"
2883
+ ],
2884
+ "pricing": {
2885
+ "text_tokens": {
2886
+ "standard": {
2887
+ "input_per_million": 1.75,
2888
+ "cached_input_per_million": 0.175,
2889
+ "output_per_million": 14.0
2890
+ }
2891
+ }
2892
+ },
2893
+ "metadata": {}
2894
+ },
2895
+ {
2896
+ "id": "gpt-5.2-chat-latest",
2897
+ "name": "GPT-5.2 Chat",
2898
+ "provider": "openai",
2899
+ "family": "gpt-5.2-chat-latest",
2900
+ "created_at": null,
2901
+ "context_window": 128000,
2902
+ "max_output_tokens": 16384,
2903
+ "knowledge_cutoff": null,
2904
+ "modalities": {
2905
+ "input": [
2906
+ "image",
2907
+ "text"
2908
+ ],
2909
+ "output": [
2910
+ "embeddings",
2911
+ "text"
2912
+ ]
2913
+ },
2914
+ "capabilities": [
2915
+ "function_calling",
2916
+ "structured_output"
2917
+ ],
2918
+ "pricing": {
2919
+ "text_tokens": {
2920
+ "standard": {
2921
+ "input_per_million": 1.75,
2922
+ "cached_input_per_million": 0.175,
2923
+ "output_per_million": 14.0
2924
+ }
2925
+ }
2926
+ },
2927
+ "metadata": {}
2928
+ },
2929
+ {
2930
+ "id": "gpt-5.2-pro",
2931
+ "name": "GPT-5.2 pro",
2932
+ "provider": "openai",
2933
+ "family": "gpt-5.2-pro",
2934
+ "created_at": null,
2935
+ "context_window": 400000,
2936
+ "max_output_tokens": 128000,
2937
+ "knowledge_cutoff": null,
2938
+ "modalities": {
2939
+ "input": [
2940
+ "image",
2941
+ "text"
2942
+ ],
2943
+ "output": [
2944
+ "embeddings",
2945
+ "text"
2946
+ ]
2947
+ },
2948
+ "capabilities": [
2949
+ "function_calling"
2950
+ ],
2951
+ "pricing": {
2952
+ "text_tokens": {
2953
+ "standard": {
2954
+ "input_per_million": 21.0,
2955
+ "output_per_million": 168.0
2956
+ }
2957
+ }
2958
+ },
2959
+ "metadata": {}
2960
+ },
2961
+ {
2962
+ "id": "gpt-5.2-pro-2025-12-11",
2963
+ "name": "GPT-5.2 pro",
2964
+ "provider": "openai",
2965
+ "family": "gpt-5.2-pro",
2966
+ "created_at": null,
2967
+ "context_window": 400000,
2968
+ "max_output_tokens": 128000,
2969
+ "knowledge_cutoff": null,
2970
+ "modalities": {
2971
+ "input": [
2972
+ "image",
2973
+ "text"
2974
+ ],
2975
+ "output": [
2976
+ "embeddings",
2977
+ "text"
2978
+ ]
2979
+ },
2980
+ "capabilities": [
2981
+ "function_calling"
2982
+ ],
2983
+ "pricing": {
2984
+ "text_tokens": {
2985
+ "standard": {
2986
+ "input_per_million": 21.0,
2987
+ "output_per_million": 168.0
2882
2988
  }
2883
2989
  }
2884
2990
  },
@@ -4041,8 +4147,12 @@
4041
4147
  "max_output_tokens": null,
4042
4148
  "knowledge_cutoff": null,
4043
4149
  "modalities": {
4044
- "input": [],
4150
+ "input": [
4151
+ "image",
4152
+ "text"
4153
+ ],
4045
4154
  "output": [
4155
+ "audio",
4046
4156
  "embeddings"
4047
4157
  ]
4048
4158
  },
@@ -4050,7 +4160,36 @@
4050
4160
  "pricing": {
4051
4161
  "text_tokens": {
4052
4162
  "standard": {
4053
- "input_per_million": 0.1
4163
+ "output_per_million": 100000.0
4164
+ }
4165
+ }
4166
+ },
4167
+ "metadata": {}
4168
+ },
4169
+ {
4170
+ "id": "sora-2-2025-10-06",
4171
+ "name": "Sora 2",
4172
+ "provider": "openai",
4173
+ "family": "sora-2",
4174
+ "created_at": null,
4175
+ "context_window": null,
4176
+ "max_output_tokens": null,
4177
+ "knowledge_cutoff": null,
4178
+ "modalities": {
4179
+ "input": [
4180
+ "image",
4181
+ "text"
4182
+ ],
4183
+ "output": [
4184
+ "audio",
4185
+ "embeddings"
4186
+ ]
4187
+ },
4188
+ "capabilities": [],
4189
+ "pricing": {
4190
+ "text_tokens": {
4191
+ "standard": {
4192
+ "output_per_million": 100000.0
4054
4193
  }
4055
4194
  }
4056
4195
  },
@@ -4066,15 +4205,39 @@
4066
4205
  "max_output_tokens": null,
4067
4206
  "knowledge_cutoff": null,
4068
4207
  "modalities": {
4069
- "input": [],
4208
+ "input": [
4209
+ "image",
4210
+ "text"
4211
+ ],
4070
4212
  "output": [
4071
4213
  "audio",
4072
4214
  "embeddings"
4073
4215
  ]
4074
4216
  },
4075
- "capabilities": [
4076
- "structured_output"
4077
- ],
4217
+ "capabilities": [],
4218
+ "pricing": {},
4219
+ "metadata": {}
4220
+ },
4221
+ {
4222
+ "id": "sora-2-pro-2025-10-06",
4223
+ "name": "Sora 2 Pro",
4224
+ "provider": "openai",
4225
+ "family": "sora-2-pro",
4226
+ "created_at": null,
4227
+ "context_window": null,
4228
+ "max_output_tokens": null,
4229
+ "knowledge_cutoff": null,
4230
+ "modalities": {
4231
+ "input": [
4232
+ "image",
4233
+ "text"
4234
+ ],
4235
+ "output": [
4236
+ "audio",
4237
+ "embeddings"
4238
+ ]
4239
+ },
4240
+ "capabilities": [],
4078
4241
  "pricing": {},
4079
4242
  "metadata": {}
4080
4243
  },
@@ -4097,8 +4260,7 @@
4097
4260
  ]
4098
4261
  },
4099
4262
  "capabilities": [
4100
- "batch",
4101
- "structured_output"
4263
+ "batch"
4102
4264
  ],
4103
4265
  "pricing": {
4104
4266
  "text_tokens": {
@@ -4139,8 +4301,7 @@
4139
4301
  ]
4140
4302
  },
4141
4303
  "capabilities": [
4142
- "batch",
4143
- "structured_output"
4304
+ "batch"
4144
4305
  ],
4145
4306
  "pricing": {
4146
4307
  "text_tokens": {
@@ -4172,9 +4333,12 @@
4172
4333
  "max_output_tokens": null,
4173
4334
  "knowledge_cutoff": null,
4174
4335
  "modalities": {
4175
- "input": [],
4336
+ "input": [
4337
+ "text"
4338
+ ],
4176
4339
  "output": [
4177
- "embeddings"
4340
+ "embeddings",
4341
+ "text"
4178
4342
  ]
4179
4343
  },
4180
4344
  "capabilities": [
@@ -4218,9 +4382,7 @@
4218
4382
  "text"
4219
4383
  ]
4220
4384
  },
4221
- "capabilities": [
4222
- "structured_output"
4223
- ],
4385
+ "capabilities": [],
4224
4386
  "pricing": {},
4225
4387
  "metadata": {}
4226
4388
  },
@@ -4256,7 +4418,10 @@
4256
4418
  "max_output_tokens": null,
4257
4419
  "knowledge_cutoff": null,
4258
4420
  "modalities": {
4259
- "input": [],
4421
+ "input": [
4422
+ "audio",
4423
+ "text"
4424
+ ],
4260
4425
  "output": [
4261
4426
  "audio",
4262
4427
  "embeddings"
@@ -4266,7 +4431,7 @@
4266
4431
  "pricing": {
4267
4432
  "text_tokens": {
4268
4433
  "standard": {
4269
- "output_per_million": 15.0
4434
+ "input_per_million": 15.0
4270
4435
  }
4271
4436
  }
4272
4437
  },
@@ -4290,13 +4455,11 @@
4290
4455
  "embeddings"
4291
4456
  ]
4292
4457
  },
4293
- "capabilities": [
4294
- "structured_output"
4295
- ],
4458
+ "capabilities": [],
4296
4459
  "pricing": {
4297
4460
  "text_tokens": {
4298
4461
  "standard": {
4299
- "output_per_million": 30.0
4462
+ "input_per_million": 30.0
4300
4463
  }
4301
4464
  }
4302
4465
  },
@@ -4316,8 +4479,8 @@
4316
4479
  "audio"
4317
4480
  ],
4318
4481
  "output": [
4319
- "audio",
4320
- "embeddings"
4482
+ "embeddings",
4483
+ "text"
4321
4484
  ]
4322
4485
  },
4323
4486
  "capabilities": [],
@@ -8,7 +8,7 @@ module RubyLLM
8
8
  module_function
9
9
 
10
10
  def completion_url
11
- '/v1/messages'
11
+ 'v1/messages'
12
12
  end
13
13
 
14
14
  def render_payload(messages, tools:, temperature:, model:, stream: false, schema: nil) # rubocop:disable Metrics/ParameterLists,Lint/UnusedMethodArgument
@@ -8,7 +8,7 @@ module RubyLLM
8
8
  module_function
9
9
 
10
10
  def models_url
11
- '/v1/models'
11
+ 'v1/models'
12
12
  end
13
13
 
14
14
  def parse_list_models_response(response, slug, capabilities)
@@ -12,7 +12,7 @@ module RubyLLM
12
12
  include Anthropic::Tools
13
13
 
14
14
  def api_base
15
- 'https://api.anthropic.com'
15
+ @config.anthropic_api_base || 'https://api.anthropic.com'
16
16
  end
17
17
 
18
18
  def headers
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RubyLLM
4
- VERSION = '1.9.5'
4
+ VERSION = '1.9.7'
5
5
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_llm_swarm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.5
4
+ version: 1.9.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paulo Arruda
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
10
+ date: 1980-01-01 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: async-http-faraday