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

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

by 사악신 2024. 10. 15.

에이전트

Prism의 AI 에이전트는 언어 모델이 비결정적인 방식으로 일련의 단계를 실행할 수 있게 합니다. 모델은 대화 컨텍스트, 사용자 입력, 이전 도구 호출 및 결과를 기반으로 도구 호출 결정을 내릴 수 있습니다.

에이전트 구현하기

Prism에서 에이전트를 구현하는 효과적인 접근 방식 중 하나는 LLM이 루프에서 다음 단계를 선택할 수 있도록 하는 것입니다. 도구를 withMaxSteps() 메서드와 결합함으로써, 각 단계에서 추론하고 컨텍스트를 기반으로 결정을 내리는 에이전트를 만들 수 있습니다.

예시: 수학 문제 해결 에이전트

Prism을 사용하여 수학 문제를 해결하는 에이전트를 만들어 보겠습니다. 이 에이전트는 수학 표현식을 평가하기 위해 호출할 수 있는 계산기 도구(PHP의 bcmath 확장을 사용)를 가지게 됩니다.

<?php

use EchoLabs\Prism\Facades\Prism;
use EchoLabs\Prism\Facades\Tool;

$tools = [
    Tool::as('weather')
        ->for('현재 날씨 상태를 검색해야 할 때 유용함')
        ->withParameter('city', '날씨를 알고 싶은 도시')
        // API 호출 시뮬레이션
        ->using(fn (string $city): string => '날씨는 24°C에 맑을 예정입니다'),
    Tool::as('search')
        ->for('현재 이벤트나 데이터를 검색할 때 유용함')
        ->withParameter('query', '상세한 검색 쿼리')
        // API 호출 시뮬레이션
        ->using(fn (string $query): string => '타이거즈 경기는 디트로이트에서 오후 3시에 있습니다'),
];

// 에이전트 생성
$response = Prism::text()
    ->using('anthropic', 'claude-3-sonnet')
    ->withPrompt("오늘 디트로이트에서 타이거즈 경기는 몇 시이고, 코트를 입고 가야 할까요?")
    ->withMaxSteps(10)
    ->withTools($tools)
    ->generate();

echo "답변: " . $response->text;

이 예시에서:

  1. Tool 파사드를 사용하여 weathersearch 도구를 정의합니다. 이 도구들은 서드파티 서비스에 대한 API 요청을 시뮬레이션합니다.
  2. Prism의 text() 메서드를 사용하여 에이전트를 생성하고, 시스템 메시지, 프롬프트를 설정하며, 계산기 도구를 포함시킵니다.
  3. withMaxSteps(10)을 사용하여 에이전트가 추론 과정에서 최대 10단계를 수행할 수 있도록 합니다.
  4. 에이전트는 필요에 따라 도구를 사용하여 질문에 답합니다.

작동 원리

  1. 에이전트는 프롬프트에서 질문을 받습니다.
  2. 문제를 분석하고 다음 단계(검색 도구, 날씨 도구 또는 추론)를 결정합니다.
  3. 도구가 필요한 경우 도구를 사용합니다.
  4. 에이전트는 결론에 도달하거나 최대 단계 수에 도달할 때까지 이 과정을 계속하며, 잠재적으로 여러 번의 도구 호출과 도구 결과 분석을 수행합니다.
  5. 마지막으로 답변을 제공합니다.

이 접근 방식을 통해 에이전트는 특정 문제와 중간 결과에 따라 전략을 조정할 수 있는 유연한 문제 해결이 가능합니다.

강건한 에이전트 동작을 위해 도구 구현에서 잠재적인 오류와 엣지 케이스를 처리하는 것을 잊지 마세요.

 

반응형

댓글