PHPでClaude APIを使ってみた。

2025/02/14 (金) - 09:00 PHP&CMS

大規模言語モデルの対話型生成AI、Claude APIをPHPと連携して使ってみたので、そのメモ。

ClaudeのAPIを使う場合は、Anthropic Consoleに登録・ログイン後に[Get API keys]で予めAPIキーを取得する必要があり、それとは別にクレジットカードでも課金しておく必要もあります。

Claude 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を実行しました。

おしまい

タグ:

記事をシェアする

  • facebookでシェアする
  • twitter(X)でシェアする
  • LINEでシェアする
  • はてなブックマークでシェアする
  • Threadsでシェアする
  • Pocketでシェアする
  • Pinterestでシェアする

おすすめ記事

トラックバック & ピンバック

この記事へのトラックバックURI
https://weblog.walk-life.me/php_claudeapi/trackback/

コメント

コメントは下記からどうぞ

ページの先頭へ