サイトアイコン IT & ライフハックブログ|学びと実践のためのアイデア集

【授業レポート】システム開発(3年) 第47週目〜生成AI実装ハンズオン:安全に呼び出し、安全に表示する〜

boy in green shirt

Photo by CDC on Pexels.com

【授業レポート】システム開発(3年) 第47週目

〜生成AI実装ハンズオン:安全に呼び出し、安全に表示する〜

第47週目は、前回学んだ設計をもとに、生成AI APIを実際に呼び出すハンズオン実装を行いました。
テーマは明確です。

「呼び出せる」ではなく、「安全に使える」状態まで作る。

便利さだけで終わらせない、制御されたAI連携の第一歩となりました。


■ 先生の導入:「AIは出力して終わり、ではない」

田中先生:「今日のゴールは“AIが返す文章をそのまま出すこと”ではありません。
“検証し、整形し、責任を持てる形にすること”です。」

先生は、次の3段階を黒板に書きました。

  1. 入力を整える(プロンプト設計)
  2. 出力を検証する(フォーマット・内容チェック)
  3. 表示を制御する(UI配慮・フォールバック)

■ 今日のゴール

  1. 生成AI API をコードから呼び出す
  2. プロンプトを Service 層で組み立てる
  3. 出力形式を制限する
  4. 想定外出力に対するフォールバックを実装する

■ 実習①:安全なプロンプト設計

まずは、AIに渡す前の入力制御から。

実施した工夫

  • ユーザー入力の長さ制限
  • 危険ワードの簡易チェック
  • 出力形式の明示
  • 「事実の追加禁止」などの制約文追加

例(概念)

あなたは図書館システムの補助AIです。
以下の文章を100字以内で要約してください。
事実を追加しないでください。
出力は1文のみ。

生徒A:「指示を具体的にすると、ブレが減る!」


■ 実習②:AI呼び出しをService層に実装

前回設計した構造に沿って、
AI Clientクラスを作成し、Service層から呼び出しました。

UI
 ↓
SummaryService
 ↓
AiClient
 ↓
生成AI API

学習用イメージ(簡略)

def summarize(self, text):
    prompt = self.build_prompt(text)
    result = self.ai_client.generate(prompt)
    return self.validate_output(result)

ポイント:

  • UIはAIの存在を直接知らない
  • AI呼び出しは必ずService経由
  • 出力検証はServiceで行う

生徒B:「AIも“外部APIの一種”として扱える」


■ 実習③:出力検証(Validation)を入れる

ここが今日の最重要ポイント。

チェックした項目

  • 文字数制限を超えていないか
  • 空文字でないか
  • 禁止ワードが含まれていないか
  • 形式が1文になっているか
if len(result) > 120:
    raise ValueError("出力が長すぎます")

検証に失敗した場合は:

  • 固定文に置き換える
  • 「現在要約を生成できません」と表示
  • ログへ詳細記録

生徒C:「AIの出力を“信じない設計”が大事なんだ」


■ 実習④:フォールバック設計

AIが失敗した場合の代替動作を実装。

  • 固定テンプレートを返す
  • 元の文章の冒頭をそのまま表示
  • AI機能を無効化して通常モードへ戻す
try:
    summary = service.summarize(text)
except Exception:
    summary = "現在要約を生成できません。"

生徒D:「“なくても困らない設計”にする安心感」


■ 実習⑤:UIへの表示配慮

最後に、AI生成であることを明示する表示を追加。

例:

  • 「※AIによる自動生成」
  • 小さく補助的に表示
  • 誤りの可能性を明記

先生:「透明性は信頼につながります。」


■ クラス全体の気づき

  • 生成AIは“便利な補助機能”として使う
  • Service層の責任が非常に重い
  • 出力をそのまま出さないことが最重要
  • ログ設計がより重要になる

■ 先生のまとめのひとこと

「生成AI連携は、
“技術力”より“設計力”が問われます。

AIを使うことは簡単です。
でも、
安全に使い続けられる設計を作ることが本当の力です。」


■ 宿題(次週に向けて)

  1. 今日実装したAIユースケースの 安全設計図(入力→AI→検証→表示) を作成
  2. 出力検証ルールを3つ追加する
  3. AIが誤った内容を返した場合のユーザー通知文を考える

■ 来週の予告:生成AIの評価と改善サイクル

次週は、
生成AIの出力をログで評価し、
**改善サイクル(プロンプト調整・検証強化)**を回す回です。


第47週目は、
生成AIを“制御された形で組み込む”実践的な一歩となりました。
生徒たちは、AIに振り回されるのではなく、
AIを設計の中に収める力を確実に身につけ始めています。

モバイルバージョンを終了