Skip to content

Conversation

OskarStark
Copy link
Contributor

Q A
Bug fix? no
New feature? yes
Docs? no
Issues --
License MIT

@carsonbot carsonbot added Feature New feature Store Issues & PRs about the AI Store component Status: Needs Review labels Aug 29, 2025
@OskarStark OskarStark merged commit c839ddc into symfony:main Aug 29, 2025
7 checks passed
pentiminax pushed a commit to pentiminax/symfony-ai that referenced this pull request Sep 3, 2025
This PR adds support for [Albert
API](https://github.com/etalab-ia/albert-api), the French government's
sovereign AI gateway. Albert provides an OpenAI-compatible API interface
for various language models while ensuring data sovereignty and
compliance with French/EU regulations.

- 🇫🇷 **Sovereign AI**: Albert is hosted and operated by the French
government
- 🔧 **OpenAI-compatible**: Uses the same API structure as OpenAI
- 🔒 **Data Privacy**: Ensures data remains within French/EU jurisdiction
- 🎯 **Public Sector Focus**: Designed for use by French public
administration

- Created Albert-specific model clients (GPTModelClient and
EmbeddingsModelClient) with configurable base URL
- Added PlatformFactory for easy Albert API initialization
- Reuses OpenAI's response converters for compatibility
- Supports both chat completions and embeddings endpoints

```php
use PhpLlm\LlmChain\Platform\Bridge\Albert\PlatformFactory;
use PhpLlm\LlmChain\Platform\Bridge\OpenAI\GPT;

$platform = PlatformFactory::create(
    apiKey: $_ENV['ALBERT_API_KEY'],
    albertUrl: $_ENV['ALBERT_API_URL']
);

$model = new GPT('gpt-4o');
$chain = new Chain($platform, $model);
```

- Added unit tests for PlatformFactory
- Added example script demonstrating Albert API usage with RAG context
- All tests pass and code follows project standards

- Updated README to list Albert as a supported platform
- Added example file showing how to use Albert API
- Included context about French AI strategy in the example

This implementation allows French public sector organizations to
leverage LLM Chain while maintaining data sovereignty and regulatory
compliance.

Closes symfony#346
pentiminax pushed a commit to pentiminax/symfony-ai that referenced this pull request Sep 3, 2025
This PR was merged into the main branch.

Discussion
----------

[Platform] add Albert API support

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| Docs?         | yes
| Issues        |
| License       | MIT

Cherry picking php-llm/llm-chain#366

Commits
-------

99ce42a feat: add Albert API support (symfony#366)
@lyrixx
Copy link
Member

lyrixx commented Oct 3, 2025

Hello, I thinks it's a bad idea to mark it as final.

For exemple, I override the store, to override some parts:

class ClickHouseStore extends SymfonyClickHouseStore
{
    public function initialize(array $options = []): void
    {
        $sql = <<<'SQL'
            CREATE TABLE IF NOT EXISTS {{ table }} (
                id UUID,
                metadata String,
                embedding Array(Float32),
                crawlId UUID,
                -- INDEX embedding_idx embedding TYPE vector_similarity('hnsw', 'cosineDistance', 3072)
            ) ENGINE = MergeTree()
            PRIMARY KEY crawlId
        SQL;

        $this->execute('POST', $sql);
    }

    protected function formatVectorDocument(VectorDocument $document): array
    {
        $formatted = parent::formatVectorDocument($document);

        $formatted['crawlId'] = $document->metadata['crawlId'];

        return $formatted;
    }
}

Composition here is not easy, and seems overkill.

Could we consider to revert this PR?

@OskarStark
Copy link
Contributor Author

Yes, let's open them up all please, thanks

OskarStark added a commit that referenced this pull request Oct 3, 2025
This PR was merged into the main branch.

Discussion
----------

[Store] Do not finalize the classes anymore

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| Docs?         | no
| Issues        | Fix #366 (comment)
| License       | MIT

<!--
Replace this notice by a description of your feature/bugfix.
This will help reviewers and should be a good start for the documentation.

Additionally (see https://symfony.com/releases):
 - Always add tests and ensure they pass.
 - For new features, provide some code snippets to help understand usage.
 - Features and deprecations must be submitted against branch main.
 - Update/add documentation as required (we can help!)
 - Changelog entry should follow https://symfony.com/doc/current/contributing/code/conventions.html#writing-a-changelog-entry
 - Never break backward compatibility (see https://symfony.com/bc).
-->

Commits
-------

3b89731 [Store] Do not finalize the classes anymore
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature New feature Status: Needs Review Store Issues & PRs about the AI Store component
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants