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

はじめに

ChatGPTのようなAI(人工知能)に、Webページやプログラムから直接質問を送りたいと思ったことはありませんか。実は「API(エーピーアイ)」という仕組みを使えば、JavaScriptからでもAIに文章を投げて、返ってきた答えを画面に表示することができます。APIとは「Application Programming Interface」の略です。あるサービスの機能を外部のプログラムから使わせてもらうための「窓口」のようなものです。この記事では、JavaScriptからAI APIを呼び出す基本の流れを、初めての人にもわかるように解説します。

AI APIを使う前に知っておきたいこと

APIキーとは何か

多くのAIサービスは、誰でも自由に使えるわけではなく「APIキー」と呼ばれる文字列を発行しています。これはサービスを利用するための合言葉のようなもので、リクエスト(サービスへの依頼)に添えることで「誰がどれだけ利用したか」をサービス側が把握できる仕組みです。APIキーは家の鍵と同じくらい大切な情報なので、コードにそのまま書いてSNSやGitHubに公開したりしないよう注意しましょう。

ブラウザとNode.jsでの違い

JavaScriptには大きく分けて、Webブラウザ上で動かす場合と、Node.js(サーバー側でJavaScriptを実行できる環境)で動かす場合があります。ここで気をつけたいのが、ブラウザのコードにAPIキーを直接書いてしまうと、Webページのソースを見れば誰でもキーを見られてしまうという点です。そのためAPIキーを使うAI API呼び出しは、基本的にNode.jsなどのサーバー側で行います。ブラウザからは、そのサーバーを経由してAIに問い合わせるという形にするのが安全とされています。

fetch APIを使った呼び出し方の基本

JavaScriptにはfetchという、Webサービスと通信するための標準機能が最初から用意されています。Pythonなどでは外部ライブラリをインストールして通信を行うことが多いですが、JavaScriptではfetchが言語やブラウザに組み込まれています。そのため、追加の準備なしにすぐ使い始められるのが特徴です(Node.jsの場合はバージョン18以降で標準対応しています)。基本の書き方は次のようになります。

const apiKey = process.env.AI_API_KEY; // 環境変数からキーを読み込む

async function askAI(question) {
  const response = await fetch("https://api.example.com/v1/chat", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "Authorization": `Bearer ${apiKey}`
    },
    body: JSON.stringify({
      messages: [{ role: "user", content: question }]
    })
  });

  const data = await response.json();
  console.log(data);
}

askAI("こんにちは");

コード中のprocess.env.AI_API_KEYは、「環境変数」(プログラムの外側で管理し、実行時にコードへ渡す値)からAPIキーを読み込む書き方です。APIキーをコードに直接書かずに済むため、先ほど触れた「キーを人目に触れさせない」ための代表的な方法です。

fetchは非同期処理(処理の完了を待つ間、他の作業を止めずに進められる仕組み)を前提に作られています。そのため、awaitという「結果が返るまで待つ」という意味のキーワードとセットで使うのが基本です。awaitを使う関数には、あらかじめasyncという目印を付けておく必要があります。

エラー時に気をつけたいこと

API呼び出しは必ず成功するとは限りません。APIキーが間違っている、通信が不安定、利用回数の上限に達しているなど、さまざまな理由でエラーが返ることがあります。こうした場合に備えて、trycatchという「エラーが起きても処理を止めずに対応する」ための構文を使うと安心です。

async function askAI(question) {
  try {
    const response = await fetch("https://api.example.com/v1/chat", {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        "Authorization": `Bearer ${apiKey}`
      },
      body: JSON.stringify({ messages: [{ role: "user", content: question }] })
    });

    if (!response.ok) {
      throw new Error(`通信エラー: ${response.status}`);
    }

    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error("エラーが発生しました:", error);
  }
}

response.okは、通信が正常に成功したかどうかを判定できる便利なプロパティです。エラーの内容には原因のヒントが含まれていることが多いので、まずは落ち着いてメッセージを確認してみましょう。

まとめ

JavaScriptからAI APIを呼び出す基本の流れは、次の3ステップです。

  1. APIキーは環境変数などで管理し、コードに直接書かない
  2. 組み込みのfetchを使い、async/awaitでリクエストを送る
  3. try/catchでエラーに備える

JavaScriptはfetchが標準で使えるぶん、外部ライブラリの準備なしにすぐ試せるのが魅力です。最初は非同期処理の書き方に戸惑うかもしれませんが、慣れてしまえば短いコードでAIとのやり取りができるようになります。まずは簡単な質問を投げてみるところから始めてみましょう。

関連記事


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

参考書籍(PR)

JavaScriptをもっと学びたい方には「改訂新版JavaScript本格入門」がおすすめです。

コメント

このブログの人気の投稿

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

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

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