Laravel에 AI 통합하기

대부분의 AI 튜토리얼은 Python을 사용한다고 가정합니다.

12년 동안 PHP 앱을 구축해 온 저는 최근 실제 운영 중인 Laravel 대시보드에 AI 기능을 추가했습니다. 저는 이를 통해 가공되지 않은 데이터를 사람이 읽기 좋은 보고서로 변환했습니다.

어려운 점은 코드가 아니었습니다. 진짜 어려운 점은 이 주제에 대한 좋은 PHP 콘텐츠를 찾는 것이었습니다.

Laravel에서 깔끔하고 운영 환경에 바로 적용 가능한 AI 통합을 구축하는 방법을 소개합니다.

아키텍처

컨트롤러 안에 API 호출을 여기저기 흩어놓지 마세요. 대신 드라이버 패턴(driver pattern)을 사용하세요. 이렇게 하면 .env 파일 하나만 수정하여 Claude와 OpenAI 사이를 쉽게 전환할 수 있습니다.

  1. 계약(Contract) 정의하기 AiClientInterface를 생성하세요. 이를 통해 Claude와 OpenAI가 동일한 규칙을 따르도록 보장할 수 있습니다.

  2. 드라이버 구축하기 ClaudeClientOpenAiClient를 만드세요. 요청 처리를 위해 Laravel의 HTTP 클라이언트를 사용하세요. 타임아웃과 재시도 처리가 훨씬 쉬워집니다.

  3. 서비스 컨테이너(Service Container) 활용하기 AppServiceProvider에서 인터페이스를 특정 클라이언트에 바인딩하세요. match 문을 사용하여 설정에 따라 프로바이더를 선택하도록 합니다.

차이점

오류를 방지하려면 다음 다섯 가지 세부 사항을 반드시 알아야 합니다:

• Claude는 헤더에 x-api-key를 사용합니다. OpenAI는 Authorization: Bearer를 사용합니다. • Claude는 anthropic-version 헤더가 필요합니다. • Claude는 max_tokens가 필수입니다. OpenAI는 선택 사항입니다. • Claude는 최상위 system 필드를 사용합니다. OpenAI는 role: system인 메시지를 사용합니다. • JSON 응답 경로가 다릅니다. Claude는 content[0].text를 사용하고, OpenAI는 choices[0].message.content를 사용합니다.

운영 환경을 위한 팁

캐싱(Caching) 활용: AI 호출은 느리고 비용이 발생합니다. 데이터가 동일하다면 캐시에서 결과를 가져오세요. 이를 통해 비용을 70%까지 절감할 수 있습니다. • 큐(Queues) 활용: 사용자가 API 응답을 위해 10초 동안 기다리게 하지 마세요. 백그라운드 작업을 실행하고 작업이 완료되면 사용자에게 알림을 보내세요. • 오류 처리: API는 실패할 수 있습니다. 호출 부분을 try-catch 블록으로 감싸세요. AI 호출에 실패하면 깨진 페이지 대신 가공되지 않은 데이터를 보여주세요. • 제한 설정: 지출을 관리하기 위해 항상 max_tokens를 설정하세요. 요약과 같은 간단한 작업에는 더 작고 저렴한 모델을 사용하세요.

AI 기능을 구축하기 위해 Python을 배울 필요는 없습니다. 여러분의 PHP 기술로도 충분히 가능합니다.

출처: https://dev.to/sunakshi_thakur_84a5f59fd/integrating-claudeopenai-api-into-a-laravel-app-a-practical-guide-1hig