AIアプリケーション

AIアプリケーション

執筆済 AIシステム

LLM を組み込んだアプリケーションを作るときに、 従来のソフトウェアと何が変わるか。

決定的でない#

同じ入力で同じ出力が返らない。

影響 対処
テストが書きにくい 評価データセットで統計的に測る
デバッグが難しい 入出力をすべて記録する
回帰に気づけない 定期的に評価を回す

単体テストではなく評価 (eval) が中心になる。

失敗を前提にする#

失敗 対処
幻覚 RAG、出力の検証
形式の逸脱 スキーマ検証してリトライ
応答が遅い ストリーミング表示
API 障害 フォールバック、キャッシュ

コストとレイテンシ#

トークン単位で課金され、 生成は逐次的に遅い。

  • プロンプトキャッシュで入力側のコストを下げる
  • 簡単なタスクは小さいモデルに振り分ける
  • ストリーミングで体感速度を上げる
  • 不要な文脈を入れない(コストと精度の両方に効く)

セキュリティ#

  • プロンプトインジェクション — 外部データに含まれる指示
  • 出力をそのまま実行しない(コード、SQL、シェル)
  • 権限を最小化する
  • 秘密情報をプロンプトに入れない

外部から取り込んだ内容はデータであって命令ではない、 という境界をシステム側で維持する必要がある。 モデルの判断に頼るのは危うい。

UX#

確率的なシステムを人が使うための設計。

  • 何を根拠にしたかを示す(引用、出典)
  • 訂正・やり直しを容易にする
  • 副作用のある操作は確認を挟む
  • 不確かさを隠さない

参考文献#

ノート一覧を閉じる