PHP

PHPでOpenAI APIを使ってみた

hebishima.shogo

はい、hebiです!

PHPでOpenAI APIを使ってみたので記事にしたいと思います。

スポンサーリンク

OpenAI APIとは

OpenAI APIは、ChatGPTなどのAI機能をプログラムから使えるようにしたWeb APIです。

準備

OpenAI APIを使えるようにするまでの手順を説明します。

OpenAIのAPIキーを取得

OpenAIのAPIページへアクセスします。

利用するキーの名前を付けて、Create secret keyボタンを押下してください。

キーが作成されるのでCopyよりテキストファイル等に保管してください。

後からAPIキーを確認する方法が分からずでした、、、

そのためどこかに保管した方が良いです。

クレジットカードの登録

OpenAI APIは無料では利用できないため、こちらからクレジットカードを登録します。

OpenAI APIを利用するためには課金する必要があるため、$10課金しました。
(自動チャージは一旦OFFにして進めてます。)

項目意味入力例(おすすめ)
Initial credit purchase最初にチャージする金額$10(最低額は$5)
Would you like to set up automatic recharge?残高が減ったときに自動でチャージしますか?Yes または No(任意)
When credit balance goes below残高がこの金額未満になったら$5(自動チャージONにした場合)
Bring credit balance back up to自動チャージで増やす金額$10(再チャージ額)
Limit the amount of automatic recharge per month月ごとの自動チャージ上限$20など(任意、空欄でもOK)

ぺんぎん
ぺんぎん

課金する必要があるけど離脱しないように進めよう!!


以上でOpen AI APIの設定は完了です。

PHPからの実行

PHPからOpenAI APIを実行し、回答を受け取ってみましょう。

<?php

$apiKey = '作成したApi Keyを指定してください';

$endpoint = 'https://api.openai.com/v1/chat/completions';

$data = [
    "model" => "gpt-3.5-turbo", // gpt-4でも可(有料)
    "messages" => [
        [
            "role" => "system",
            "content" => "PHPについて回答してください。"
        ],
        [
            "role" => "user",
            "content" => "PHPで一番使いやすいフレームワークを教えてください。"
        ]
    ]
];

$ch = curl_init($endpoint);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Authorization: Bearer ' . $apiKey
]);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpCode !== 200) {
    echo "APIエラー(HTTPコード $httpCode)\n";
    echo "レスポンス:$response\n";
    exit;
}

$responseData = json_decode($response, true);
echo "ChatGPTの回答:\n";
echo $responseData['choices'][0]['message']['content'];
?>

$dataに設定しているロールについては以下の通りです。

role説明
systemAIに「役割」や「前提知識」を与える「あなたは法律の専門家です」など
userユーザー(あなた)の発言質問やリクエスト(「この文を要約して」など)
assistantAIの返答(省略可能)過去のAIの応答を含めて履歴を渡すときに使用

実行結果

PHPを実行した結果です。

PHPのフレームワークについて回答をもらえました!

まとめ

単純な質問だとWeb版のChatGptを利用するだけで事足りると思いますが、例えば社内ドキュメントに対して質問したり、売り上げ情報を要約させてメールやSlackに通知したりなどが可能になります。例えば以下のような感じです。

$pdfText = ''; // PDFのテキストをここに格納
$data = [
    "model" => "gpt-4",
    "messages" => [
        [
            "role" => "system",
            "content" => "以下の資料に基づいて質問に答えてください:\n" . $pdfText
        ],
        [
            "role" => "user",
            "content" => "福利厚生について教えてください"
        ]
    ]
];

皆さんも使ってみてください!
最後までお読みいただきありがとうございました(^^♪

スポンサーリンク
ABOUT ME
hebi
hebi
エンジニア
フルスタックエンジニアとして活躍中。
HTML5プロフェッショナル認定Level1、Level2所持者です。

未経験の方でも簡単にプログラミングを学べるようにと情報を発信しております。
記事URLをコピーしました