〜「翻訳はAI、守りはコード」という設計の考え方〜
はじめに
こんにちは。本記事では、AIアシスタントと社内の業務システムを連携させるにあたり、私たちが採用した設計の考え方をご紹介します。まだ発展途上の取り組みではありますが、同じような課題に向き合っている方にとって、少しでもヒントになれば幸いです。
対象読者
- 自社システムとAIの連携を検討しているエンジニアの方
- AIの誤りにどう備えるべきか、関心をお持ちの方
この記事でわかること
1.プロンプトだけではAIの誤りを防ぎきれない理由
2.「翻訳はAI、守りはコード」という設計の考え方
3. 実際に運用して得られた学びと、今後の課題
1. 背景
私たちが日常的に利用している業務システムでは、顧客とのやり取りを日々記録する必要があります。しかし、フォームに一件ずつ入力する作業は負担が大きく、記録が漏れたり不十分になったりすることもありました。
そこで、「顧客に電話した」のように普段の言葉で伝えるだけで記録が完了する仕組みを目指し、AIアシスタントとの連携に取り組むことにしました。
2. 直面した課題
AI(大規模言語モデル)は人の言葉を理解することに長けていますが、常に正しいとは限りません。一方で、データベースが受け付けるのは、あらかじめ定められたコードや標準時刻、IDといった厳密なデータだけです。
この両者をつなぐにあたり、次の二つの問いが浮かび上がりました。
- AIが誤った場合、その誤りがデータベースに届く前に、どこで食い止めるのか
- 同じ指示であれば、いつ伝えても同じ結果になることを、どう担保するのか
当初は、AIにルールを丁寧に説明すれば十分だと考えていました。しかし検討を重ねるうちに、プロンプトはあくまで「指針」であり、「保証」にはならないことが明らかになりました。
3. 解決策 — 翻訳はAI、守りはコード
私たちが出した答えは、「翻訳はAI、守りはコード」という考え方です。AIには、自然な言葉を理解してシステムが扱える形に“翻訳”する役割だけを任せます。そして、正確さが求められる処理は、三つのコードの層で段階的に確認します。

図1 全体構成
AIとバックエンドの間には連携用のサーバーを設けており、AIがデータベースを直接操作することはありません。AIにできるのは、サーバーが公開しているツールを呼び出すことだけです。
表1 各層の役割
|
# |
層 |
役割 |
結果の再現性 |
|
① |
ガイドライン |
ルールや項目の意味を、文章でAIに伝える |
なし(AIの判断に依存) |
|
② |
スキーマ検証 |
許可された値以外を受け付けず、AIに再試行を促す |
あり |
|
③ |
決定的な変換 |
タイムゾーン変換、デフォルト値の補完、名前からIDへの変換をコードで行う |
あり |
|
④ |
業務ルール(バックエンド) |
関連する項目を算出し、ルールに合わないデータは拒否する |
あり |
下の層は、上の層で誤りが起きたときに受け止める「セーフティネット」の役割を果たします。特に重要なルールは、①のガイドラインに書くだけでなく、④のバックエンドにも必ず実装している点がポイントです。
4. 具体例
例えば、ユーザーが「顧客向けに、金額と期日を含む新しい記録を作成してほしい」と依頼した場合、処理は次の流れで進みます。
1. ① ガイドラインの参照 — AIがガイドラインを読み、入力すべき項目と、入力してはいけない項目を把握します。
2. AIによる翻訳 — 「新規」「300万」「月末」といった言葉を、それぞれコード・数値・日付に変換し、ツールを呼び出します。
3. ② スキーマ検証 — 値が許可された範囲内かを確認します。誤りがあればエラーを返し、AIが修正して再試行します。
4. ③ 決定的な変換 — 必要な情報が不足していれば、ドロップダウンでユーザーに選択してもらい、選ばれた名前をIDに変換します。あわせてデフォルト値も補完します。
5. ④ 業務ルールの適用 — バックエンドが関連項目を算出し、ルールに合致した場合にのみデータを保存します。
このうち、AI自身の判断に委ねているのはステップ1と2だけです。それ以降はすべてコードで制御しているため、毎回同じ結果が得られます。
5. 振り返り
うまくいった点
- AIが誤った場合でも、誤ったデータはデータベースに届く前に、いずれかの層で食い止められるようになりました。
- 関連項目の算出をバックエンドに一本化したことで、AI経由でもWeb画面経由でも同じ結果が得られます。
- マスターデータをハードコードせず実行時に取得しているため、変更への対応が容易になりました。
今後の課題
- 自然な言葉からコードへの変換はAIに依存しているため、完全に同じ結果を保証するには至っていません。
- マスターデータの名称を変更すると、バックエンドのルールも合わせて修正する必要があるなど、依存関係が残っています。
6. 今後の取り組み
- よく使われる言い回しとコードを対応づける「エイリアス表」をサーバー側に用意し、変換の精度と再現性を高めることを検討しています。
- 各マッピングの所在と依存関係を文書化し、チーム全体で把握できる状態を目指します。
おわりに
AIを業務システムとつなぐ際には、「AIに何ができるか」を考える前に、「AIが誤ったとき、どこで止めるか」を設計することが重要だと、私たちは学びました。本記事が、同様の課題に取り組む皆さまの一助となれば幸いです。
最後までお読みいただき、ありがとうございました。ご意見やご質問がございましたら、お気軽にお寄せください。
🌍 世界中の人材をお探しですか?ぜひチェックしてみてください!
海外人材ソリューション: https://gicjp.com/recruitment-support
海外人材ソリューション事例: https://gicjp.com/recruitment-casestudy
海外のIT人材や外国人を採用することにご興味をお持ちでしたら、ぜひご覧ください。ITソリューション: https://gicjp.com/it-solutions
ITソリューション事例: https://gicjp.com/customers
GICグローバル採用 – IT業界を中心に多職種を募集: https://gicjp.com/recruit
SES・人材事業ビジネスパートナー募集: https://gicjp.com/partner
ブロガー紹介: https://gicjp.com/blogger-introduction
AIチャットボットを2週間で構築した方法: https://gicjp.com/archives/88333
ウェブサイト: https://gicjp.com/
お問い合わせ・ご相談はこちらまで: https://gicjp.com/contact/
登壇者プロフィール

グローバルイノベーションコンサルティング株式会社
GIC Myanmar Co.,Ltd.AIアプリケーションエンジニア
2019年12月~2021年2月:Metro IT and Japanese Language Centre – Web Engineer
2020年1月~2022年5月MMS IT
2022年6月~2023年10月:Brycen Myanmar
2023年11月~現在:グローバル・イノベーション・コンサルティング – Web Engineer
Myat Khine Lin
AIアプリケーションエンジニア