ask-llm-providers 0.2.2 → 0.3.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +18 -1
- data/lib/ask/llm/aliases.json +11 -0
- data/lib/ask/llm/aliases.rb +62 -0
- data/lib/ask/llm/catalog.rb +194 -0
- data/lib/ask/llm/models/anthropic.json +188 -0
- data/lib/ask/llm/models/bedrock.json +1 -0
- data/lib/ask/llm/models/cloudflare.json +1 -0
- data/lib/ask/llm/models/deepseek.json +85 -0
- data/lib/ask/llm/models/gemini.json +151 -0
- data/lib/ask/llm/models/mimo.json +22 -0
- data/lib/ask/llm/models/mistral.json +62 -0
- data/lib/ask/llm/models/ollama.json +136 -0
- data/lib/ask/llm/models/openai.json +294 -0
- data/lib/ask/llm/models/opencode.json +189 -0
- data/lib/ask/llm/models/opencode_go.json +149 -0
- data/lib/ask/llm/models/openrouter.json +115 -0
- data/lib/ask/llm/models_schema.json +74 -0
- data/lib/ask/llm/version.rb +1 -1
- data/lib/ask-llm-providers.rb +4 -17
- metadata +17 -2
- data/lib/ask/llm/models/openai.rb +0 -69
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "claude-sonnet-4-6",
|
|
4
|
+
"name": "Claude Sonnet 4.6",
|
|
5
|
+
"family": "claude_sonnet",
|
|
6
|
+
"context_window": 200000,
|
|
7
|
+
"max_output_tokens": 8192,
|
|
8
|
+
"capabilities": [
|
|
9
|
+
"function_calling",
|
|
10
|
+
"streaming",
|
|
11
|
+
"vision",
|
|
12
|
+
"reasoning",
|
|
13
|
+
"tool_choice",
|
|
14
|
+
"parallel_tool_calls"
|
|
15
|
+
],
|
|
16
|
+
"modalities": {
|
|
17
|
+
"input": [
|
|
18
|
+
"text",
|
|
19
|
+
"image"
|
|
20
|
+
],
|
|
21
|
+
"output": [
|
|
22
|
+
"text"
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
"provider": "opencode"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "claude-opus-4-7",
|
|
29
|
+
"name": "Claude Opus 4.7",
|
|
30
|
+
"family": "claude_opus",
|
|
31
|
+
"context_window": 200000,
|
|
32
|
+
"max_output_tokens": 8192,
|
|
33
|
+
"capabilities": [
|
|
34
|
+
"function_calling",
|
|
35
|
+
"streaming",
|
|
36
|
+
"vision",
|
|
37
|
+
"reasoning",
|
|
38
|
+
"tool_choice",
|
|
39
|
+
"parallel_tool_calls"
|
|
40
|
+
],
|
|
41
|
+
"modalities": {
|
|
42
|
+
"input": [
|
|
43
|
+
"text",
|
|
44
|
+
"image"
|
|
45
|
+
],
|
|
46
|
+
"output": [
|
|
47
|
+
"text"
|
|
48
|
+
]
|
|
49
|
+
},
|
|
50
|
+
"provider": "opencode"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"id": "claude-sonnet-4",
|
|
54
|
+
"name": "Claude Sonnet 4",
|
|
55
|
+
"family": "claude_sonnet",
|
|
56
|
+
"context_window": 200000,
|
|
57
|
+
"max_output_tokens": 8192,
|
|
58
|
+
"capabilities": [
|
|
59
|
+
"function_calling",
|
|
60
|
+
"streaming",
|
|
61
|
+
"vision",
|
|
62
|
+
"reasoning",
|
|
63
|
+
"tool_choice",
|
|
64
|
+
"parallel_tool_calls"
|
|
65
|
+
],
|
|
66
|
+
"modalities": {
|
|
67
|
+
"input": [
|
|
68
|
+
"text",
|
|
69
|
+
"image"
|
|
70
|
+
],
|
|
71
|
+
"output": [
|
|
72
|
+
"text"
|
|
73
|
+
]
|
|
74
|
+
},
|
|
75
|
+
"provider": "opencode"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"id": "claude-haiku-4-5",
|
|
79
|
+
"name": "Claude Haiku 4.5",
|
|
80
|
+
"family": "claude_haiku",
|
|
81
|
+
"context_window": 200000,
|
|
82
|
+
"max_output_tokens": 8192,
|
|
83
|
+
"capabilities": [
|
|
84
|
+
"function_calling",
|
|
85
|
+
"streaming",
|
|
86
|
+
"vision",
|
|
87
|
+
"reasoning",
|
|
88
|
+
"tool_choice",
|
|
89
|
+
"parallel_tool_calls"
|
|
90
|
+
],
|
|
91
|
+
"modalities": {
|
|
92
|
+
"input": [
|
|
93
|
+
"text",
|
|
94
|
+
"image"
|
|
95
|
+
],
|
|
96
|
+
"output": [
|
|
97
|
+
"text"
|
|
98
|
+
]
|
|
99
|
+
},
|
|
100
|
+
"provider": "opencode"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"id": "claude-opus-4-5",
|
|
104
|
+
"name": "Claude Opus 4.5",
|
|
105
|
+
"family": "claude_opus",
|
|
106
|
+
"context_window": 200000,
|
|
107
|
+
"max_output_tokens": 8192,
|
|
108
|
+
"capabilities": [
|
|
109
|
+
"function_calling",
|
|
110
|
+
"streaming",
|
|
111
|
+
"vision",
|
|
112
|
+
"reasoning",
|
|
113
|
+
"tool_choice",
|
|
114
|
+
"parallel_tool_calls"
|
|
115
|
+
],
|
|
116
|
+
"modalities": {
|
|
117
|
+
"input": [
|
|
118
|
+
"text",
|
|
119
|
+
"image"
|
|
120
|
+
],
|
|
121
|
+
"output": [
|
|
122
|
+
"text"
|
|
123
|
+
]
|
|
124
|
+
},
|
|
125
|
+
"provider": "opencode"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"id": "gemini-3-flash",
|
|
129
|
+
"name": "Gemini 3 Flash",
|
|
130
|
+
"family": "gemini",
|
|
131
|
+
"context_window": 1000000,
|
|
132
|
+
"max_output_tokens": 8192,
|
|
133
|
+
"capabilities": [
|
|
134
|
+
"function_calling",
|
|
135
|
+
"streaming",
|
|
136
|
+
"vision",
|
|
137
|
+
"reasoning"
|
|
138
|
+
],
|
|
139
|
+
"modalities": {
|
|
140
|
+
"input": [
|
|
141
|
+
"text",
|
|
142
|
+
"image"
|
|
143
|
+
],
|
|
144
|
+
"output": [
|
|
145
|
+
"text"
|
|
146
|
+
]
|
|
147
|
+
},
|
|
148
|
+
"provider": "opencode"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"id": "deepseek-v4-flash",
|
|
152
|
+
"name": "DeepSeek V4 Flash",
|
|
153
|
+
"family": "deepseek_v4",
|
|
154
|
+
"context_window": 1000000,
|
|
155
|
+
"max_output_tokens": 384000,
|
|
156
|
+
"capabilities": [
|
|
157
|
+
"function_calling",
|
|
158
|
+
"streaming",
|
|
159
|
+
"reasoning",
|
|
160
|
+
"tool_choice",
|
|
161
|
+
"parallel_tool_calls"
|
|
162
|
+
],
|
|
163
|
+
"modalities": {
|
|
164
|
+
"input": ["text"],
|
|
165
|
+
"output": ["text"]
|
|
166
|
+
},
|
|
167
|
+
"provider": "opencode"
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"id": "deepseek-v4-flash-free",
|
|
171
|
+
"name": "DeepSeek V4 Flash Free",
|
|
172
|
+
"family": "deepseek_v4",
|
|
173
|
+
"context_window": 128000,
|
|
174
|
+
"max_output_tokens": 64000,
|
|
175
|
+
"capabilities": [
|
|
176
|
+
"function_calling",
|
|
177
|
+
"streaming"
|
|
178
|
+
],
|
|
179
|
+
"modalities": {
|
|
180
|
+
"input": [
|
|
181
|
+
"text"
|
|
182
|
+
],
|
|
183
|
+
"output": [
|
|
184
|
+
"text"
|
|
185
|
+
]
|
|
186
|
+
},
|
|
187
|
+
"provider": "opencode"
|
|
188
|
+
}
|
|
189
|
+
]
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "kimi-k2.6",
|
|
4
|
+
"name": "Kimi K2.6",
|
|
5
|
+
"family": "kimi",
|
|
6
|
+
"context_window": 128000,
|
|
7
|
+
"max_output_tokens": 64000,
|
|
8
|
+
"capabilities": [
|
|
9
|
+
"function_calling",
|
|
10
|
+
"streaming",
|
|
11
|
+
"reasoning"
|
|
12
|
+
],
|
|
13
|
+
"modalities": {
|
|
14
|
+
"input": [
|
|
15
|
+
"text"
|
|
16
|
+
],
|
|
17
|
+
"output": [
|
|
18
|
+
"text"
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
"provider": "opencode_go"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "kimi-k2.5",
|
|
25
|
+
"name": "Kimi K2.5",
|
|
26
|
+
"family": "kimi",
|
|
27
|
+
"context_window": 128000,
|
|
28
|
+
"max_output_tokens": 64000,
|
|
29
|
+
"capabilities": [
|
|
30
|
+
"function_calling",
|
|
31
|
+
"streaming",
|
|
32
|
+
"reasoning"
|
|
33
|
+
],
|
|
34
|
+
"modalities": {
|
|
35
|
+
"input": [
|
|
36
|
+
"text"
|
|
37
|
+
],
|
|
38
|
+
"output": [
|
|
39
|
+
"text"
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"provider": "opencode_go"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": "qwen3.6-plus",
|
|
46
|
+
"name": "Qwen 3.6 Plus",
|
|
47
|
+
"family": "qwen",
|
|
48
|
+
"context_window": 128000,
|
|
49
|
+
"max_output_tokens": 64000,
|
|
50
|
+
"capabilities": [
|
|
51
|
+
"function_calling",
|
|
52
|
+
"streaming",
|
|
53
|
+
"reasoning"
|
|
54
|
+
],
|
|
55
|
+
"modalities": {
|
|
56
|
+
"input": [
|
|
57
|
+
"text"
|
|
58
|
+
],
|
|
59
|
+
"output": [
|
|
60
|
+
"text"
|
|
61
|
+
]
|
|
62
|
+
},
|
|
63
|
+
"provider": "opencode_go"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"id": "qwen3.5-plus",
|
|
67
|
+
"name": "Qwen 3.5 Plus",
|
|
68
|
+
"family": "qwen",
|
|
69
|
+
"context_window": 128000,
|
|
70
|
+
"max_output_tokens": 64000,
|
|
71
|
+
"capabilities": [
|
|
72
|
+
"function_calling",
|
|
73
|
+
"streaming",
|
|
74
|
+
"reasoning"
|
|
75
|
+
],
|
|
76
|
+
"modalities": {
|
|
77
|
+
"input": [
|
|
78
|
+
"text"
|
|
79
|
+
],
|
|
80
|
+
"output": [
|
|
81
|
+
"text"
|
|
82
|
+
]
|
|
83
|
+
},
|
|
84
|
+
"provider": "opencode_go"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"id": "glm-5",
|
|
88
|
+
"name": "GLM-5",
|
|
89
|
+
"family": "glm",
|
|
90
|
+
"context_window": 128000,
|
|
91
|
+
"max_output_tokens": 64000,
|
|
92
|
+
"capabilities": [
|
|
93
|
+
"function_calling",
|
|
94
|
+
"streaming",
|
|
95
|
+
"reasoning"
|
|
96
|
+
],
|
|
97
|
+
"modalities": {
|
|
98
|
+
"input": [
|
|
99
|
+
"text"
|
|
100
|
+
],
|
|
101
|
+
"output": [
|
|
102
|
+
"text"
|
|
103
|
+
]
|
|
104
|
+
},
|
|
105
|
+
"provider": "opencode_go"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"id": "mimo-v2.5",
|
|
109
|
+
"name": "MIMO V2.5",
|
|
110
|
+
"family": "mimo",
|
|
111
|
+
"context_window": 128000,
|
|
112
|
+
"max_output_tokens": 64000,
|
|
113
|
+
"capabilities": [
|
|
114
|
+
"function_calling",
|
|
115
|
+
"streaming",
|
|
116
|
+
"reasoning"
|
|
117
|
+
],
|
|
118
|
+
"modalities": {
|
|
119
|
+
"input": [
|
|
120
|
+
"text"
|
|
121
|
+
],
|
|
122
|
+
"output": [
|
|
123
|
+
"text"
|
|
124
|
+
]
|
|
125
|
+
},
|
|
126
|
+
"provider": "opencode_go"
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"id": "minimax-m2.7",
|
|
130
|
+
"name": "MiniMax M2.7",
|
|
131
|
+
"family": "minimax",
|
|
132
|
+
"context_window": 128000,
|
|
133
|
+
"max_output_tokens": 64000,
|
|
134
|
+
"capabilities": [
|
|
135
|
+
"function_calling",
|
|
136
|
+
"streaming",
|
|
137
|
+
"reasoning"
|
|
138
|
+
],
|
|
139
|
+
"modalities": {
|
|
140
|
+
"input": [
|
|
141
|
+
"text"
|
|
142
|
+
],
|
|
143
|
+
"output": [
|
|
144
|
+
"text"
|
|
145
|
+
]
|
|
146
|
+
},
|
|
147
|
+
"provider": "opencode_go"
|
|
148
|
+
}
|
|
149
|
+
]
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "gpt-4o",
|
|
4
|
+
"name": "GPT-4o",
|
|
5
|
+
"family": "gpt4o",
|
|
6
|
+
"context_window": 128000,
|
|
7
|
+
"max_output_tokens": 16384,
|
|
8
|
+
"capabilities": [
|
|
9
|
+
"function_calling",
|
|
10
|
+
"streaming",
|
|
11
|
+
"structured_output",
|
|
12
|
+
"vision"
|
|
13
|
+
],
|
|
14
|
+
"modalities": {
|
|
15
|
+
"input": [
|
|
16
|
+
"text",
|
|
17
|
+
"image"
|
|
18
|
+
],
|
|
19
|
+
"output": [
|
|
20
|
+
"text"
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
"provider": "openrouter"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "claude-sonnet-4-6",
|
|
27
|
+
"name": "Claude Sonnet 4.6",
|
|
28
|
+
"family": "claude_sonnet",
|
|
29
|
+
"context_window": 200000,
|
|
30
|
+
"max_output_tokens": 8192,
|
|
31
|
+
"capabilities": [
|
|
32
|
+
"function_calling",
|
|
33
|
+
"streaming",
|
|
34
|
+
"vision",
|
|
35
|
+
"reasoning"
|
|
36
|
+
],
|
|
37
|
+
"modalities": {
|
|
38
|
+
"input": [
|
|
39
|
+
"text",
|
|
40
|
+
"image"
|
|
41
|
+
],
|
|
42
|
+
"output": [
|
|
43
|
+
"text"
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
"provider": "openrouter"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "claude-opus-4-7",
|
|
50
|
+
"name": "Claude Opus 4.7",
|
|
51
|
+
"family": "claude_opus",
|
|
52
|
+
"context_window": 200000,
|
|
53
|
+
"max_output_tokens": 8192,
|
|
54
|
+
"capabilities": [
|
|
55
|
+
"function_calling",
|
|
56
|
+
"streaming",
|
|
57
|
+
"vision",
|
|
58
|
+
"reasoning"
|
|
59
|
+
],
|
|
60
|
+
"modalities": {
|
|
61
|
+
"input": [
|
|
62
|
+
"text",
|
|
63
|
+
"image"
|
|
64
|
+
],
|
|
65
|
+
"output": [
|
|
66
|
+
"text"
|
|
67
|
+
]
|
|
68
|
+
},
|
|
69
|
+
"provider": "openrouter"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"id": "gemini-3-flash",
|
|
73
|
+
"name": "Gemini 3 Flash",
|
|
74
|
+
"family": "gemini",
|
|
75
|
+
"context_window": 1000000,
|
|
76
|
+
"max_output_tokens": 8192,
|
|
77
|
+
"capabilities": [
|
|
78
|
+
"function_calling",
|
|
79
|
+
"streaming",
|
|
80
|
+
"vision",
|
|
81
|
+
"reasoning"
|
|
82
|
+
],
|
|
83
|
+
"modalities": {
|
|
84
|
+
"input": [
|
|
85
|
+
"text",
|
|
86
|
+
"image"
|
|
87
|
+
],
|
|
88
|
+
"output": [
|
|
89
|
+
"text"
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
"provider": "openrouter"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"id": "deepseek-v4-flash",
|
|
96
|
+
"name": "DeepSeek V4 Flash",
|
|
97
|
+
"family": "deepseek_v4",
|
|
98
|
+
"context_window": 1000000,
|
|
99
|
+
"max_output_tokens": 384000,
|
|
100
|
+
"capabilities": [
|
|
101
|
+
"function_calling",
|
|
102
|
+
"streaming",
|
|
103
|
+
"reasoning"
|
|
104
|
+
],
|
|
105
|
+
"modalities": {
|
|
106
|
+
"input": [
|
|
107
|
+
"text"
|
|
108
|
+
],
|
|
109
|
+
"output": [
|
|
110
|
+
"text"
|
|
111
|
+
]
|
|
112
|
+
},
|
|
113
|
+
"provider": "openrouter"
|
|
114
|
+
}
|
|
115
|
+
]
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "Ask::LLM Model Entry",
|
|
4
|
+
"description": "A single model entry in the ask-llm-providers model catalog",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["id", "provider"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"id": {
|
|
9
|
+
"type": "string",
|
|
10
|
+
"description": "Model identifier used in API requests"
|
|
11
|
+
},
|
|
12
|
+
"name": {
|
|
13
|
+
"type": "string",
|
|
14
|
+
"description": "Human-readable model name"
|
|
15
|
+
},
|
|
16
|
+
"provider": {
|
|
17
|
+
"type": "string",
|
|
18
|
+
"description": "Provider slug matching a registered Ask::Provider (e.g. 'openai', 'opencode')"
|
|
19
|
+
},
|
|
20
|
+
"family": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"description": "Model family grouping (e.g. 'gpt4o', 'claude_sonnet')"
|
|
23
|
+
},
|
|
24
|
+
"context_window": {
|
|
25
|
+
"type": "integer",
|
|
26
|
+
"description": "Maximum context window in tokens"
|
|
27
|
+
},
|
|
28
|
+
"max_output_tokens": {
|
|
29
|
+
"type": "integer",
|
|
30
|
+
"description": "Maximum output tokens"
|
|
31
|
+
},
|
|
32
|
+
"capabilities": {
|
|
33
|
+
"type": "array",
|
|
34
|
+
"items": {
|
|
35
|
+
"type": "string",
|
|
36
|
+
"enum": [
|
|
37
|
+
"function_calling", "streaming", "structured_output",
|
|
38
|
+
"vision", "reasoning", "audio", "embedding",
|
|
39
|
+
"prompt_caching", "tool_choice", "parallel_tool_calls"
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"description": "Capability flags for this model"
|
|
43
|
+
},
|
|
44
|
+
"modalities": {
|
|
45
|
+
"type": "object",
|
|
46
|
+
"properties": {
|
|
47
|
+
"input": {
|
|
48
|
+
"type": "array",
|
|
49
|
+
"items": { "type": "string", "enum": ["text", "image", "audio", "pdf", "video"] }
|
|
50
|
+
},
|
|
51
|
+
"output": {
|
|
52
|
+
"type": "array",
|
|
53
|
+
"items": { "type": "string", "enum": ["text", "image", "audio", "embeddings"] }
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"pricing": {
|
|
58
|
+
"type": "object",
|
|
59
|
+
"description": "Pricing information per million tokens"
|
|
60
|
+
},
|
|
61
|
+
"knowledge_cutoff": {
|
|
62
|
+
"type": "string",
|
|
63
|
+
"description": "Knowledge cutoff date"
|
|
64
|
+
},
|
|
65
|
+
"created_at": {
|
|
66
|
+
"type": "string",
|
|
67
|
+
"description": "Model release/creation date"
|
|
68
|
+
},
|
|
69
|
+
"metadata": {
|
|
70
|
+
"type": "object",
|
|
71
|
+
"description": "Additional metadata (open_weights, source, etc.)"
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
data/lib/ask/llm/version.rb
CHANGED
data/lib/ask-llm-providers.rb
CHANGED
|
@@ -11,7 +11,8 @@ require "base64"
|
|
|
11
11
|
require_relative "ask/llm/config"
|
|
12
12
|
require_relative "ask/llm/http"
|
|
13
13
|
require_relative "ask/llm/sse_buffer"
|
|
14
|
-
require_relative "ask/llm/
|
|
14
|
+
require_relative "ask/llm/catalog"
|
|
15
|
+
require_relative "ask/llm/aliases"
|
|
15
16
|
|
|
16
17
|
# Load providers
|
|
17
18
|
require_relative "ask/provider/openai"
|
|
@@ -41,19 +42,5 @@ Ask::Provider.register(:mimo, Ask::Providers::Mimo)
|
|
|
41
42
|
Ask::Provider.register(:deepseek, Ask::Providers::DeepSeek)
|
|
42
43
|
Ask::Provider.register(:openrouter, Ask::Providers::OpenRouter)
|
|
43
44
|
|
|
44
|
-
#
|
|
45
|
-
|
|
46
|
-
[Ask::Providers::OpenAI, Ask::LLM::Models::OPENAI_MODELS],
|
|
47
|
-
[Ask::Providers::Anthropic, Ask::LLM::Models::ANTHROPIC_MODELS],
|
|
48
|
-
[Ask::Providers::Google, Ask::LLM::Models::GOOGLE_MODELS],
|
|
49
|
-
[Ask::Providers::Mistral, Ask::LLM::Models::MISTRAL_MODELS],
|
|
50
|
-
[Ask::Providers::Ollama, Ask::LLM::Models::OLLAMA_MODELS]
|
|
51
|
-
].each do |provider, models|
|
|
52
|
-
models.each do |m|
|
|
53
|
-
Ask::ModelCatalog.instance.register(Ask::ModelInfo.new(
|
|
54
|
-
id: m[:id], provider: provider.slug, family: m[:family],
|
|
55
|
-
capabilities: m[:capabilities],
|
|
56
|
-
context_window: m[:context], max_output_tokens: m[:output]
|
|
57
|
-
))
|
|
58
|
-
end
|
|
59
|
-
end
|
|
45
|
+
# Load bundled model catalog into Ask::ModelCatalog
|
|
46
|
+
Ask::LLM::Catalog.load!
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ask-llm-providers
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kaka Ruto
|
|
@@ -176,9 +176,24 @@ files:
|
|
|
176
176
|
- LICENSE
|
|
177
177
|
- README.md
|
|
178
178
|
- lib/ask-llm-providers.rb
|
|
179
|
+
- lib/ask/llm/aliases.json
|
|
180
|
+
- lib/ask/llm/aliases.rb
|
|
181
|
+
- lib/ask/llm/catalog.rb
|
|
179
182
|
- lib/ask/llm/config.rb
|
|
180
183
|
- lib/ask/llm/http.rb
|
|
181
|
-
- lib/ask/llm/models/
|
|
184
|
+
- lib/ask/llm/models/anthropic.json
|
|
185
|
+
- lib/ask/llm/models/bedrock.json
|
|
186
|
+
- lib/ask/llm/models/cloudflare.json
|
|
187
|
+
- lib/ask/llm/models/deepseek.json
|
|
188
|
+
- lib/ask/llm/models/gemini.json
|
|
189
|
+
- lib/ask/llm/models/mimo.json
|
|
190
|
+
- lib/ask/llm/models/mistral.json
|
|
191
|
+
- lib/ask/llm/models/ollama.json
|
|
192
|
+
- lib/ask/llm/models/openai.json
|
|
193
|
+
- lib/ask/llm/models/opencode.json
|
|
194
|
+
- lib/ask/llm/models/opencode_go.json
|
|
195
|
+
- lib/ask/llm/models/openrouter.json
|
|
196
|
+
- lib/ask/llm/models_schema.json
|
|
182
197
|
- lib/ask/llm/sse_buffer.rb
|
|
183
198
|
- lib/ask/llm/version.rb
|
|
184
199
|
- lib/ask/provider/anthropic.rb
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# Model definitions for OpenAI and compatible providers.
|
|
4
|
-
# Registered on gem load via Ask::Models.register.
|
|
5
|
-
module Ask
|
|
6
|
-
module LLM
|
|
7
|
-
module Models
|
|
8
|
-
OPENAI_MODELS = [
|
|
9
|
-
{ id: "gpt-4o", family: "gpt4o", capabilities: %w[chat streaming function_calling structured_output vision], context: 128000, output: 16384 },
|
|
10
|
-
{ id: "gpt-4o-mini", family: "gpt4o_mini", capabilities: %w[chat streaming function_calling structured_output vision], context: 128000, output: 16384 },
|
|
11
|
-
{ id: "gpt-4.1", family: "gpt41", capabilities: %w[chat streaming function_calling structured_output vision], context: 1047576, output: 32768 },
|
|
12
|
-
{ id: "gpt-4.1-mini", family: "gpt41_mini", capabilities: %w[chat streaming function_calling structured_output vision], context: 1047576, output: 32768 },
|
|
13
|
-
{ id: "gpt-4.1-nano", family: "gpt41_nano", capabilities: %w[chat streaming function_calling structured_output vision], context: 1047576, output: 32768 },
|
|
14
|
-
{ id: "gpt-4-turbo", family: "gpt4_turbo", capabilities: %w[chat streaming function_calling vision], context: 128000, output: 4096 },
|
|
15
|
-
{ id: "gpt-4", family: "gpt4", capabilities: %w[chat streaming function_calling], context: 8192, output: 8192 },
|
|
16
|
-
{ id: "o1", family: "o1", capabilities: %w[chat streaming function_calling structured_output reasoning], context: 200000, output: 100000 },
|
|
17
|
-
{ id: "o1-mini", family: "o1_mini", capabilities: %w[chat streaming function_calling reasoning], context: 128000, output: 65536 },
|
|
18
|
-
{ id: "o3-mini", family: "o3_mini", capabilities: %w[chat streaming function_calling structured_output reasoning], context: 200000, output: 100000 },
|
|
19
|
-
{ id: "gpt-4o-audio-preview", family: "gpt4o_audio", capabilities: %w[chat streaming audio], context: 128000 },
|
|
20
|
-
{ id: "gpt-4o-realtime-preview", family: "gpt4o_realtime", capabilities: %w[chat streaming audio], context: 128000 },
|
|
21
|
-
{ id: "gpt-4o-mini-realtime-preview", family: "gpt4o_mini_realtime", capabilities: %w[chat streaming audio], context: 128000 },
|
|
22
|
-
{ id: "gpt-4.5-preview", family: "gpt45", capabilities: %w[chat streaming function_calling structured_output vision], context: 128000, output: 16384 },
|
|
23
|
-
{ id: "text-embedding-3-large", family: "embedding3_large", capabilities: %w[embed], context: 8191 },
|
|
24
|
-
{ id: "text-embedding-3-small", family: "embedding3_small", capabilities: %w[embed], context: 8191 },
|
|
25
|
-
{ id: "whisper-1", family: "whisper", capabilities: %w[transcribe] },
|
|
26
|
-
{ id: "tts-1", family: "tts1", capabilities: %w[tts] },
|
|
27
|
-
{ id: "tts-1-hd", family: "tts1_hd", capabilities: %w[tts] },
|
|
28
|
-
{ id: "dall-e-3", family: "dall_e", capabilities: %w[paint] },
|
|
29
|
-
{ id: "dall-e-2", family: "dall_e", capabilities: %w[paint] }
|
|
30
|
-
].freeze
|
|
31
|
-
|
|
32
|
-
ANTHROPIC_MODELS = [
|
|
33
|
-
{ id: "claude-sonnet-4-5", family: "claude_sonnet", capabilities: %w[chat streaming function_calling vision thinking prompt_caching], context: 200000, output: 8192 },
|
|
34
|
-
{ id: "claude-sonnet-4", family: "claude_sonnet", capabilities: %w[chat streaming function_calling vision thinking prompt_caching], context: 200000, output: 8192 },
|
|
35
|
-
{ id: "claude-4-opus", family: "claude_opus", capabilities: %w[chat streaming function_calling vision thinking prompt_caching], context: 200000, output: 8192 },
|
|
36
|
-
{ id: "claude-3.5-sonnet", family: "claude_sonnet", capabilities: %w[chat streaming function_calling vision thinking], context: 200000, output: 8192 },
|
|
37
|
-
{ id: "claude-3.5-haiku", family: "claude_haiku", capabilities: %w[chat streaming function_calling vision thinking], context: 200000, output: 8192 },
|
|
38
|
-
{ id: "claude-3-opus", family: "claude_opus", capabilities: %w[chat streaming function_calling vision thinking], context: 200000, output: 4096 },
|
|
39
|
-
{ id: "claude-3-sonnet", family: "claude_sonnet", capabilities: %w[chat streaming function_calling vision], context: 200000, output: 4096 },
|
|
40
|
-
{ id: "claude-3-haiku", family: "claude_haiku", capabilities: %w[chat streaming function_calling vision], context: 200000, output: 4096 }
|
|
41
|
-
].freeze
|
|
42
|
-
|
|
43
|
-
GOOGLE_MODELS = [
|
|
44
|
-
{ id: "gemini-2.5-pro", family: "gemini", capabilities: %w[chat streaming function_calling structured_output vision reasoning], context: 1048576, output: 65536 },
|
|
45
|
-
{ id: "gemini-2.5-flash", family: "gemini", capabilities: %w[chat streaming function_calling structured_output vision], context: 1048576, output: 65536 },
|
|
46
|
-
{ id: "gemini-2.0-flash", family: "gemini", capabilities: %w[chat streaming function_calling structured_output vision], context: 1048576, output: 8192 },
|
|
47
|
-
{ id: "gemini-1.5-pro", family: "gemini", capabilities: %w[chat streaming function_calling structured_output vision], context: 2097152, output: 8192 },
|
|
48
|
-
{ id: "gemini-1.5-flash", family: "gemini", capabilities: %w[chat streaming function_calling structured_output vision], context: 1048576, output: 8192 },
|
|
49
|
-
{ id: "text-embedding-004", family: "embedding", capabilities: %w[embed], context: 2048 }
|
|
50
|
-
].freeze
|
|
51
|
-
|
|
52
|
-
MISTRAL_MODELS = [
|
|
53
|
-
{ id: "mistral-large-2501", family: "mistral", capabilities: %w[chat streaming function_calling structured_output], context: 128000, output: 4096 },
|
|
54
|
-
{ id: "mistral-small-2501", family: "mistral", capabilities: %w[chat streaming function_calling structured_output], context: 128000, output: 4096 },
|
|
55
|
-
{ id: "mistral-embed", family: "mistral", capabilities: %w[embed], context: 8192 }
|
|
56
|
-
].freeze
|
|
57
|
-
|
|
58
|
-
OLLAMA_MODELS = [
|
|
59
|
-
{ id: "llama3.2", family: "llama", capabilities: %w[chat streaming], context: 8192 },
|
|
60
|
-
{ id: "llama3.3", family: "llama", capabilities: %w[chat streaming], context: 8192 },
|
|
61
|
-
{ id: "mistral", family: "mistral", capabilities: %w[chat streaming], context: 8192 },
|
|
62
|
-
{ id: "gemma3", family: "gemma", capabilities: %w[chat streaming], context: 8192 },
|
|
63
|
-
{ id: "phi4", family: "phi", capabilities: %w[chat streaming], context: 8192 },
|
|
64
|
-
{ id: "qwen2.5", family: "qwen", capabilities: %w[chat streaming], context: 32768 },
|
|
65
|
-
{ id: "deepseek-r1", family: "deepseek", capabilities: %w[chat streaming reasoning], context: 8192 }
|
|
66
|
-
].freeze
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|