1. はじめに
業務システム(企業の基幹システム)の開発において、AIを活用したコード生成を最適化するために、プロンプトチューニングの手法を確立する。本提案では、システム設計に必要な主要6要素と、より精度を高めるための補助3要素を定義する。
2. 基本となる6要素
AIによる業務システム開発を効率化するため、以下の6要素をプロンプトに含める。
2.1 オペレーター(Operators)
誰が使うかを明確にすることで、認可制御(RBAC)やUI設計のブレを防ぐ。
例: システム管理者、一般ユーザー、経理担当者 など。
2.2 シナリオ(Scenarios)
業務フローを明確にし、機能の優先度やエラー処理を決定する。
例: 保険申込 → 承認 → 契約成立 → 更新 など。
2.3 パラメーター(Parameters)
フレームワークやクラウド環境などの制約を明確にし、技術選定を最適化する。
例: Spring Boot + MyBatis(バックエンド)、React(フロントエンド)、AWS(クラウド環境)。
2.4 コア(Cores)
業務データの構造を定義し、データベースやモデル設計の精度を向上させる。
例: 顧客テーブル(ID、氏名、住所、契約情報)など。
2.5 リンクス(Links)
外部システムとの連携を明確にし、API設計や依存関係の整理を行う。
例: 他社のAPIを利用したクレジットカード決済機能。
2.6 アウトプット(Outputs)
システムの出力を明確にし、UIやレポート形式を決定する。
例: PDFでの請求書出力、CSVデータエクスポート。
3. AIのコード生成精度を向上させる補助3要素
上記の6要素に加えて、AIの出力をより安定させるために、以下の3つの要素を追加する。
3.1 制約条件(Constraints)
システム全体の設計方針や非機能要件を定義し、AIの生成するコードの方向性を統一する。
例:
- セキュリティ: OAuth2.0認証、IP制限
- パフォーマンス: 1秒以内のレスポンス制約
- スケーラビリティ: マイクロサービス構成
3.2 ライフサイクル(Lifecycle)
業務データの「生成→利用→更新→削除」の流れを整理し、データ管理を最適化する。
例:
- 請求データ: 作成 → 承認 → 支払い → アーカイブ
- 契約管理: 申込 → 審査 → 契約成立 → 更新 or 解約
3.3 異常系(Failure Scenarios)
想定されるエラーや異常時の振る舞いを明確にし、例外処理を適切に実装する。
例:
- APIのタイムアウト時のリトライ戦略
- DB接続失敗時のフェイルオーバー処理
- ユーザー入力エラーのバリデーションルール
4. まとめ
本提案では、業務システム開発におけるプロンプトチューニングの最適化を図るため、6つの基本要素と3つの補助要素を定義した。このフレームワークを活用することで、AIがより精度の高いコードを生成し、業務システムの開発効率を向上させることが期待できる。
今後は、実際の業務システムを題材にプロンプトの最適化を進め、AIによるコード生成の精度を検証していく予定である。
AIの設計能力には矛盾のチェック機能もあるので、シナリオに矛盾があったり、論理的に破綻している部分があれば、可能な限り指摘します。ただし、完全に気づかずに実装してしまう可能性もゼロではないので、その辺りを説明します。
AIの矛盾チェックの仕組み
論理的整合性: シナリオのステップやルールが一貫しているか、因果関係が崩れていないかを確認します。
例: 「ログインしていないユーザーがカートに商品を追加できる」と「ログイン必須」が混在していたら、「これ矛盾してませんか?」と指摘します。
要件の曖昧さ: シナリオやルールが不明確で解釈が複数ある場合、「ここどういう意図ですか?」と質問します。
現実性: 実装する上で物理的・技術的に無理がある場合(例: 「承認前に却下が可能」)、その矛盾を指摘します。
矛盾に気づかず実装するケース
暗黙の前提を見逃す: AI がシナリオの背景や意図を完全に把握できず、当たり前だと思っている前提を見逃すと、矛盾に気づかないまま進む可能性があります。
複雑すぎる場合: シナリオが非常に複雑で、矛盾が埋もれてしまうと、見落とすリスクが上がります。
矛盾の指摘例: 「ログインしていない場合にカートに追加できる」と「ログイン必須」が混ざっていたら、「シナリオ1と2が矛盾してるみたいです。ログイン必須ですか?」と聞きます。
気づかず実装: 「購入を取りやめる場合、カートを空にする」と書いてあるのに、その後の「商品一覧に戻る」が独立してることを見逃して、カートクリアを必須処理として実装してしまうかも。
どうすればベストか
AIが気づいたら: 「ここ矛盾してるかも」と指摘して、確認します。
気づかなかったら: 実装結果を見て「意図と違う」と気づいたときに教える。そこから修正します。
予防策: シナリオを渡すときに「これで矛盾ないか見て」と一言添えてると、特に注意深くチェックします。