2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

こんにちは、Webエンジニアの岩田史門(@SI_Monxy)です!
今回はLaravelでOpenAIのAPIを活用する方法について記事を書いてみました!
改善点や修正点があれば、コメントにて優しくご指導いただけると嬉しいです!

概要

Laravelは強力なPHPフレームワークであり、豊富な機能と柔軟性を備えています。生成AI(例:OpenAIのGPT-4)を組み合わせることで、さらに高度な機能を実装し、アプリケーションの価値を高めることができます。本記事では、生成AIを活用してLaravelアプリケーションの機能を拡張する方法について解説します。

生成AIとは?

生成AI(Generative AI)は、人工知能の一種であり、新しいデータやコンテンツを生成する能力を持っています。OpenAIのGPT-4などのモデルは、テキストの生成、翻訳、要約など多様なタスクをこなすことができます。

Laravelと生成AIの連携方法

Laravelと生成AIを連携させるためには、以下の手順を踏むことが一般的です。

  • OpenAI APIキーの取得
  • Laravelプロジェクトへのインストールと設定
  • API呼び出しの実装
  • OpenAI APIキーの取得
  • OpenAIの公式サイトからAPIキーを取得します。(これは、API呼び出しを行うために必要です。)

Laravelプロジェクトへのインストールと設定

OpenAI APIを使用するために、HTTPクライアントとしてGuzzleを使用します。まず、Guzzleをインストールします。

composer require guzzlehttp/guzzle

次に、.envファイルにAPIキーを追加します。

OPENAI_API_KEY=your_openai_api_key

API呼び出しの実装

以下は、生成AIを呼び出すための基本的なコード例です。

use GuzzleHttp\Client;

class OpenAIService
{
    protected $client;
    protected $apiKey;

    public function __construct()
    {
        $this->client = new Client();
        $this->apiKey = env('OPENAI_API_KEY');
    }

    public function generateText($prompt)
    {
        $response = $this->client->post('https://api.openai.com/v1/engines/davinci-codex/completions', [
            'headers' => [
                'Authorization' => 'Bearer ' . $this->apiKey,
                'Content-Type'  => 'application/json',
            ],
            'json' => [
                'prompt' => $prompt,
                'max_tokens' => 150,
            ],
        ]);

        $result = json_decode($response->getBody(), true);
        return $result['choices'][0]['text'];
    }
}

実装例:AIを用いた自動応答機能

ユーザーからの問い合わせに対して、自動で応答する機能を実装します。コントローラでAIサービスを呼び出し、レスポンスを返す例を示します。

use App\Services\OpenAIService;

class ChatController extends Controller
{
    protected $openAIService;

    public function __construct(OpenAIService $openAIService)
    {
        $this->openAIService = $openAIService;
    }

    public function respond(Request $request)
    {
        $userMessage = $request->input('message');
        $aiResponse = $this->openAIService->generateText($userMessage);

        return response()->json(['response' => $aiResponse]);
    }
}

実装例:AIによるコンテンツ生成

ブログ記事や商品説明文などのコンテンツを自動生成する機能を実装します。

use App\Services\OpenAIService;

class ContentController extends Controller
{
    protected $openAIService;

    public function __construct(OpenAIService $openAIService)
    {
        $this->openAIService = $openAIService;
    }

    public function generateContent(Request $request)
    {
        $topic = $request->input('topic');
        $prompt = "Write a detailed article about " . $topic;
        $content = $this->openAIService->generateText($prompt);

        return response()->json(['content' => $content]);
    }
}

まとめ

生成AIを用いることで、Laravelアプリケーションに高度な自動化機能やコンテンツ生成機能を追加することができます。今回紹介した例を基に、独自の機能を実装してみてください。

参考文献

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?