こんにちは、アプリメンバーズ開発部の久保見です。
このブログでは、システム開発を進める中で「学んだこと」「考えたこと」を、できるだけ手触り感のある形で共有していこうと思います。
今回は、PHPからChatGPT APIを叩いてみた話と、アプリメンバーズのトーク機能との連携についてまとめました。
1. ChatGPT APIをPHPから呼び出す
昨今「AI」と言えば、真っ先に思い浮かぶのが ChatGPT ではないでしょうか。
通常はウェブサイトやアプリから、ユーザーが質問を入力して回答を得る形で利用しますが、ChatGPTはAPIが公開されており、システム側からも簡単に呼び出すことができます。
ITベンダーとして、こうしたAPIを自社サービスと組み合わせて使う場面は今後さらに増えていくはずです。
実装自体はとてもシンプルで、10分もあれば動作確認できるレベルです。
1-1. APIキーを発行する
まずは、ChatGPT APIを利用するための APIキー を発行します。
OpenAI Platform に登録
https://platform.openai.com/
登録後、以下のページにアクセス
https://platform.openai.com/api-keys
「Create new secret key」ボタンからAPIキーを発行
発行したキーは、後続のPHPコード内で使用します。
1-2. PHPでChatGPT APIを叩くサンプル
以下が、PHPからChatGPT API(chat/completions)を呼び出すシンプルなサンプルコードです。
「chat/completions」はチャットのやりとりをそのままAPIで再現するための入口で、やりとりの流れ(system=ルール、user=質問、assistant=回答)をまとめて送れるのが特徴です。
これにより、ChatGPTに「こういう役割で答えてね」と前提を渡したうえで、会話の続きを生成してもらうことができます。
// --- 取得したキーを設定 ---
$api_key = 'your_key';
// --- ChatGPTエンドポイント ---
$url = 'https://api.openai.com/v1/chat/completions';
// --- 送信データ ---
$data = [
'model' => 'gpt-4o-mini',
'messages' => [
[
'role' => 'system',
'content' =>
"あなたは『〇〇店』の管理者です。
定休日は毎週 火曜 と 金曜。
営業時間は 10:00〜19:00。
ユーザーの質問には、この店舗の管理者として回答してください。"
],
[
'role' => 'user',
'content' =>
"明日は営業していますか?"
]
],
'max_tokens' => 200
];
// --- CURL初期化 ---
$ch = curl_init($url);
// --- CURLオプション設定 ---
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Authorization: Bearer ' . $api_key,
]);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// --- 実行 ---
$response = curl_exec($ch);
// --- エラー処理 ---
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
exit;
}
curl_close($ch);
// --- 結果表示 ---
$result = json_decode($response, true);
echo $result['choices'][0]['message']['content'] ?? 'No response';
messages の role => system で、店舗の基本情報や話し方などの「前提条件」を渡しているのがポイントです。
たとえば「店舗の担当者として答える」「お嬢様口調で話す」など、キャラクター付けもここで行えます。
APIの呼び出し方が分かったので、次は実際にアプリメンバーズのトーク機能と組み合わせてみます。
イメージとしては
- ユーザーがアプリのトーク画面にメッセージを送る
- その内容をサーバー側で受け取る
- ChatGPT APIに投げて回答を生成
- 生成された回答を、アプリメンバーズのトークAPIでユーザーに自動返信する
という流れです。
アプリメンバーズ側にもトークAPIを用意しているので、それを使って自動返信を実装します。
2. ChatGPTの回答をトークに投稿するサンプル
// --- ChatGPTのAPIで取得した回答 ---
$talk = $result['choices'][0]['message']['content'] ?? '';
// --- アプリメンバーズトーク機能POST先URL ---
$api_url = 'https://api.ajg.jp/api/Talk.php?id=Kb01gt6qnpawf08';
$no = getno(); //トークユーザーの会員番号(関数てきとうです)
// --- 送信データ ---
$post_data = [
'talkType' => 1,
'talk' => $talk,
'sendType' => 1,
'targetFlag' => 2,
'targetList' => [
[
'customerNo' => $no
]
]
];
// --- cURL 初期化 ---
$ch = curl_init($api_url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Content-Type: application/json",
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'MyApp/1.0 (ChatGPT-Connector)');
$response = curl_exec($ch);
if(curl_errno($ch)) {
echo 'Talk API Error: ' . curl_error($ch);
exit;
}
curl_close($ch);
echo $response;
これで、トークに対して自動で返答する仕組みが一通り完成します。

少ない工数で、かなり「それっぽい」自動応答機能を実現できるのは、大きな魅力だと感じています。
3. Webサービスに組み込むときの注意点
一方で、Webサービスのチャット機能にそのままChatGPT APIを使う場合、いくつか注意すべきポイントがあります。
3-1. 想定外の回答・誤情報
ChatGPTは学習データに基づいて回答を生成するため、必ずしも正しい情報だけを返すわけではありません。
「誤った日付」「おかしな日本語」「事実と異なる内容」などが混ざる可能性があります。
対策例
systemメッセージで「役割」「前提条件」「NG事項」をしっかり指定する- 営業時間・料金など、重要な情報は自社DB側を正とし、サーバーで補正する
3-2. 不適切な内容(差別・攻撃・性的表現など)
文脈によっては、ユーザーが不快に感じる表現が出てしまうリスクもゼロではありません。
対策例
systemで「攻撃的・差別的・性的な表現は禁止」といったポリシーを明記- 返却テキストに対して独自のNGワードチェックやログ監査を行う
3-3. 個人情報・機密情報の取り扱い
ユーザーの氏名や住所などの生の個人情報をそのままAPIに送る設計は避けるべきです。
外部サービスに個人情報を送るということは、「自社の外に個人情報が出ていく」=漏えい経路が増えるためです。
対策例
- 可能な限りIDや番号に置き換える(anonymize)
- 不要な情報は送らない。トーク内容と「会員番号」程度に留めるなど、最小限の連携を意識する
3-4. レスポンス時間・通信エラー
API呼び出しは数百ミリ秒〜数秒かかることがあり、ネットワークや障害で返ってこない場合もあります。
対策例
- 適切なタイムアウト値を設定する
- タイムアウトやエラー時は、「ただいま混み合っております。時間をおいてお試しください。」など、フォールバック用の固定メッセージを返す
ここでいう「適切なタイムアウト値」とは、「最大でも何秒まで待つか」をあらかじめ決めておくことで、処理の「待ちっぱなし」を防ぐための設定を指します。
3-5. 利用量・課金のコントロール
無料枠を超えるとリクエストが失敗したり、ユーザー数が増えるほど課金額も大きくなります。
対策例
- 利用回数やトーク内容をログで管理し、上限を設ける
- 重要度の低い処理には別の仕組みを使う、時間帯で制限するなどの運用ルールも検討する
おわりに|アプリメンバーズとの連携アイデアも歓迎です
このように、ChatGPT APIは少ないコードで導入できる一方、設計や運用面で考えるべきポイントも多い技術です。
アプリメンバーズでも、外部サービス連携用のAPIを随時拡張しています。
「自社の会員アプリにAIチャットを組み込みたい」「トーク機能をもっと便利にしたい」といったご相談があれば、ぜひお気軽にお声がけください。
今後も、開発現場でのトライ&エラーや実装の小ネタなどを、このブログで共有していきます。


