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

ChatGPTのような生成AIを、自分のプログラムから呼び出して使ってみたい――そんな興味を持つ人が増えています。実はC#からでも、比較的シンプルなコードでAI API(エーアイ エーピーアイ。AIの機能をインターネット経由で呼び出すための窓口のようなもの)を利用できます。この記事では、C#でAI APIを呼び出す際の基本的な流れと、押さえておきたい注意点を初心者向けに解説します。

AI APIって何をしているの?

AI API(APIはApplication Programming Interfaceの略で、「プログラム同士が会話するための決まりごと」のことです)を使うと、自分のアプリからインターネットを通じて「この文章に返事をください」といったお願いを送れます。すると、AIが考えた答えを受け取ることができます。多くのAIサービスは、この仕組みをHTTP通信(Webサイトを見るときと同じ仕組みの通信)で提供しており、C#からも他の言語と同じように利用できます。

必要なもの

  • 利用したいAIサービスのAPIキー(利用者を識別するための合言葉のような文字列)
  • .NET SDK(C#のプログラムを動かすための開発環境)
  • インターネット接続

C#でAPIを呼び出す基本の書き方

C#には HttpClient というクラス(通信機能をひとまとめにした部品)が標準で用意されており、これを使ってAI APIにリクエスト(要求)を送ります。大まかな流れは次の3ステップです。

  1. 送りたい内容(質問文など)をJSON形式(データをやり取りするための共通フォーマット)に変換する
  2. HttpClientでAPIのアドレスにリクエストを送る
  3. 返ってきたJSONを読み取り、必要な部分(AIの返答文)を取り出す

コードのイメージは以下のようになります(実際のAPIキー・URL・モデル名は利用するAIサービスに合わせて読み替えてください)。

using System.Net.Http.Json;

// apiKeyには事前に取得したAPIキーの文字列を入れておく
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + apiKey);

var requestBody = new
{
    model = "gpt-4o-mini",
    messages = new[]
    {
        new { role = "user", content = "C#の初心者に一言アドバイスをください" }
    }
};

var response = await client.PostAsJsonAsync(
    "https://api.example.com/v1/chat/completions", requestBody);

// ChatResponseは、返ってくるJSONの形に合わせて自分で定義するクラス
var result = await response.Content.ReadFromJsonAsync<ChatResponse>();
Console.WriteLine(result?.Choices[0].Message.Content);

ポイントは、通信という「時間がかかる処理」を待つために await(処理の完了を待つ合図のようなキーワード)を使っている点です。C#では非同期処理(他の作業をブロックせずに待つ書き方)が言語レベルでサポートされており、比較的素直に書けるのが特徴です。

C#ならではの注意点

受け取るデータの型をしっかり決める

PythonやJavaScriptでは、返ってきたJSONをそのまま辞書のように扱えることが多いですが、C#は「静的型付け言語」と呼ばれ、変数の型をあらかじめ決めて使うのが基本です。そのため、APIから返ってくるJSONの形に合わせて classrecord(データの入れ物を定義する書き方)をあらかじめ用意し、System.Text.Json という標準機能で自動的に変換してもらうのが一般的です。最初は手間に感じるかもしれませんが、型が決まっている分、あとから「どんなデータが入っているか分からない」というミスに気づきやすくなります。

HttpClientは使い回す

C#では、通信のたびに new HttpClient()を作り直すと、内部的なリソース(通信用の接続口)を無駄に消費してしまうことがあります。実際のアプリでは、IHttpClientFactoryという仕組みを使って使い回すのが推奨されていますが、まずは「毎回作り直さない」という意識だけでも覚えておくとよいでしょう。

APIキーはコードに直接書かない

APIキーはいわば合言葉であり、他人に知られると勝手に使われてしまう可能性があります。ソースコードに直接書き込んでGitHubなどに公開してしまうと、第三者に悪用されるおそれがあります。そのため、環境変数や設定ファイル(appsettings.jsonなど、公開リポジトリに含めないファイル)から読み込む形にしましょう。これはC#に限らずどの言語でも共通する基本マナーです。

まとめ

C#からAI APIを呼び出す流れは、他の言語と同じく「JSONを送って、JSONを受け取る」というシンプルなものです。C#ならではの特徴としては、async/awaitによる分かりやすい非同期処理の書き方、そして型をきちんと定義してデータを扱う静的型付けの考え方が挙げられます。最初は少し準備が多く感じるかもしれませんが、慣れてくると「何が返ってくるか分からない不安」が減り、安心してAI機能を組み込めるようになります。まずは小さなコンソールアプリで、質問を送って返事を表示するだけの簡単なプログラムから試してみてください。

関連記事


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

参考書籍(PR)

C#をもっと学びたい方には「確かな力が身につくC#「超」入門 第2版」がおすすめです。

コメント

このブログの人気の投稿

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

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

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