PHPでClaude APIを使ってみた。
2025/02/14 (金) - 09:00 PHP&CMS
大規模言語モデルの対話型生成AI、Claude APIをPHPと連携して使ってみたので、そのメモ。
ClaudeのAPIを使う場合は、Anthropic Consoleに登録・ログイン後に[Get API keys]で予めAPIキーを取得する必要があり、それとは別にクレジットカードでも課金しておく必要もあります。
今回は単純にフォームのテキストエリアから送信した文に答えるだけの簡単なテストを実装しました。HTMLは以下の通り。
<form method="post" action="">
<textarea name="prompt" id="prompt" placeholder="メッセージを入れてにゃん"><?php echo $prompt ?></textarea>
<input type="submit" value="送信">
</form>
PHP部分は以下の通り。POSTで受け取ったデータをClaude APIにプロンプトをリクエストし、レスポンスを画面上に表示するのみです。例として回答文は語尾に「にゃん」を付けるような条件としました。
<?php
define(API,'https://api.anthropic.com/v1/messages');
define(API_KEY,'{API キーを指定}');
$system = '語尾ににゃんをつけて可愛く回答してください。';
$prompt = htmlspecialchars($_POST['prompt'], ENT_QUOTES, 'UTF-8');
if($prompt && $_SERVER['REQUEST_METHOD'] === 'POST'){
$data = json_encode([
'model' => 'claude-3-5-haiku-20241022', //モデルを指定
'max_tokens' => 1024,
'system' => $system,
'messages' => [
['role' => 'user', 'content' => $prompt]
]
]);
$ch = curl_init(API);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'anthropic-version: 2023-06-01',
'x-api-key: ' . API_KEY
]);
$result = curl_exec($ch);
curl_close($ch);
$output = json_decode($result, true);
if($output['type']==='error'){
echo 'エラーですにゃん';
}else{
echo nl2br($output['content'][0]['text']);
}
}else{
echo 'メッセージを入れてにゃん';
}
?>
こう見るとGPT APIと似たような設計ですね。Claudeを開発した「Anthropic(アンソロピック)」は、ChatGPTを開発したOpenAI社に元メンバーが作った企業なので、その名残なのかもしれません。今回モデルはclaude-3-5-haiku-20241022
を指定しておりますが、人にのモデルに変更が可能です。詳しいことは以下のドキュメントに案内があります。
プロンプトですが、例えば以下のような文面をリクエストした場合
碇ゲンドウとゼーレが進める人類補完計画とはなんですか?
碇ゲンドウとゼーレの目的は、人類補完計画を成功させることにゃん!
碇ゲンドウは、全ての人間の意識を一つに融合させて、個人の痛みや孤独から解放し、新たな進化の形を目指すにゃん。ゲンドウは息子・碇シンジを利用して、
〜略〜
最終的には、この計画が人類の存在そのものを根本的に変えようとする壮大な試みだったにゃん!
上記のようなレスポンスが返ってくるのでフロントでは自動的にHTMLで改行するようnl2br
を実行しました。
おしまい♥
おすすめ記事
- Next.jsのApp Routerでクエリパラメータ(GETパラメータ)と動的パスを取得
- ChatGPT APIでWordPressの記事の要約を表示する
- Movable Type(MT)で他ブログの記事一覧モジュールをインクルード
- WordPressの記事関数を外のPHPから呼び出す
- PHPで簡易的に本日中まで有効なCookieを発行する
トラックバック & ピンバック
- この記事へのトラックバックURI:
- https://weblog.walk-life.me/php_claudeapi/trackback/