Skip to content

Commit 1a82e05

Browse files
committed
Introduce Open Responses Platform Bridge by extracting from OpenAI
1 parent 75746d6 commit 1a82e05

26 files changed

+1190
-52
lines changed

src/platform/src/Bridge/OpenAi/Contract/OpenAiContract.php

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace Symfony\AI\Platform\Bridge\OpenAi\Contract;
1313

1414
use Symfony\AI\Platform\Bridge\OpenAi\Whisper\AudioNormalizer;
15+
use Symfony\AI\Platform\Bridge\OpenResponses\Contract\OpenResponsesContract;
1516
use Symfony\AI\Platform\Contract;
1617
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
1718

@@ -22,18 +23,9 @@ final class OpenAiContract extends Contract
2223
{
2324
public static function create(NormalizerInterface ...$normalizer): Contract
2425
{
25-
return parent::create(
26-
new Gpt\Message\MessageBagNormalizer(),
27-
new Gpt\Message\AssistantMessageNormalizer(),
28-
new Gpt\Message\Content\ImageNormalizer(),
29-
new Gpt\Message\Content\ImageUrlNormalizer(),
30-
new Gpt\Message\Content\TextNormalizer(),
31-
new Gpt\ToolNormalizer(),
32-
new Gpt\ToolCallNormalizer(),
33-
new Gpt\Message\ToolCallMessageNormalizer(),
34-
new Gpt\Message\Content\DocumentNormalizer(),
26+
return OpenResponsesContract::create(
3527
new AudioNormalizer(),
36-
...$normalizer
28+
...$normalizer,
3729
);
3830
}
3931
}

src/platform/src/Bridge/OpenAi/Gpt.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@
1111

1212
namespace Symfony\AI\Platform\Bridge\OpenAi;
1313

14-
use Symfony\AI\Platform\Model;
14+
use Symfony\AI\Platform\Bridge\OpenResponses\ResponsesModel;
1515

1616
/**
1717
* @author Christopher Hertel <mail@christopher-hertel.de>
1818
* @author Oskar Stark <oskarstark@googlemail.com>
1919
*/
20-
class Gpt extends Model
20+
class Gpt extends ResponsesModel
2121
{
2222
/**
2323
* @param array<mixed> $options The default options for the model usage

src/platform/src/Bridge/OpenAi/composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
],
3232
"require": {
3333
"php": ">=8.2",
34+
"symfony/ai-open-responses-platform": "^0.3",
3435
"symfony/ai-platform": "^0.3",
3536
"symfony/http-client": "^7.3|^8.0"
3637
},
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
CHANGELOG
2+
=========
3+
4+
0.4
5+
---
6+
7+
* Add the bridge

src/platform/src/Bridge/OpenAi/Contract/Gpt/Message/AssistantMessageNormalizer.php renamed to src/platform/src/Bridge/OpenResponses/Contract/Message/AssistantMessageNormalizer.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
* file that was distributed with this source code.
1010
*/
1111

12-
namespace Symfony\AI\Platform\Bridge\OpenAi\Contract\Gpt\Message;
12+
namespace Symfony\AI\Platform\Bridge\OpenResponses\Contract\Message;
1313

14-
use Symfony\AI\Platform\Bridge\OpenAi\Gpt;
14+
use Symfony\AI\Platform\Bridge\OpenResponses\ResponsesModel;
1515
use Symfony\AI\Platform\Contract\Normalizer\ModelContractNormalizer;
1616
use Symfony\AI\Platform\Message\AssistantMessage;
1717
use Symfony\AI\Platform\Model;
@@ -54,6 +54,6 @@ protected function supportedDataClass(): string
5454

5555
protected function supportsModel(Model $model): bool
5656
{
57-
return $model instanceof Gpt;
57+
return $model instanceof ResponsesModel;
5858
}
5959
}

src/platform/src/Bridge/OpenAi/Contract/Gpt/Message/Content/DocumentNormalizer.php renamed to src/platform/src/Bridge/OpenResponses/Contract/Message/Content/DocumentNormalizer.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
* file that was distributed with this source code.
1010
*/
1111

12-
namespace Symfony\AI\Platform\Bridge\OpenAi\Contract\Gpt\Message\Content;
12+
namespace Symfony\AI\Platform\Bridge\OpenResponses\Contract\Message\Content;
1313

14-
use Symfony\AI\Platform\Bridge\OpenAi\Gpt;
14+
use Symfony\AI\Platform\Bridge\OpenResponses\ResponsesModel;
1515
use Symfony\AI\Platform\Capability;
1616
use Symfony\AI\Platform\Contract\Normalizer\ModelContractNormalizer;
1717
use Symfony\AI\Platform\Message\Content\Document;
@@ -21,7 +21,7 @@
2121
/**
2222
* @author Guillermo Lengemann <guillermo.lengemann@gmail.com>
2323
*/
24-
class DocumentNormalizer extends ModelContractNormalizer
24+
final class DocumentNormalizer extends ModelContractNormalizer
2525
{
2626
/**
2727
* @param File $data
@@ -44,6 +44,6 @@ protected function supportedDataClass(): string
4444

4545
protected function supportsModel(Model $model): bool
4646
{
47-
return $model instanceof Gpt && $model->supports(Capability::INPUT_PDF);
47+
return $model instanceof ResponsesModel && $model->supports(Capability::INPUT_PDF);
4848
}
4949
}

src/platform/src/Bridge/OpenAi/Contract/Gpt/Message/Content/ImageNormalizer.php renamed to src/platform/src/Bridge/OpenResponses/Contract/Message/Content/ImageNormalizer.php

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,14 @@
99
* file that was distributed with this source code.
1010
*/
1111

12-
namespace Symfony\AI\Platform\Bridge\OpenAi\Contract\Gpt\Message\Content;
12+
namespace Symfony\AI\Platform\Bridge\OpenResponses\Contract\Message\Content;
1313

14-
use Symfony\AI\Platform\Bridge\OpenAi\Gpt;
14+
use Symfony\AI\Platform\Bridge\OpenResponses\ResponsesModel;
1515
use Symfony\AI\Platform\Capability;
1616
use Symfony\AI\Platform\Contract\Normalizer\ModelContractNormalizer;
1717
use Symfony\AI\Platform\Message\Content\Image;
1818
use Symfony\AI\Platform\Model;
1919

20-
/**
21-
* See: https://platform.openai.com/docs/guides/images-vision#giving-a-model-images-as-input.
22-
*/
2320
final class ImageNormalizer extends ModelContractNormalizer
2421
{
2522
/**
@@ -45,6 +42,6 @@ protected function supportedDataClass(): string
4542

4643
protected function supportsModel(Model $model): bool
4744
{
48-
return $model instanceof Gpt && $model->supports(Capability::INPUT_IMAGE);
45+
return $model instanceof ResponsesModel && $model->supports(Capability::INPUT_IMAGE);
4946
}
5047
}

src/platform/src/Bridge/OpenAi/Contract/Gpt/Message/Content/ImageUrlNormalizer.php renamed to src/platform/src/Bridge/OpenResponses/Contract/Message/Content/ImageUrlNormalizer.php

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,14 @@
99
* file that was distributed with this source code.
1010
*/
1111

12-
namespace Symfony\AI\Platform\Bridge\OpenAi\Contract\Gpt\Message\Content;
12+
namespace Symfony\AI\Platform\Bridge\OpenResponses\Contract\Message\Content;
1313

14-
use Symfony\AI\Platform\Bridge\OpenAi\Gpt;
14+
use Symfony\AI\Platform\Bridge\OpenResponses\ResponsesModel;
1515
use Symfony\AI\Platform\Capability;
1616
use Symfony\AI\Platform\Contract\Normalizer\ModelContractNormalizer;
1717
use Symfony\AI\Platform\Message\Content\ImageUrl;
1818
use Symfony\AI\Platform\Model;
1919

20-
/**
21-
* See: https://platform.openai.com/docs/guides/images-vision#giving-a-model-images-as-input.
22-
*/
2320
final class ImageUrlNormalizer extends ModelContractNormalizer
2421
{
2522
/**
@@ -45,6 +42,6 @@ protected function supportedDataClass(): string
4542

4643
protected function supportsModel(Model $model): bool
4744
{
48-
return $model instanceof Gpt && $model->supports(Capability::INPUT_IMAGE);
45+
return $model instanceof ResponsesModel && $model->supports(Capability::INPUT_IMAGE);
4946
}
5047
}

src/platform/src/Bridge/OpenAi/Contract/Gpt/Message/Content/TextNormalizer.php renamed to src/platform/src/Bridge/OpenResponses/Contract/Message/Content/TextNormalizer.php

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,13 @@
99
* file that was distributed with this source code.
1010
*/
1111

12-
namespace Symfony\AI\Platform\Bridge\OpenAi\Contract\Gpt\Message\Content;
12+
namespace Symfony\AI\Platform\Bridge\OpenResponses\Contract\Message\Content;
1313

14-
use Symfony\AI\Platform\Bridge\OpenAi\Gpt;
14+
use Symfony\AI\Platform\Bridge\OpenResponses\ResponsesModel;
1515
use Symfony\AI\Platform\Contract\Normalizer\ModelContractNormalizer;
1616
use Symfony\AI\Platform\Message\Content\Text;
1717
use Symfony\AI\Platform\Model;
1818

19-
/**
20-
* See: https://platform.openai.com/docs/guides/images-vision#giving-a-model-images-as-input.
21-
*/
2219
final class TextNormalizer extends ModelContractNormalizer
2320
{
2421
/**
@@ -44,6 +41,6 @@ protected function supportedDataClass(): string
4441

4542
protected function supportsModel(Model $model): bool
4643
{
47-
return $model instanceof Gpt;
44+
return $model instanceof ResponsesModel;
4845
}
4946
}

src/platform/src/Bridge/OpenAi/Contract/Gpt/Message/MessageBagNormalizer.php renamed to src/platform/src/Bridge/OpenResponses/Contract/Message/MessageBagNormalizer.php

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
* file that was distributed with this source code.
1010
*/
1111

12-
namespace Symfony\AI\Platform\Bridge\OpenAi\Contract\Gpt\Message;
12+
namespace Symfony\AI\Platform\Bridge\OpenResponses\Contract\Message;
1313

14-
use Symfony\AI\Platform\Bridge\OpenAi\Gpt;
14+
use Symfony\AI\Platform\Bridge\OpenResponses\ResponsesModel;
1515
use Symfony\AI\Platform\Contract\Normalizer\ModelContractNormalizer;
1616
use Symfony\AI\Platform\Message\AssistantMessage;
1717
use Symfony\AI\Platform\Message\MessageBag;
@@ -32,8 +32,7 @@ final class MessageBagNormalizer extends ModelContractNormalizer implements Norm
3232
*
3333
* @return array{
3434
* input: array<string, mixed>,
35-
* model?: string,
36-
* system?: string,
35+
* instructions?: string,
3736
* }
3837
*
3938
* @throws ExceptionInterface
@@ -67,6 +66,6 @@ protected function supportedDataClass(): string
6766

6867
protected function supportsModel(Model $model): bool
6968
{
70-
return $model instanceof Gpt;
69+
return $model instanceof ResponsesModel;
7170
}
7271
}

0 commit comments

Comments
 (0)