LaravelへのAI統合

ほとんどのAIチュートリアルは、Pythonを使用することを前提としています。

12年間PHPアプリを構築してきた経験から、最近、本番環境のLaravelダッシュボードにAI機能を実装しました。生のデータを人間が理解しやすいレポートに変換するために使用しました。

難しかったのはコードではありません。難しかったのは、このトピックに関する優れたPHPのコンテンツを見つけることでした。

以下に、Laravelでクリーンかつ本番環境に適したAI統合を構築する方法を紹介します。

アーキテクチャ

コントローラー内にAPIコールを散らさないでください。代わりに、ドライバーパターンを使用します。これにより、.env ファイルを1箇所変更するだけで、ClaudeとOpenAIを切り替えることができます。

  1. コントラクト(規約)を定義する AiClientInterface を作成します。これにより、ClaudeとOpenAIの両方が同じルールに従うことが保証されます。

  2. ドライバーを構築する ClaudeClientOpenAiClient を作成します。リクエストの処理にはLaravelのHTTPクライアントを使用してください。これにより、タイムアウトやリトライの処理が容易になります。

  3. サービスコンテナを使用する AppServiceProvider でインターフェースを特定のクライアントにバインドします。match 文を使用して、設定に基づいてプロバイダーを選択します。

相違点

エラーを避けるために、以下の5つの詳細を知っておく必要があります。

• 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 を使用します。

本番環境でのヒント

キャッシングを活用する: AIの呼び出しは時間がかかり、コストも発生します。データが同じであれば、キャッシュから結果を返してください。これにより、コストを70%削減できる可能性があります。 • キューを使用する: 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