Skip to content

feat: add Albert API support #366

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 13 commits into
base: main
Choose a base branch
from
Open

Conversation

OskarStark
Copy link
Contributor

@OskarStark OskarStark commented Jun 30, 2025

Description

This PR adds support for 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.

Key Features

  • 🇫🇷 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

Implementation Details

  • 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

Usage Example

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);

Testing

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

Documentation

  • 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.

@OskarStark OskarStark changed the title feat: add Albert API support docs: add Albert API usage example Jun 30, 2025
@OskarStark OskarStark changed the title docs: add Albert API usage example feat: add Albert API support Jun 30, 2025
@chr-hertel chr-hertel marked this pull request as draft June 30, 2025 20:29
- Albert API is an OpenAI-compatible sovereign AI gateway by French government
- Added examples for chat, RAG, streaming, and tool calling
- Updated README to include Albert in supported platforms
- Added Albert configuration to .env file

Closes #346
- Add backslash prefix to global PHP constants
- Cast  to string in rtrim() calls
- Fix indentation in heredoc strings
- Add missing newlines at end of files
- Remove headers from example outputs
- Keep only the response content output
- Make examples consistent with other examples in the project
- Remove ALBERT_MODEL from .env and examples
- Use standard model names that Albert will route appropriately
- Remove toolcall and stream examples for simplicity
- Update README documentation
- Remove chat.php example
- Update README to point to rag.php
- Focus on Albert's key differentiator: built-in RAG capabilities
- Remove Albert-specific README
- Rename rag.php to chat.php for consistency
- Single example showcasing Albert's RAG capabilities
- Create dedicated PlatformFactory for Albert API
- Handle Albert-specific URL configuration
- Add tests for the new bridge
- Update documentation to reflect Albert as a separate platform
@OskarStark OskarStark force-pushed the feat/albert-api-support branch from eca9b78 to 8957546 Compare July 1, 2025 18:25
- Add GPTModelClient and EmbeddingsModelClient for Albert with configurable base URL
- Update PlatformFactory to use Albert-specific clients instead of OpenAI's
- Fix PHPStan errors by using correct Platform class
- Apply code style fixes
@OskarStark OskarStark marked this pull request as ready for review July 1, 2025 18:55
- Replace empty() with isset() checks in examples
- Remove unnecessary comments ending with 'OpenAI-compatible'
- Remove redundant doc comments
- Add HTTPS validation for Albert URL
- Make /v1 path handling more flexible
- Use data provider for URL tests
- Add test for HTTPS validation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant