Foundry SDKでチャットアプリを作る|システム/ユーザープロンプトと多ターン【AI-901】

Foundry SDKでチャットアプリを作る(システム/ユーザープロンプト・多ターン会話)|Azure資格の森 AI-901 Azure AI Fundamentals
無料公式シラバス(AI-901)準拠|ドメイン2「Foundryで実装する」。前回デプロイしたモデルを、SDKで“チャットアプリ”に育てます。手を動かさなくても流れが頭に入るように。

前回はモデルをデプロイして1回だけ質問しました。今回はそれを会話できるチャットアプリにします。カギは2種類のプロンプト(システム/ユーザー)と、会話の履歴をつなぐ多ターンです。AI-901のシラバスにある「効果的なシステムプロンプトとユーザープロンプトを作成する」「軽量チャットクライアントを作成する」に対応します。

ロボットが、質問と応答の吹き出しが並ぶチャットアプリの画面をコードで組み立てているイメージ図

チャットに欠かせない「2種類のプロンプト」

チャットでは、AIへの言葉を2種類に分けて考えます。

システムプロンプト(AIの役割・口調・ルールを決める指示)とユーザープロンプト(利用者の実際の質問)の違いの図
  • システムプロンプト:AIの役割・口調・守るべきルールを決める“設定”。例:「あなたは親切な数学の先生です」。会話の最初に一度決めます。
  • ユーザープロンプト:利用者の実際の質問・お願い。例:「3x+11=14 を解いて」。毎回変わります。

同じ質問でも、システムプロンプト次第で答え方が変わります(先生口調/専門家口調/子ども向け、など)。良いチャットアプリ作りは、良いシステムプロンプト作りから始まります。

チャットアプリの流れ

チャットアプリの流れ:①システムで役割を決める ②ユーザーが質問を送る ③モデルが応答を返す ④履歴をつないで会話を続ける

コードで作ってみる(システムプロンプト+質問)

前回と同じく接続を作り、responses.createシステムプロンプト(instructions)質問(input)を渡します。

from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient

PROJECT_ENDPOINT = "ここに自分のエンドポイント"
project = AIProjectClient(endpoint=PROJECT_ENDPOINT, credential=DefaultAzureCredential())
openai = project.get_openai_client()       # モデルを呼ぶ窓口(前回と同じ)

response = openai.responses.create(
    model="gpt-5-mini",
    instructions="あなたは親切な数学の先生です。やさしく解説してください。",  # システムプロンプト(役割)
    input="3x + 11 = 14 を解いて",                                       # ユーザープロンプト(質問)
)
print(response.output_text)
  • instructions=システムプロンプト。AIの役割・口調を決めます。
  • input=ユーザープロンプト。実際の質問です。
  • 役割を「専門家として簡潔に」などに変えると、答え方が変わります。

会話を続ける(多ターン)

チャットらしくするには、前のやりとりを覚えたまま会話を続ける必要があります。previous_response_id前の応答のIDを渡すと、履歴が引き継がれます。

# 1回目の質問
first = openai.responses.create(
    model="gpt-5-mini",
    input="日本でいちばん高い山は?",
)
print(first.output_text)         # 例:富士山です

# 2回目:前の回答を覚えたまま続ける
second = openai.responses.create(
    model="gpt-5-mini",
    previous_response_id=first.id,    # 前の応答IDを渡す=会話の履歴をつなぐ
    input="その標高は?",             # 「その」が富士山を指す
)
print(second.output_text)        # 例:3,776メートルです
⚠️ つまずきポイント:previous_response_id を渡さないと、2回目の「その」が何を指すか分からず、会話がつながりません。履歴をつなぐ=前の応答IDを渡す、と覚えましょう。
🧪 やってみよう
上の2つを組み合わせ、input() でユーザーの入力を受け取って responses.create に渡し、previous_response_id でつなげば、あなただけのチャットアプリの完成です。まずはシステムプロンプトを変えて、答え方の違いを試してみましょう。
📝 AI-901 試験のポイント

  • システムプロンプト=AIの役割・口調・ルール(instructions)/ユーザープロンプト=実際の質問(input)
  • 多ターン会話は previous_response_id に前の応答IDを渡すと履歴が続く
  • 試すだけ=プレイグラウンド/アプリに組み込む=SDK(コード)

確認クイズ

Q1. AIの「役割・口調・ルール」を決める指示は?

A. システムプロンプト
B. ユーザープロンプト
C. エンドポイント
D. トークン

Q2. コードでシステムプロンプト(役割)を渡すパラメータはどれ?

A. instructions
B. input
C. model
D. previous_response_id

Q3. 会話の履歴をつないで「前の話を覚えたまま」続けるには?

A. previous_response_id に前の応答IDを渡す
B. temperature を上げる
C. 毎回 model を変える
D. 接続を毎回作り直す

Q4. ユーザーの実際の質問を渡すパラメータはどれ?

A. instructions
B. input
C. credential
D. model

よくある質問(FAQ)

Q. システムプロンプトとユーザープロンプトの違いは?

A. システム=AIの役割・口調・ルールの設定(最初に一度)、ユーザー=実際の質問(毎回)です。コードでは instructions と input に対応します。

Q. 会話を覚えさせるには?

A. previous_response_id に前回の応答IDを渡します。これで「前の話の続き」として答えてくれます。

Q. プレイグラウンドとSDKはどう使い分けますか?

A. ちょっと試すならプレイグラウンド、自分のアプリに組み込むならSDK(コード)です。

まとめ

  • システムプロンプト(instructions)=役割ユーザープロンプト(input)=質問
  • 多ターン会話は previous_response_id で履歴をつなぐ
  • これで「軽量チャットクライアント」が作れる=ドメイン2の基本
🎯 次のステップ

※本記事はMicrosoft公式のFoundryクイックスタート/Responses API ドキュメント(azure-ai-projects 2.x)に基づき、エンジニアKが作成しています。仕様は更新されるため、最新は Microsoft公式 をご確認ください。

コメント

タイトルとURLをコピーしました