PHPコードの静的解析ツール
hebishima.shogo
プログラマーのあれこれ
はい、hebiです!
PHPでOpenAI APIを使ってみたので記事にしたいと思います。
OpenAI APIは、ChatGPTなどのAI機能をプログラムから使えるようにしたWeb APIです。
OpenAI APIを使えるようにするまでの手順を説明します。
OpenAIのAPIページへアクセスします。
利用するキーの名前を付けて、Create secret keyボタンを押下してください。
キーが作成されるのでCopyよりテキストファイル等に保管してください。
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から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 | 説明 | 例 |
---|---|---|
system | AIに「役割」や「前提知識」を与える | 「あなたは法律の専門家です」など |
user | ユーザー(あなた)の発言 | 質問やリクエスト(「この文を要約して」など) |
assistant | AIの返答(省略可能) | 過去のAIの応答を含めて履歴を渡すときに使用 |
PHPを実行した結果です。
PHPのフレームワークについて回答をもらえました!
単純な質問だとWeb版のChatGptを利用するだけで事足りると思いますが、例えば社内ドキュメントに対して質問したり、売り上げ情報を要約させてメールやSlackに通知したりなどが可能になります。例えば以下のような感じです。
$pdfText = ''; // PDFのテキストをここに格納
$data = [
"model" => "gpt-4",
"messages" => [
[
"role" => "system",
"content" => "以下の資料に基づいて質問に答えてください:\n" . $pdfText
],
[
"role" => "user",
"content" => "福利厚生について教えてください"
]
]
];
皆さんも使ってみてください!
最後までお読みいただきありがとうございました(^^♪