AOYAMA Koji's プログラミングブログ - プログラミングを楽しく体験

【技術解説】AI API プログラミング【キャラAIバトルロイヤル】プログラマー向け実装解説

2026/01/19
【技術解説】AI API プログラミング【キャラAIバトルロイヤル】

 『キャラAIバトルロイヤル』は、AIをAPIで呼び出して処理を実行しています。 本記事では、AIAPIから利用するための基本的な流れプログラミングについて解説します。 関連する用語の解説もしています。

 本ゲーム実装は『キャラAIバトルロイヤル』実装概要に記載していますので、併せてご参照ください。

【技術解説】AI API プログラミング【キャラAIバトルロイヤル】 キャラAIバトルロイヤル  ゲーム本体は『キャラAIバトルロイヤル』でプレイ可能ですので、 ぜひ新ジャンル「AI判定ゲーム」を体験してみてください。


【技術解説】AI API プログラミング【キャラAIバトルロイヤル】

プログラミングブログ記事一覧


[PR]

AIをAPIから利用するための全体手順


 AIをAPIから利用するには、以下の手順で進めるのが良いでしょう。
  1. プロンプト作成
  2. プログラミング
  3. 専用アカウント取得
  4. 支払い設定
  5. APIキー取得

1.プロンプト作成


 まずプロンプト、つまりAIへの指示書をある程度完成させます。
 これは、チャットタイプのAIに指示書の通りに実施することを依頼して、実際に回答を得ることで精度を上げられます。
 AIをAPIから利用する前に、プロンプト作成をチャットで実施する理由は、APIの利用は従量制、つまり利用するたびにお金がかかるからです。 高額ではありませんが、チャットは無料あるいは定額ですので、できるところまでは先に詰めるのが良いでしょう。

2.プログラミング


 次にAIのAPIを使用したプログラミングです。
 ここでは、実際に使用している Claude 用のコードを、見やすく書き直したものをサンプルコードとして紹介します。
 『キャラAIバトルロイヤル』では、SDK(AI各社が提供している専用ライブラリ)を使わず、Pythonに標準で入っている urllib だけで実装しています。 これは REST API と呼ばれる方式です。 pip install などの環境構築なしで、Pythonさえあればすぐに動かせます。
 また『キャラAIバトルロイヤル』は、回答をJSON形式で返すように指示しています。
 つまり、AI の REST API はJSON形式でやりとりし、回答文字列はJSONの値として取り出しますが、 本ゲームではその文字列を、さらにJSONとして取り出します。 その抽出関数も掲載します。
 なお、意図しない回答をAIが返すことは少なくありません。エラーハンドリングもとても重要です。 その点については『キャラAIバトルロイヤル』実装概要で解説しています。
########################################################################
# Claude用APIサンプルプログラム (Python標準ライブラリ版)
########################################################################
######################################################################## # インポート ######################################################################## import urllib.request import json import re
######################################################################## # 設定(APIキーとモデル) ######################################################################## sAPI_KEY = "あなたのAPIキーをここに貼り付け" sMODEL_NAME = "claude-sonnet-4-5" # AIモデル名 sURL = "https://api.anthropic.com/v1/messages"
######################################################################## # AIにプロンプトを渡して回答文字列を取得 # arguments: # sPromptText .. AIへの指示テキスト文字列 # return: # 回答文字列 ######################################################################## def getAIResponse( sPromptText:str ):
# 1. ヘッダーの作成 headers = { "Content-Type":"application/json", "x-api-key":sAPI_KEY, "anthropic-version": "2023-06-01" }
# 2. 送信データ(JSON)の作成 data = { "model": sMODEL_NAME, "max_tokens": 1024, "messages": [ { "role":"user", "content":sPromptText } ] }
# 3. リクエストの送信 oRequest = urllib.request.Request( sURL, headers=headers, data=json.dumps(data).encode('utf-8') ) try: with urllib.request.urlopen(oRequest) as oResponse: sResponseBody = oResponse.read().decode('utf-8') oResponseJson = json.loads(sResponseBody) # コンテンツの取り出し sContent = oResponseJson["content"][0]["text"] return sContent except urllib.error.HTTPError as e: print( f"Error: {e.read().decode('utf-8')}" ) return None
######################################################################## # AIの回答文字列からJSON文字列を抽出 # arguments: # sContent .. AI回答文字列 # return: # JSON文字列 ######################################################################## def extractJson( sContent:str ) -> str: sContent = re.sub( r'^.*?```json\s*' , '' , sContent , flags=re.DOTALL ) sContent = re.sub( r'\s*```.*$' , '' , sContent , flags=re.DOTALL ) return sContent
######################################################################## # 実行 ######################################################################## if __name__ == "__main__": sPrompt = "RPGの敵キャラを1体考えて。結果はJSON形式だけで返して。"
# APIを呼ぶ sRawText = getAIResponse(sPrompt)
if sRawText: print("--- AIの生の回答 ---") print(sRawText) print("\n--- JSON抽出後 ---") sJsonText = extractJson(sRawText) print(sJsonText)

 このコードは ChatGPT や Gemini でも同様に使用可能です。 ただしURLや、モデル名、送受信データのフォーマットは異なりますので、それぞれ対応する必要があります。

3.専用アカウント取得


 APIの使用にはAPIキーが必要です。 それを取得するためにまず、利用するAI会社のAPIサイトの専用アカウントが必要です。 以下から取得します。
AI名
会社名
APIサイト
ChatGPT
OpenAI
Gemini
Google
Claude
Anthropic

重要:APIキーの取り扱いについて

 APIキーをコードに直接書いたまま公開するのは非常に危険です。
 前述のサンプルコードでは、sAPI_KEY をソースコードにベタ書きしていますが、 実際に運用する際は、Webからアクセスできない場所に置いた別ファイル(設定ファイルなど)から読み込む方式で管理することを強く推奨します。
 ブログやSNS等でコードを共有する場合は、APIキーが公開されていないか、十分注意してください。

4.支払い設定


 専用アカウントを取得したら、支払い方法を設定します。
 各サイトの指示に従って登録します。

5.APIキー取得


 続けてAPIキーを取得します。 クレジット(APIを使用するための利用料金)への入金も必要です。 各社微妙に方法が異なりますので、それぞれ説明します。

Gemini(Google)

 支払い設定前にAPIキー取得可能。 支払い設定実施で90日有効な $300 が付与されますので、当面は実質無料で検証できます。
 AI の API を実験的に使いたい場合は、これが理由で Gemini(Google) をオススメします。 お金がかかると思うと躊躇してしまうのは、筆者だけではないと思いますので。

ChatGPT(OpenAI)

 支払い設定前にAPIキー取得可能。 ただし使用するには支払い設定と入金が必要です。 $5 (750円程度) 入金すると良いでしょう。
 また、API経由で画像生成するにはアカウント認証が必要です。
 表示されている「Verify Organization」をクリックして認証します。 筆者は法人アカウントとして登録しましたが、マイナンバーカードおよび写真撮影による個人認証を実施します。 個人アカウントも同様に認証が必要なようです。
 認証自体は簡単にOKになりました。
 OKが出てから最大1時間程度で使えるようになると表示されていましたが、実際には12時間以上かかりました。 これは個人だと早いかもしれません。 法人アカウントだと時間がかかるとのことですので、のんびりまちましょう。

Claude(Anthropic)

 支払い設定と入金を実施すると、APIキーのメニューが現れます。 最初に $5 (750円程度) 入金すると良いでしょう。

利用料金とトークン


 利用料金は各サイトに記載されていますが、基本的には、AIモデルごとに、MTok(100万トークン)あたりの金額が設定されています。

AIモデルとは


 AIモデルとは、例えば ChatGPT であれば、ハイエンドモデルは gpt-5、 一世代前のモデルは gpt-4o が使用可能で、その軽量版が gpt-4o-mini などです。 同じ ChatGPT でも、その能力等に応じて、使い分けることができます。
 各モデルの具体的な比較は記事を分け、本記事では概要のみ解説します。

トークンとは


 トークンは、現在のAIが使用する情報のことです。 文章はトークンに分解されて、現在のAIの基幹部分であるLLM(Large Language Model)に渡されます。
 文章がどのようにトークンに分解されるかはAIごとに異なりますが、 日本語1文字につき、1~3トークン程度になります。
 実際のトークン数は、API返り値のJSON内に記載があるので、そちらを確認するのが確実です。
 トークには、入力トークン、出力トークン、思考トークンがあり、例えば ChatGPT5 の出力トークンは $10/MTok などと設定されています。 詳細は後日記事を分けて解説します。
[PR]

まとめ


 AIAPIから利用するための基本的な流れプログラミングについて解説しました。
 サンプルコードについては、現在使用しているものをベースに記載しましたが、 進化が早いため、実際に使用する場合は AI にプログラム生成してもらった方が確実かもしれません。
 本記事が少しでも、AIをAPIから利用する方の参考になりましたら幸いです。

補足

  • ※各社の登録商標または商標について「®」「™」等の表記はしておりません。
  • 記事の校正/添削に生成AIの Google Gemini を利用しております。
  • 記事内の画像の作成に生成AIの OpenAI ChatGPT を利用しております。
  • 画像内のラスタライズ文字フォントにOpen Font LicenseZen Antiqueを使用しております。
  • 画像内のラスタライズ文字フォントにOpen Font LicenseNoto Sans Japaneseを使用しております。
  • 画像内のラスタライズ文字フォントにOpen Font LicenseOriginal Surferを使用しております。

カテゴリー:プログラミング解説,キャラAIバトルロイヤル
[PR]