soiposervices/comfydeploy

Comfy Deploy API 的 PHP 客户端

0.2.0 2024-04-10 20:37 UTC

This package is auto-updated.

Last update: 2024-09-02 18:23:13 UTC


README

这是一个框架无关的 PHP 客户端,用于Comfy Deploy.com,基于惊人的Saloon v3 🤠 库。您可以使用它轻松地在您的 PHP 应用程序中与机器学习模型(如 Stable Diffusion)交互。

Latest Version on Packagist GitHub Tests Action Status

目录

🚀 快速入门

使用 composer 安装。

composer require soiposervices/comfydeploy

创建一个新的 api 实例。

use SoipoServices\ComfyDeploy\ComfyDeploy;
...

$api = new ComfyDeploy(
    apiToken: $_ENV['COMFY_DEPLOY_API_TOKEN'],
);

然后使用它来调用您的模型(或者用 Comfy Deploy 术语说就是“创建一个工作流程”)。

$deployment_id = 'e4a14vs9-q40j-4ee2-1375-778b2je3221c';
$input = [
    'model' => 'prompt',
    'postive_prompt' => 'a photo of an astronaut riding a horse on mars',
    'seed' => null,
];

$data = $api->workflows()->run($deployment_id, $input);
$data->run_id; // 257b65b8-ac23-49be-8aca-53d2dd8556c6

与 Laravel 一起使用

首先将您的凭据添加到您的服务配置文件中。

// config/services.php
'comfy_deploy' => [
    'api_token' => env('COMFY_DEPLOY_API_TOKEN'),
],

在服务提供者中绑定 ComfyDeploy 类。

// app/Providers/AppServiceProvider.php
public function register()
{
    $this->app->bind(ComfyDeploy::class, function () {
        return new ComfyDeploy(
            apiToken: config('services.comfy_deploy.api_token'),
        );
    });
}

然后您可以在应用程序的任何地方使用它。

$data = app(ComfyDeploy::class)->workflows()->get($run_id);

使用 Saloon 的惊人的 响应录制 测试您的集成。

use Saloon\Laravel\Saloon; // composer require sammyjo20/saloon-laravel "^2.0"
...
Saloon::fake([
    MockResponse::fixture('getWorkflow'),
]);

$run_id = '257b65b8-ac23-49be-8aca-53d2dd8556c6';

// The initial request will check if a fixture called "getWorkflow" 
// exists. Because it doesn't exist yet, the real request will be
// sent and the response will be recorded to tests/Fixtures/Saloon/getWorkflow.json.
$data = app(ComfyDeploy::class)->workflows()->get($run_id);

// However, the next time the request is made, the fixture will 
// exist, and Saloon will not make the request again.
$data = app(ComfyDeploy::class)->workflows()->get($run_id);

响应数据

所有响应都以数据对象的形式返回。详细信息可以通过检查以下类属性获得:

Webhooks

Comfy Deploy 允许您配置一个 webhook,在您的预测完成后被调用。要做到这一点,请在调用 run 方法之前将 withWebhook($url) 链接到您的 api 实例。例如

$api->workflows()->withWebhook('https://www.example.com/webhook')->run($deployment_id, $input);
$data->run_id; // 257b65b8-ac23-49be-8aca-53d2dd8556c6

可用的工作流程方法

get()

用于获取现有工作流程的详细信息。

use SoipoServices\ComfyDeploy\Data\GetWorkflowData;
...
$run_id = '257b65b8-ac23-49be-8aca-53d2dd8556c6'
/* @var GetWorkflowData $data */
$data = $api->workflows()->get($run_id);
$data->id;

run()

用于通过 deployment_id 运行工作流程。返回 RunWorkflowData 对象。

use SoipoServices\ComfyDeploy\Data\RunWorkflowData
...
$deployment_id = 'e4a14vs9-q40j-4ee2-1375-778b2je3221c';
$input = [
    'postive_prompt' => 'a photo of an astronaut riding a horse on mars',
];

/* @var RunWorkflowData $data */
$data = $api->workflows()
    ->withWebhook('https://www.example.com/webhook') // optional
    ->run($deployment_id, $input);
$data->run_id; // 257b65b8-ac23-49be-8aca-53d2dd8556c6

许可

MIT 许可证(MIT)。有关更多信息,请参阅许可文件