본문 바로가기
프로그래밍/Web

Laravel Prism 사용하기(번역) - 6 -

by 사악신 2024. 10. 15.

사용자 정의 제공자

사용자 정의 제공자 만들기

사용자 정의 제공자를 만들려면 EchoLabs\Prism\Contracts\Provider 인터페이스를 구현해야 합니다. 다음은 단계별 가이드입니다:

  1. 제공자를 위한 새 클래스를 만듭니다. 예: MyCustomProvider.
  2. Provider 인터페이스에서 필요한 메서드를 구현합니다:

php

<?php

namespace App\Prism\Providers;

use EchoLabs\Prism\Contracts\Provider;
use EchoLabs\Prism\Providers\ProviderResponse;
use EchoLabs\Prism\Requests\TextRequest;

class MyCustomProvider implements Provider
{
    protected $model;

    public function usingModel(string $model): Provider
    {
        $this->model = $model;

        return $this;
    }

    public function text(TextRequest $request): ProviderResponse
    {
        // 사용자 정의 AI 제공자에게 요청을 보내는 로직을 구현하고
        // ProviderResponse 객체를 반환합니다
    }
}
  1. text 메서드에서 다음을 수행해야 합니다:
    • TextRequest를 제공자가 이해할 수 있는 형식으로 변환
    • 제공자에게 요청 전송
    • 응답 파싱
    • 결과와 함께 ProviderResponse 객체 반환

사용자 정의 제공자 등록하기

사용자 정의 제공자를 만들었다면 Prism에 등록해야 합니다. 이를 위한 최적의 장소는 AppServiceProvider와 같은 서비스 제공자입니다:

php

<?php

namespace App\Providers;

use App\Prism\Providers\MyCustomProvider;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        $this->app['prism-manager']->extend('my-custom-provider', function ($app, $config) {
            return new MyCustomProvider(
              apiKey: data_get($config, 'api_key'),
            );
        });
    }
}

제공자 사용하기

사용자 정의 제공자를 사용하려면 config/prism.php 파일에 추가해야 합니다:

php

<?php

'providers' => [
    // ... 다른 제공자들 ...
    'my-custom-provider' => [
        'api_key' => env('MY_CUSTOM_API_KEY')
    ],
],

이제 Prism 호출에서 사용자 정의 제공자를 사용할 수 있습니다:

php

<?php

$response = Prism::text()
    ->using('my-custom-provider', 'model-name')
    ->withPrompt('안녕하세요, 사용자 정의 AI!')
    ->generate();

사용자 정의 제공자를 위한 모범 사례

  1. 오류 처리: API 문제나 예상치 못한 응답을 우아하게 관리할 수 있도록 제공자에 강력한 오류 처리를 구현하세요.
  2. 구성: API 엔드포인트나 인증과 같은 주요 매개변수를 구성을 통해 설정할 수 있도록 하여 제공자를 유연하게 만드세요.
  3. 테스트: 다양한 시나리오를 올바르게 처리하는지 확인하기 위해 제공자에 대한 단위 테스트를 작성하세요.
반응형

댓글