Chat GPT が話題なので、PHP から OpenAI Chat API を利用してみた

菱川拓郎
菱川拓郎

今や Twitter を開けばその話題を目にしないことはないくらい、Chat GPT の注目度が高まっていますね。Chat GPT を開発している OpenAI は、API を提供していますので、開発者であればAPI経由でかんたんにパワフルな対話型APIを利用できます。

本記事では、PHPから利用する方法についてまとめてみます。まず初めに、OpenAI PHP を Composer を使ってインストールします。OpenAI PHP は OpenAI 公式ではなく、コミュニティによってメンテナンスされているオープンソースプロジェクトです。

composer require openai-php/client

インストールできたら、公式サイトにアクセスし、APIキーをゲットしましょう。

準備は以上です。もう使い始められます!以下はかんたんなサンプルコードです。

<?php

$client = OpenAI::client(API_KEY);
$result = $client->chat()->create([
    'model' => 'gpt-3.5-turbo',
    'messages' => [
        ['role' => 'user', 'content' => 'Hello!'],
    ]
]);

var_dump($result);

model には、OpenAI が提供する言語モデルを指定します。現時点で使えるスタンダードは gpt-3.5-turbo です。

参考:モデル一覧

messages には、会話を配列で指定します。role は役割で、system user assistant のいずれかを指定します。user が私、assitant がAIですね。system は、「あなたは優秀なアシスタントです。」のような、AIの振る舞いを定義するものです。定義しなくても動きます。

レスポンスをそのまま var_dump した結果は次のようになります。

object(OpenAI\Responses\Chat\CreateResponse)#49 (6) {
  ["id"]=>
  string(38) "chatcmpl-6wZyELAuU5Tai7q9N3dCeVJOSex2Q"
  ["object"]=>
  string(15) "chat.completion"
  ["created"]=>
  int(1679419314)
  ["model"]=>
  string(18) "gpt-3.5-turbo-0301"
  ["choices"]=>
  array(1) {
    [0]=>
    object(OpenAI\Responses\Chat\CreateResponseChoice)#48 (3) {
      ["index"]=>
      int(0)
      ["message"]=>
      object(OpenAI\Responses\Chat\CreateResponseMessage)#46 (2) {
        ["role"]=>
        string(9) "assistant"
        ["content"]=>
        string(42) "

Hello there, how can I assist you today?"
      }
      ["finishReason"]=>
      string(4) "stop"
    }
  }
  ["usage"]=>
  object(OpenAI\Responses\Chat\CreateResponseUsage)#55 (3) {
    ["promptTokens"]=>
    int(9)
    ["completionTokens"]=>
    int(11)
    ["totalTokens"]=>
    int(20)
  }
}

かんたんですね!これ以上特にPHP側で何か工夫するような余地はないように思います。あとはほぼプロンプトを工夫するだけではないでしょうか?

上記のサンプルコードでは、GPT-3.5モデルを使用しています。GPT-4モデルはまだ限定ベータ版ですが、トークン数が倍増するので、より様々な用途に使えることが予想できます。

とりあえずは、こういったブログ記事を書く時に面倒な、概要を作成して meta description に自動で挿入する機能や、URLスラッグを考えておいてくれる機能とかを作ってみようかなと思います。AIを使ったサジェスト機能付きの検索は、Embedding Model の方を使えばできそうですので、こちらも試してみたいと思います。

あまりにかんたんだったので、消化不良な感じですが、本稿はとりあえず PHP から OpenAI Chat API を使うまでと言うことでここで終わりたいと思います。