Download the PHP package pv-source/aivory without Composer
On this page you can find all versions of the php package pv-source/aivory. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download pv-source/aivory
More information about pv-source/aivory
Files in pv-source/aivory
Package aivory
Short Description PHP библиотека для работы с AI LLM-провайдерами (OpenAI-совместимое API). Единый интерфейс с поддержкой типизированных ответов, JSON Schema и fluent API, вдохновленным Eloquent
License MIT
Informations about the package aivory
Aivory
Aivory — PHP библиотека для работы с AI LLM-провайдерами (OpenAI-совместимое API, пример: DeepSeek, ChatGPT). Предоставляет единый интерфейс для отправки запросов к различным AI API с поддержкой типизированных ответов, JSON Schema и удобного fluent API. Реализация библиотеки вдохновлена Eloquent и стремится использовать подход API AS DB по отношению к нейросетям, а также функциональность стремящуюся к схожести c Eloquent.
🚀 Основные возможности
- ✅ Множественные провайдеры — поддержка DeepSeek, OpenAI и легко расширяемая архитектура
- ✅ Типизированные ответы — автоматическое преобразование JSON ответов в PHP объекты через
JsonSchemaInterface - ✅ Fluent API — удобный builder pattern для построения запросов
- ✅ JSON Schema — использование классов вместо ручного написания схем
- ✅ Thinking Mode — поддержка режима размышления (DeepSeek)
- ✅ Scope методы — создание переиспользуемых конфигураций (как в Laravel Eloquent)
- ✅ PSR-7 совместимость — работа с стандартными HTTP интерфейсами
- ✅ Type-safe — строгая типизация и валидация на всех уровнях
📦 Установка
Требования
- PHP 8.3+
- Guzzle HTTP Client 7.10+
🎯 Быстрый старт
Простой пример
Использование с JSON Schema
📚 Документация
Основные концепции
1. Client — точка входа
Client создает и координирует работу всех компонентов библиотеки:
2. Turn — базовый класс для запросов
Turn предоставляет fluent API для построения и отправки запросов:
3. Кастомные Turn классы
Создавайте свои классы, наследующие Turn, для переиспользования конфигураций:
4. JsonSchemaInterface — типизированные ответы
Создавайте классы, реализующие JsonSchemaInterface, для автоматического преобразования ответов:
Поддерживаемые провайдеры
DeepSeek
Особенности:
- ✅ Поддержка thinking mode (
isThinking) - ✅ Reasoning content в ответах
- ✅ JSON Schema через системное сообщение
OpenAI
Особенности:
- ✅ JSON Schema через отдельное поле
json_schema - ❌ Не поддерживает thinking mode
Параметры запроса
Все параметры доступны через fluent API:
Работа с ответами
📖 Примеры
Простой пример
См. examples/simple/index.php
Продвинутый пример
См. examples/advanced/index.php
Демонстрирует:
- Использование
JsonSchemaInterface - Создание кастомных
Turnклассов - Scope методы
- Адаптивные схемы
- Thinking mode и reasoning content
Пример с разными моделями
См. examples/models_example.php
🏗️ Архитектура
Библиотека следует принципам Domain-Driven Design (DDD):
Паттерны проектирования
- Builder Pattern — для построения запросов
- Adapter Pattern — для преобразования доменных моделей в API формат
- Factory Pattern — для создания провайдеров
- Strategy Pattern — для различных провайдеров
🔧 Расширение библиотеки
Добавление нового провайдера
- Создайте класс провайдера, реализующий
ProviderInterface - Создайте
RequestAdapterдля преобразования запросов - Создайте
ChatTurnResponseдля обработки ответов - Зарегистрируйте в
ProviderFactory
Кастомный HTTP клиент
📝 Конфигурация
Для того, чтобы запускать примеры из examples, необходимо создать файл .env в корне библиотеки:
🗺️ Планы развития
Библиотека активно развивается. Вот что планируется добавить и улучшить:
- Добавление Conversation - сущности, содержащей в себе переписку
- Join/with - добавление join-подобного интерфейса для группы последовательных и/или параллельных запросов, в том числе с использованием разных провайдеров, концепция "отношений" между Turn классами
- Доменные исключения - иерархия специализированных исключений для лучшей обработки ошибок
- Валидация на уровне Request - расширенная валидация запросов перед отправкой
- Middleware/Interceptors - система middleware для логирования, кэширования, retry и т.д.
- Событийная модель - добавление возможности подписываться на события жизненного цикла обьектов библиотеки
- Расширение числа провайдеров - увеличение числа возможных провайдеров, доступных "из коробки"
- Типизация и унификация работы с системными полямя ответов - работа с usage и прочими полями ответа
- Асинхронные запросы, ReactPHP - поддержка Promise-based API для параллельных запросов
- Поддержка streaming - полноценная обработка потоковых ответов
- Rate limiting - встроенная защита от превышения лимитов API
- Тесты - покрытие тестами всех компонентов библиотеки
Если у вас есть идеи или предложения, пожалуйста, создавайте issue или пишите в Telegram!
🤝 Вклад в проект
Приветствуются любые улучшения! Пожалуйста, создавайте issue или pull request. А также пишите в telegram: @blueberryMgn
Сделано с ❤️ для PHP разработчиков