Skip to content

Commit d238fb2

Browse files
committed
Refactor OpenAI model catalog to use external models.php file
- Extract model definitions to src/Bridge/OpenAi/Resources/models.php - Update ModelCatalog to load models from external file at runtime - Improve maintainability and organization - All tests passing (28 ModelCatalog tests, 131 OpenAI bridge tests)
1 parent 0b2a28c commit d238fb2

File tree

2 files changed

+255
-232
lines changed

2 files changed

+255
-232
lines changed

src/platform/src/Bridge/OpenAi/ModelCatalog.php

Lines changed: 1 addition & 232 deletions
Original file line numberDiff line numberDiff line change
@@ -24,238 +24,7 @@ final class ModelCatalog extends AbstractModelCatalog
2424
*/
2525
public function __construct(array $additionalModels = [])
2626
{
27-
$defaultModels = [
28-
'gpt-3.5-turbo' => [
29-
'class' => Gpt::class,
30-
'capabilities' => [
31-
Capability::INPUT_MESSAGES,
32-
Capability::OUTPUT_TEXT,
33-
Capability::OUTPUT_STREAMING,
34-
Capability::TOOL_CALLING,
35-
],
36-
],
37-
'gpt-3.5-turbo-instruct' => [
38-
'class' => Gpt::class,
39-
'capabilities' => [
40-
Capability::INPUT_MESSAGES,
41-
Capability::OUTPUT_TEXT,
42-
Capability::OUTPUT_STREAMING,
43-
Capability::TOOL_CALLING,
44-
],
45-
],
46-
'gpt-4' => [
47-
'class' => Gpt::class,
48-
'capabilities' => [
49-
Capability::INPUT_MESSAGES,
50-
Capability::OUTPUT_TEXT,
51-
Capability::OUTPUT_STREAMING,
52-
Capability::TOOL_CALLING,
53-
],
54-
],
55-
'gpt-4-turbo' => [
56-
'class' => Gpt::class,
57-
'capabilities' => [
58-
Capability::INPUT_MESSAGES,
59-
Capability::OUTPUT_TEXT,
60-
Capability::OUTPUT_STREAMING,
61-
Capability::TOOL_CALLING,
62-
Capability::INPUT_IMAGE,
63-
],
64-
],
65-
'gpt-4o' => [
66-
'class' => Gpt::class,
67-
'capabilities' => [
68-
Capability::INPUT_MESSAGES,
69-
Capability::OUTPUT_TEXT,
70-
Capability::OUTPUT_STREAMING,
71-
Capability::TOOL_CALLING,
72-
Capability::INPUT_IMAGE,
73-
Capability::OUTPUT_STRUCTURED,
74-
],
75-
],
76-
'gpt-4o-mini' => [
77-
'class' => Gpt::class,
78-
'capabilities' => [
79-
Capability::INPUT_MESSAGES,
80-
Capability::OUTPUT_TEXT,
81-
Capability::OUTPUT_STREAMING,
82-
Capability::TOOL_CALLING,
83-
Capability::INPUT_IMAGE,
84-
Capability::OUTPUT_STRUCTURED,
85-
],
86-
],
87-
'gpt-4o-audio-preview' => [
88-
'class' => Gpt::class,
89-
'capabilities' => [
90-
Capability::INPUT_MESSAGES,
91-
Capability::OUTPUT_TEXT,
92-
Capability::OUTPUT_STREAMING,
93-
Capability::TOOL_CALLING,
94-
Capability::INPUT_AUDIO,
95-
Capability::INPUT_IMAGE,
96-
Capability::OUTPUT_STRUCTURED,
97-
],
98-
],
99-
'o1-mini' => [
100-
'class' => Gpt::class,
101-
'capabilities' => [
102-
Capability::INPUT_MESSAGES,
103-
Capability::OUTPUT_TEXT,
104-
Capability::OUTPUT_STREAMING,
105-
Capability::TOOL_CALLING,
106-
Capability::INPUT_IMAGE,
107-
],
108-
],
109-
'o1-preview' => [
110-
'class' => Gpt::class,
111-
'capabilities' => [
112-
Capability::INPUT_MESSAGES,
113-
Capability::OUTPUT_TEXT,
114-
Capability::OUTPUT_STREAMING,
115-
Capability::TOOL_CALLING,
116-
Capability::INPUT_IMAGE,
117-
],
118-
],
119-
'o3-mini' => [
120-
'class' => Gpt::class,
121-
'capabilities' => [
122-
Capability::INPUT_MESSAGES,
123-
Capability::OUTPUT_TEXT,
124-
Capability::OUTPUT_STREAMING,
125-
Capability::TOOL_CALLING,
126-
Capability::INPUT_IMAGE,
127-
Capability::OUTPUT_STRUCTURED,
128-
],
129-
],
130-
'o3-mini-high' => [
131-
'class' => Gpt::class,
132-
'capabilities' => [
133-
Capability::INPUT_MESSAGES,
134-
Capability::OUTPUT_TEXT,
135-
Capability::OUTPUT_STREAMING,
136-
Capability::TOOL_CALLING,
137-
],
138-
],
139-
'gpt-4.5-preview' => [
140-
'class' => Gpt::class,
141-
'capabilities' => [
142-
Capability::INPUT_MESSAGES,
143-
Capability::OUTPUT_TEXT,
144-
Capability::OUTPUT_STREAMING,
145-
Capability::TOOL_CALLING,
146-
Capability::INPUT_IMAGE,
147-
Capability::OUTPUT_STRUCTURED,
148-
],
149-
],
150-
'gpt-4.1' => [
151-
'class' => Gpt::class,
152-
'capabilities' => [
153-
Capability::INPUT_MESSAGES,
154-
Capability::OUTPUT_TEXT,
155-
Capability::OUTPUT_STREAMING,
156-
Capability::TOOL_CALLING,
157-
Capability::INPUT_IMAGE,
158-
Capability::OUTPUT_STRUCTURED,
159-
],
160-
],
161-
'gpt-4.1-mini' => [
162-
'class' => Gpt::class,
163-
'capabilities' => [
164-
Capability::INPUT_MESSAGES,
165-
Capability::OUTPUT_TEXT,
166-
Capability::OUTPUT_STREAMING,
167-
Capability::TOOL_CALLING,
168-
Capability::INPUT_IMAGE,
169-
Capability::OUTPUT_STRUCTURED,
170-
],
171-
],
172-
'gpt-4.1-nano' => [
173-
'class' => Gpt::class,
174-
'capabilities' => [
175-
Capability::INPUT_MESSAGES,
176-
Capability::OUTPUT_TEXT,
177-
Capability::OUTPUT_STREAMING,
178-
Capability::TOOL_CALLING,
179-
Capability::INPUT_IMAGE,
180-
Capability::OUTPUT_STRUCTURED,
181-
],
182-
],
183-
'gpt-5' => [
184-
'class' => Gpt::class,
185-
'capabilities' => [
186-
Capability::INPUT_MESSAGES,
187-
Capability::OUTPUT_TEXT,
188-
Capability::OUTPUT_STREAMING,
189-
Capability::TOOL_CALLING,
190-
Capability::INPUT_IMAGE,
191-
Capability::OUTPUT_STRUCTURED,
192-
],
193-
],
194-
'gpt-5-chat-latest' => [
195-
'class' => Gpt::class,
196-
'capabilities' => [
197-
Capability::INPUT_MESSAGES,
198-
Capability::OUTPUT_TEXT,
199-
Capability::OUTPUT_STREAMING,
200-
Capability::INPUT_IMAGE,
201-
],
202-
],
203-
'gpt-5-mini' => [
204-
'class' => Gpt::class,
205-
'capabilities' => [
206-
Capability::INPUT_MESSAGES,
207-
Capability::OUTPUT_TEXT,
208-
Capability::OUTPUT_STREAMING,
209-
Capability::TOOL_CALLING,
210-
Capability::INPUT_IMAGE,
211-
Capability::OUTPUT_STRUCTURED,
212-
],
213-
],
214-
'gpt-5-nano' => [
215-
'class' => Gpt::class,
216-
'capabilities' => [
217-
Capability::INPUT_MESSAGES,
218-
Capability::OUTPUT_TEXT,
219-
Capability::OUTPUT_STREAMING,
220-
Capability::TOOL_CALLING,
221-
Capability::INPUT_IMAGE,
222-
Capability::OUTPUT_STRUCTURED,
223-
],
224-
],
225-
'text-embedding-ada-002' => [
226-
'class' => Embeddings::class,
227-
'capabilities' => [Capability::INPUT_TEXT],
228-
],
229-
'text-embedding-3-large' => [
230-
'class' => Embeddings::class,
231-
'capabilities' => [Capability::INPUT_TEXT],
232-
],
233-
'text-embedding-3-small' => [
234-
'class' => Embeddings::class,
235-
'capabilities' => [Capability::INPUT_TEXT],
236-
],
237-
'whisper-1' => [
238-
'class' => Whisper::class,
239-
'capabilities' => [
240-
Capability::INPUT_AUDIO,
241-
Capability::OUTPUT_TEXT,
242-
],
243-
],
244-
'dall-e-2' => [
245-
'class' => DallE::class,
246-
'capabilities' => [
247-
Capability::INPUT_TEXT,
248-
Capability::OUTPUT_IMAGE,
249-
],
250-
],
251-
'dall-e-3' => [
252-
'class' => DallE::class,
253-
'capabilities' => [
254-
Capability::INPUT_TEXT,
255-
Capability::OUTPUT_IMAGE,
256-
],
257-
],
258-
];
27+
$defaultModels = require __DIR__.'/Resources/models.php';
25928

26029
$this->models = array_merge($defaultModels, $additionalModels);
26130
}

0 commit comments

Comments
 (0)