#25 Kotlinで学ぶAI API(ChatGPT等)の呼び出し方の基本

はじめに

ChatGPTのようなAI(人工知能)が返してくれる文章を、自分の作ったアプリから呼び出してみたいと思ったことはありませんか。実はAI開発企業の多くは「API(エーピーアイ)」と呼ばれる仕組みを公開しています。これを使えば、自分のプログラムからAIに質問を送り、回答を受け取ることができます。APIとは、あるプログラムが別のプログラムの機能を呼び出すための「窓口」のようなものです。この記事では、Android開発などでも人気のプログラミング言語Kotlin(コトリン)を使って、AI APIを呼び出す基本の流れを解説します。

AI APIを呼び出す仕組みをざっくり理解する

AI APIとのやり取りは、多くの場合「HTTP通信」で行われます。HTTP通信とは、Webブラウザがサーバーにページを要求するときと同じ仕組みで、プログラム同士がインターネット経由でデータをやり取りする方法です。手順を簡単にまとめると、次のようになります。

  • 質問したい内容を「JSON」という形式のテキストにまとめる
  • それをAPIの窓口(URL)に向けて送信する(これを「リクエスト」と呼びます)
  • AI側が回答をJSON形式で返してくる(これを「レスポンス」と呼びます)
  • 受け取ったJSONの中から、必要な文章部分だけを取り出す

JSONとは、データを「キー」と「値」のペアで表す、多くのプログラミング言語で読み書きしやすいテキスト形式です。KotlinでもJSONを扱うためのライブラリ(便利な機能をまとめた部品)が用意されているので、難しく考える必要はありません。

Kotlinで通信する準備

Kotlinで外部のAPIと通信する場合、代表的な方法としてOkHttp(オーケーエイチティーティーピー)というライブラリを使う方法があります。OkHttpはHTTP通信を簡単に行うための定番ツールで、Android開発でも広く使われています。ビルドツール(プログラムの部品を管理する仕組み)であるGradleの設定ファイルに、次のように依存関係を追加します。

implementation("com.squareup.okhttp3:okhttp:4.12.0")

これでOkHttpの機能がプロジェクト内で使えるようになります。

実際にリクエストを送るコード例

実際にAI APIへリクエストを送る処理のイメージは、次のようなコードになります(APIキーやURLは各サービスの仕様に合わせて置き換えてください)。

val client = OkHttpClient()

val json = """
    {"model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "こんにちは"}]}
""".trimIndent()

val body = json.toRequestBody("application/json".toMediaType())

val request = Request.Builder()
    .url("https://api.example.com/v1/chat/completions")
    .addHeader("Authorization", "Bearer YOUR_API_KEY")
    .post(body)
    .build()

client.newCall(request).execute().use { response ->
    println(response.body?.string())
}

ここで登場する「APIキー」とは、そのサービスを使う権利を証明するための、いわば合言葉のような文字列です。APIキーはコードに直接書き込まず、環境変数や設定ファイルに分けて管理し、他人に見える場所(GitHubなど)にうっかり公開しないよう注意しましょう。

Kotlinならではのポイント

Kotlinには、他言語と比べて意識しておきたい特徴がいくつかあります。ひとつは「null安全」という仕組みです。KotlinはAPIのレスポンスに値が入っていない可能性がある場所を型で明示できます。?.?:といった記法を使うことで、値が空だった場合の対処をコンパイル時(プログラムを実行前に確認する段階)に強制してくれます。これにより「値が空っぽで処理が止まってしまう」という不具合を未然に防ぎやすくなります。

もうひとつは「コルーチン」という非同期処理の仕組みです。AI APIへの通信は、回答が返ってくるまで数秒かかることもあり、その間アプリの画面が固まってしまっては困ります。コルーチンを使うと、通信を待っている間も他の処理を進められるようなコードを、比較的シンプルな書き方で実現できます。慣れないうちは難しく感じるかもしれませんが、「待ち時間のある処理を裏側でこなす仕組み」という理解でまずは十分です。

まとめ

AI APIの呼び出しは、仕組みだけ見ると「JSONを送って、JSONを受け取る」というシンプルなやり取りです。Kotlinで扱う際は、OkHttpのようなライブラリを使って通信します。null安全やコルーチンといったKotlinらしい機能を活かすと、より安全で扱いやすいコードになります。まずは簡単なリクエストを送ってレスポンスを表示するところから試してみて、少しずつ自分のアプリに組み込んでいくとよいでしょう。

関連記事


本ページはプロモーションを含みます。

参考書籍(PR)

Kotlinをもっと学びたい方には「やさしいKotlin入門」がおすすめです。

コメント

このブログの人気の投稿

#11 Rustで学ぶエラーハンドリングの基本

#16 TypeScriptで学ぶ辞書型(マップ)の基本

#19 Goで学ぶテスト(単体テスト)の基本