LLPhant: PHP-фреймворк для генеративного ИИ

LLPhant - это библиотека на PHP для создания приложений с генеративным ИИ. Она предоставляет единый интерфейс для работы с различными LLM-провайдерами и заимствует архитектурные подходы из LangChain и LlamaIndex.

Фреймворк разработан Максимом Тунсеном и ориентирован на упрощение интеграции ИИ в PHP-приложения.

Поддержка нескольких LLM-провайдеров

LLPhant абстрагирует различия между провайдерами, позволяя переключаться между ними без значительных изменений в коде. Поддерживаются OpenAI, Anthropic, Mistral, LM Studio и Ollama.

Пример использования разных моделей с одинаковым интерфейсом:

// OpenAI

$chat = new OpenAIChat();
$response = $chat->generateText('What is the capital of France?');


// Anthropic Claude

$chat = new AnthropicChat(
    new AnthropicConfig(AnthropicConfig::CLAUDE_3_5_SONNET)
);
$response = $chat->generateText('What is the capital of France?');


// Локальные модели через Ollama

$config = new OllamaConfig();
$config->model = 'llama2';

$chat = new OllamaChat($config);

Библиотека также поддерживает стриминг ответов, учет использования токенов и работу с изображениями.

Embeddings и векторные хранилища

LLPhant включает полный пайплайн для построения RAG-приложений: загрузка документов, разбиение на части, генерация эмбеддингов и сохранение в векторные базы данных.

Пример:

// Чтение документов

$reader = new FileDataReader(__DIR__.'/documents');
$documents = $reader->getDocuments();


// Разбиение на части

$splitDocuments = DocumentSplitter::splitDocuments($documents, 800);


// Генерация эмбеддингов

$embeddingGenerator = new OpenAI3SmallEmbeddingGenerator();
$embeddedDocuments = $embeddingGenerator->embedDocuments($splitDocuments);


// Сохранение в PostgreSQL (pgvector)

$vectorStore = new DoctrineVectorStore($entityManager, Document::class);
$vectorStore->addDocuments($embeddedDocuments);


// Поиск похожих данных

$embedding = $embeddingGenerator->embedText('search query');
$results = $vectorStore->similaritySearch($embedding, 5);

Поддерживаются различные векторные хранилища, включая PostgreSQL (pgvector), Redis, Elasticsearch, MongoDB, Qdrant, Milvus, Pinecone и другие.

Вопрос-ответ с использованием RAG

Класс QuestionAnswering реализует полный цикл RAG: поиск релевантных документов и генерацию ответа на их основе.

use LLPhant\Query\SemanticSearch\QuestionAnswering;

$qa = new QuestionAnswering(
    $vectorStore,
    $embeddingGenerator,
    $chat
);

$response = $qa->answerQuestion(
    'What are the main topics covered in the documentation?'
);

Поддерживается настройка системного промпта, добавление ограничений (guardrails) и использование multi-query подходов для повышения качества поиска.

Function calling и инструменты

LLPhant поддерживает механизм function calling (tools), позволяющий моделям взаимодействовать с внешними API и сервисами. Инструменты описываются как PHP-классы, а модель сама решает, когда их использовать в зависимости от контекста диалога.

Похожие статьи

Рекомендательные технологии Подробнее
Разработка и инструменты 5 месяцев назад

Observers в Laravel: чистый способ обработки событий моделей

Что такое наблюдатели в Laravel и как их использовать для чистой обработки событий моделей. Разбор, примеры, регистрация, преимущества и сравнение с событийно-слушательным подходом.

Разработка и инструменты 5 месяцев назад

Оптимизация Laravel-приложений с Octane

Полное руководство по Laravel Octane: от базовой концепции до настройки, особенностей и сравнения с классическим подходом. Узнайте, как Octane ускоряет Laravel-приложения и когда его стоит использовать.