Skip to content

Repository files navigation

PhpAiFlow

Легковесный абстрактный слой для работы с AI-задачами и их обработкой. Пакет предоставляет базовые контракты и примитивы для управления состоянием, поверх которых может строится логика обработки в приложениях.

Основные обязанности

  • Определять состояние жизненного цикла для задачи и результата (pending, queued, running, completed, failed, cancelled)
  • Сохранять абстракцию провайдера через AiClientInterface
  • Представлять AI-запросы и ответы в виде DTO
  • Позволять прикладному коду решать, как преобразовать вывод провайдера в доменные результаты
  • Поддерживать повторные попытки и порядок очереди через реализации репозиториев

Жизненный цикл

Задача проходит через следующий путь:

  1. создаётся в состоянии PENDING
  2. помещается в очередь в состоянии QUEUED (если требуется отправка в очередь)
  3. выбирается для обработки и переводится в состояние RUNNING
  4. при успешном выполнении провайдера становится COMPLETED
  5. при ошибке провайдера становится FAILED
  6. повторные попытки обрабатываются логикой репозитория/воркера с указанием времени следующей попытки
  7. результат может быть обработан сразу или помещен в репозиторий для последующей обработки

Пример использования

Отправка запросов

$workflow = new JobWorkflow($repository, $clientFactory);

$job = $workflow->createJob(
    uuid: 'job-123',
    provider: 'custom-provider',
    model: 'gpt-4o-mini',
    messages: [[
        'role' => 'user',
        'content' => 'Summarize this text',
    ]],
    context: ['user_id' => 42, 'action' => 'text_analysis'],
);

$workflow->processNext();

Проверка результата

$workflow = new JobWorkflow($repository, $client);
$jobs = $repository->findByStatus(JobStatus::RUNNING, 100);

foreach ($jobs as $job) {
    $workflow->checkResult($job, function (Job $job, AiResponse $respose) {
        // Для обработки запроса можно оприратся на параметры из $job->context 
    });
}

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

About

Библиотека для реазизации взаимодействия с ИИ

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages