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

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

by 사악신 2024. 10. 15.

텍스트 생성하기

Prism은 대규모 언어 모델(LLM)을 사용하여 텍스트를 생성하는 강력하고 유연한 인터페이스를 제공합니다. 이 가이드에서는 텍스트 생성의 기본, 구성 옵션, 그리고 생성된 데이터에 접근하는 방법을 안내해 드리겠습니다.

기본 사용법

Prism을 사용하여 텍스트를 생성하려면 Prism 파사드와 text() 메서드를 사용합니다. 다음은 간단한 예시입니다:

<?php

$response = Prism::text()
  ->using(Provider::Anthropic, 'claude-3-sonnet')
  ->withPrompt('용감한 기사에 대한 짧은 이야기를 들려주세요.')
  ->generate();

echo $response->text;

다양한 제공자와 모델

Prism은 여러 AI 제공자와 모델을 지원합니다. using() 메서드에서 이를 지정할 수 있습니다:

<?php

// OpenAI 사용
$prism = Prism::text()
    ->using(Provider::OpenAI, 'gpt-4')
    ->withPrompt('양자 컴퓨팅을 간단한 용어로 설명해주세요.')
    ->generate();

// Anthropic 사용
$prism = Prism::text()
    ->using(Provider::Anthropic, 'claude-3-opus')
    ->withPrompt('광합성 과정을 설명해주세요.')
    ->generate();

withPrompt vs withMessages

Prism은 입력을 제공하는 두 가지 주요 메서드를 제공합니다: withPrompt()와 withMessages(). 요청당 이 중 하나의 메서드만 사용할 수 있다는 점에 유의하세요.

withPrompt() 사용하기

단순하고 단일 턴 상호작용에는 withPrompt()를 사용하세요:

<?php

$prism = Prism::text()
    ->using(Provider::Anthropic, 'claude-3-sonnet')
    ->withPrompt('프랑스의 수도는 어디인가요?')
    ->generate();

withMessages() 사용하기

다중 턴 대화나 채팅과 같은 상호작용에는 withMessages()를 사용하세요:

<?php

use EchoLabs\Prism\ValueObjects\Messages\UserMessage;
use EchoLabs\Prism\ValueObjects\Messages\AssistantMessage;

$prism = Prism::text()
    ->using(Provider::Anthropic, 'claude-3-sonnet')
    ->withMessages([
        new UserMessage('안녕하세요, 당신은 누구인가요?'),
        new AssistantMessage('저는 Anthropic에서 만든 AI 어시스턴트입니다. 오늘 어떻게 도와드릴까요?'),
        new UserMessage('파리의 날씨에 대해 말해줄 수 있나요?'),
    ])
    ->generate();

withPrompt vs withMessages 사용 시기

다음과 같은 경우 withPrompt()를 사용하세요:

  • 단일의 독립적인 질문이나 작업이 있을 때
  • 이전 상호작용의 맥락을 제공할 필요가 없을 때
  • 단순한 텍스트 생성이나 완성을 할 때

다음과 같은 경우 withMessages()를 사용하세요:

  • 대화형 AI나 챗봇을 구축할 때
  • 이전 메시지의 맥락을 제공해야 할 때
  • 주고받는 대화를 시뮬레이션하고 싶을 때

문자열 또는 뷰 사용하기

withPrompt()와 withSystemPrompt() 모두 문자열이나 Laravel 뷰를 받을 수 있습니다:

<?php

// 문자열 사용
Prism::text()
  ->using(Provider::Anthropic, 'claude-3-sonnet')
  ->withSystemPrompt('당신은 도움이 되는 어시스턴트입니다.')
  ->withPrompt('프로그래밍에 대한 농담을 해주세요.');

// 뷰 사용
Prism::text()
  ->using(Provider::Anthropic, 'claude-3-sonnet')
  ->withSystemPrompt(view('prompts.assistant'))
  ->withPrompt(view('prompts.tell-joke', ['topic' => 'programming']));

뷰를 사용하면 복잡하거나 재사용 가능한 프롬프트를 관리하는 데 특히 도움이 될 수 있습니다.

구성 옵션

Prism을 사용하면 다양한 구성 옵션으로 텍스트 생성을 세밀하게 조정할 수 있습니다:

<?php

$prism = Prism::text()
    ->using(Provider::Anthropic, 'claude-3-sonnet')
    ->withMaxTokens(500)
    ->usingTemperature(0.7)
    ->usingTopP(1)
    ->withPrompt('봄에 대한 하이쿠를 써주세요.')
    ->generate();
  • withMaxTokens(): 생성할 최대 토큰 수를 설정합니다.
  • usingTemperature(): 출력의 무작위성을 제어합니다. 높은 값(예: 0.8)은 출력을 더 무작위하게 만들고, 낮은 값(예: 0.2)은 더 집중적이고 결정적으로 만듭니다.
  • usingTopP(): 온도의 대안으로, 핵 샘플링을 사용합니다. 토큰 선택을 위한 누적 확률 임계값을 설정합니다.

생성된 데이터에 접근하기

TextResponse 객체를 통해 AI의 응답의 다양한 측면에 접근할 수 있습니다:

<?php

$response = Prism::text()
    ->using(Provider::Anthropic, 'claude-3-sonnet')
    ->withPrompt('프로그래밍에 대한 농담을 해주세요.')
    ->generate();

// 생성된 텍스트에 접근
// 다단계 생성을 사용하는 경우, 이는 최종 단계의 텍스트입니다
echo $response->text;

// 완료 이유 열거형
echo $response->finishReason->name;

// ToolCalls 배열
// 다단계 생성을 사용하는 경우 이는 생성의 최종 단계에서 가져옵니다
$response->toolCalls;

// ToolResults 배열
// 다단계 생성을 사용하는 경우 이는 생성의 최종 단계에서 가져옵니다
$response->toolResults;

// 사용된 총 토큰 수 가져오기
echo "프롬프트 토큰: " . $response->usage->promptTokens;
echo "완료 토큰: " . $response->usage->completionTokens;

// 개별 단계에 접근 (다단계 호출의 경우)
foreach ($response->steps as $step) {
    echo "단계 텍스트: " . $step->text;
    echo "완료 이유: " . $step->finishReason->name;
    echo "프롬프트 토큰: " . $step->usage->promptTokens;
    echo "완료 토큰: " . $step->usage->completionTokens;

    // ToolCalls 배열
    $step->$toolCalls;
    // ToolResults 배열
    $step->toolResults;
    // Messages 배열
    $step->messages;
}

// 응답 메시지에 접근
foreach ($response->responseMessages as $message) {
    if ($message instanceof AssistantMessage) {
        echo "어시스턴트의 응답: " . $message->content;
    }
}

TextResponse 객체를 통해 AI의 응답의 세부 사항을 검토할 수 있습니다. 이에는 토큰 사용량, 다단계 상호작용의 개별 단계, 응답 메시지의 내용 등이 포함됩니다.

이러한 기능을 활용하면 텍스트를 생성하고, 대화에 참여하며, 사용자 입력을 기반으로 가치 있는 인사이트를 제공하는 정교한 AI 기반 애플리케이션을 만들 수 있습니다.

반응형

댓글