【要約】LLMアプリは「ハーネス」が9割 ── Perl/CGIの現役SaaSにAIエージェントを組み込んで学んだこと [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者が、長年運用しているPerl/CGI製のSaaSにAIエージェントを組み込む際、既存システムの安定性を維持しつつ、LLMの不確実性をどう制御するかという問題に直面した。
- ・レガシーなApache/CGI構成への影響とリグレッションリスク。
- ・LLMの特性である「記憶の欠如」「手足の欠如」「正直さの欠如」。
- ・業務システムにおけるユーザー権限の管理とデータ整合性の確保。
- ・LLMによる数値捏造や、ツールを呼ばずに回答を終える虚偽報告のリスク。
// Approach
開発者は、LLMを「続き予測マシン」と割り切り、その欠落を補うための外側の仕組み「ハーネス」を構築するアプローチを採用した。
- ・FastAPIを用いた外部API方式による、既存システムとの疎結合な分離。
- ・会話履歴をクライアント側で保持し、サーバーを完全ステートレスにする設計。
- ・YAMLファイルによるツール定義と、実際のAPI呼び出しの統合管理。
- ・正規表現を用いたLLMの嘘に対する検知と、機械的な差し戻し処理。
- ・書き込み操作における「ドラフト作成+人間による検品」のフロー構築。
- ・計算処理をLLMから分離し、決定的な計算エンジンに委譲する設計。
// Result
開発者は、LLMの挙動を機械的に縛ることで、業務利用に耐えうる信頼性の高いエージェント機能を試作した。
- ・既存システムの構成を変更せず、低リスクなAI機能の統合を実現。
- ・権限昇格の議論を排除する、既存API経由のデータアクセス構造。
- ・「AIを賢くするより、信用しない仕組みを作る」という実戦的な設計指針。
- ・実測駆動のテスト(スイープ)による、プロンプトの継続的な改善。
- ・LLMの不確実性を、システム側で制御可能な範囲に収めることに成功。
Senior Engineer Insight
> 極めて実践的な設計である。特にレガシー環境への「外部API化」による分離は、リグレッションリスクを最小化する賢明な判断だ。また、LLMに計算をさせず、書き込みを人間が介在させる「非信頼」を前提とした設計は、エンタープライズ用途におけるAI導入の鉄則といえる。スケーラビリティとセキュリティを両立させるステートレス設計も高く評価できる。