OpenAI API で初めての AI アプリを作る
基礎を理解したところで、実際にコードを書いてみましょう。このチュートリアルでは Node.js を例に、OpenAI API で最初のチャットリクエストを送り、ストリーミング出力、コスト、エラー処理などの本番運用の詳細を紹介します。
著者:AI Resource Hub
準備
まず OpenAI プラットフォームに登録して API キーを作成し、環境変数に保存します。コードにハードコードしたりリポジトリにコミットしたりしないでください。
export OPENAI_API_KEY="sk-..."SDK のインストール
公式の Node.js SDK を使うのが最も早く始められます:
npm install openai最初のチャットリクエストを送る
以下のコードは gpt-4o-mini にメッセージを送り、返信を出力します。messages 配列が会話履歴を保持し、role は system、user、assistant のいずれかです。
import OpenAI from 'openai';
const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
const res = await client.chat.completions.create({
model: 'gpt-4o-mini',
messages: [
{ role: 'system', content: 'You are a helpful assistant.' },
{ role: 'user', content: 'Describe large language models in one sentence.' },
],
});
console.log(res.choices[0].message.content);ストリーミング出力を使う
チャットアプリでは通常「逐次表示」効果が求められます。stream を有効にすると生成と同時に受信でき、体験が大きく向上します。
const stream = await client.chat.completions.create({
model: 'gpt-4o-mini',
messages: [{ role: 'user', content: 'Write a short poem about spring' }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? '');
}コストとエラー処理
API はトークン単位で課金されるため、適切な max_tokens を設定し使用量を監視してください。小さいモデル(mini シリーズなど)を選ぶとコストを大幅に下げられます。
ネットワークリクエストはタイムアウトやレート制限の可能性があるため、本番環境ではリトライ、タイムアウト、例外処理に加え、ユーザー入力の検証とコンテンツモデレーションが必要です。
マルチターン会話の構築
1回の API 呼び出しで答えられるのは1問だけですが、実際のアプリケーションは会話を維持します。重要なのは messages 配列を蓄積すること:各ラウンドの後にユーザーメッセージとアシスタントの返信を追加し、次回の呼び出し時に完全な履歴を送信します。system メッセージは位置 0 に置き、全体を通じてモデルの動作をアンカーします。
コンテキストウィンドウに注意:各ターンはトークンを増やすため、長い会話では古いメッセージを要約するか履歴を切り詰めて、ウィンドウ内に収め、コストを抑えましょう。
プロトタイプから本番へ
本番リリース前にいくつかの必須要素を整えましょう:max_tokens の上限を設定し予期しない請求を防ぎ、429 レート制限エラーに指数バックオフのリトライを実装し、高頻度プロンプトをキャッシュしてトークンを節約し、構造化ログで利用パターンを追跡し問題をデバッグします。