Laravel에 AI 통합하기
대부분의 AI 튜토리얼은 Python 사용을 전제로 합니다. 이로 인해 PHP 개발자들은 소외되곤 합니다.
최근 저는 실제 운영 중인 Laravel 대시보드에 AI 기능을 추가했습니다. Claude와 OpenAI API를 사용하여 원시 데이터로부터 보고서 요약을 생성했습니다. 과정은 어렵지 않았습니다. 진짜 어려웠던 점은 괜찮은 PHP 문서를 찾는 것이었습니다.
Laravel에서 깔끔하고 운영 환경에 적합한 AI 통합을 구축하는 방법을 소개합니다.
1. 자격 증명(Credentials) 설정하기
.env 파일에 키를 추가하세요. 절대 코드에 직접 하드코딩(hardcode)하지 마세요.
AI_PROVIDER=claude
ANTHROPIC_API_KEY=your_key
OPENAI_API_KEY=your_key
이를 config/services.php에 등록하세요. 이렇게 하면 Laravel의 설정 캐싱(config caching)을 사용할 수 있습니다.
2. 드라이버 패턴(Driver Pattern) 사용하기
컨트롤러 곳곳에 API 호출을 흩어놓지 마세요. 먼저 인터페이스를 만드세요.
완전한 메서드를 포함한 AiClientInterface를 정의합니다. 그런 다음 ClaudeClient와 OpenAiClient라는 두 개의 클래스를 만듭니다. 두 클래스 모두 동일한 인터페이스를 구현합니다.
이렇게 하면 .env 파일의 한 줄만 변경하여 제공업체를 전환할 수 있습니다. 한 서비스에 장애가 발생하더라도 앱은 계속 작동합니다.
3. Laravel의 HTTP Client 사용하기
Laravel은 API 호출을 간단하게 만들어 줍니다. 복잡한 cURL 코드가 필요하지 않습니다.
• OpenAI의 경우 withToken()을 사용하세요.
• Claude의 경우 withHeaders()를 사용하세요.
• 요청이 멈추는(hanging) 것을 방지하려면 timeout()을 사용하세요.
• 속도 제한(rate limits)을 자동으로 처리하려면 retry()를 사용하세요.
4. 운영 환경을 위한 베스트 프랙티스(Best Practices)
AI 호출은 느리고 비용이 많이 듭니다. 비용을 절감하고 속도를 높이려면 다음 규칙을 따르세요.
• 결과 캐싱: 입력 데이터가 동일하다면 캐싱된 요약본을 반환하세요. 이 방법으로 제 비용을 70% 절감했습니다.
• 큐(Queues) 사용: 사용자가 응답을 위해 10초 동안 기다리게 하지 마세요. 큐 작업(queued job)을 사용하여 백그라운드에서 AI 작업을 처리하세요.
• 오류 처리: AI 호출을 try-catch 블록으로 감싸세요. AI 호출이 실패하면 에러 페이지 대신 원시 데이터를 보여주세요.
• 제한 설정: 지출을 제어하기 위해 항상 max_tokens 값을 설정하세요.
AI 기능을 구축하기 위해 Python을 배울 필요는 없습니다. 여러분의 PHP 기술로도 충분히 가능합니다.
여러분의 PHP 앱에 AI를 추가해 보셨나요? SDK를 사용하셨나요, 아니면 직접 HTTP 호출을 하셨나요?
Optional learning community: https://t.me/GyaanSetuAi
