この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。OpenAIの現在のモデルガイダンスとGoogle GeminiのStructured Outputs公式情報を確認し、旧版の「計算手順を文章で細かく出力させる」設計を、計算規則・外部計算・構造化出力・アプリ側検証を中心に見直しました。検証ステータス:📘 OpenAI・Google公式情報確認済み/特定モデル間の計算精度比較は未実施
LLMに「重量、距離、割引、税率を考慮して最終料金を出して」と頼むと、もっともらしい計算説明と答えを返すことがあります。しかし、説明が長いことと、計算が正しいことは別問題です。
業務で金額を扱うなら、モデルには条件整理や入力の解釈を担当させ、算術そのものは計算ツールやプログラムで検証できる形にします。
最初に計算ルールを固定する
基本料金 = 距離km × 距離単価
重量加算 = 重量kg × 重量単価
小計 = 基本料金 + 重量加算
割引後 = 小計 × (1 - 割引率)
税額 = 割引後 × 税率
最終料金 = 割引後 + 税額
「どの順序で割引するか」「端数処理はいつ行うか」まで業務ルールとして決めます。
モデルには入力の整理をさせる
次の依頼文から計算に必要な値だけを抽出してください。
不明な値は推測せず null にしてください。
必要項目:
- weight_kg
- distance_km
- distance_rate
- weight_rate
- discount_rate
- tax_rate
自然言語を数値入力へ変換する部分に生成AIを使い、その後の計算は決定的な処理へ渡します。
計算はプログラム側で行う
def calculate_price(weight_kg, distance_km, distance_rate,
weight_rate, discount_rate, tax_rate):
base = distance_km * distance_rate
weight_fee = weight_kg * weight_rate
subtotal = base + weight_fee
discounted = subtotal * (1 - discount_rate)
tax = discounted * tax_rate
return {
"subtotal": subtotal,
"tax": tax,
"final_price": discounted + tax,
}
計算規則をコードに固定すると、モデル変更によって算術結果が揺れる問題を減らせます。
最終結果は構造化して受け取る
OpenAIやGeminiでは、対応するAPI機能を使ってJSON Schemaに沿ったStructured Outputsを利用できます。単に「JSONで返して」と文章で頼むより、形式検証をAPI側へ寄せられます。
{
"type": "object",
"properties": {
"final_price": {"type": "number"},
"currency": {"type": "string", "enum": ["JPY"]},
"needs_review": {"type": "boolean"}
},
"required": ["final_price", "currency", "needs_review"]
}
ただし、スキーマに合うJSONが返っても、値の意味が正しいとは限りません。Googleの公式ガイドでも、構造化出力の値はアプリ側で検証することが推奨されています。
検証で見るポイント
| 確認 | 方法 |
|---|---|
| 必須値 | nullや欠損を検査 |
| 率の範囲 | 0〜1など業務ルールで検査 |
| 単位 | kg / km / 円などを固定 |
| 端数処理 | 四捨五入・切捨て等をコード化 |
| 異常値 | 負数、過大値を拒否 |
| 計算結果 | プログラムで再計算 |
役割を分ける
flowchart LR
A[自然言語の依頼] --> B[LLMで値を抽出]
B --> C[入力バリデーション]
C --> D[プログラムで計算]
D --> E[結果を構造化]
E --> F[表示・保存]
まとめ
多段計算では、詳細な計算説明を文章として出させることより、計算ルールを明文化し、入力を型付きで受け、外部計算で再現可能にすることが重要です。
金額・数量・税率など業務上の重要値では、「AIの説明がもっともらしいから採用」ではなく、同じ入力なら同じ結果になる計算コードと検証を用意します。
公式情報・一次情報
この記事の更新履歴
- 2026-09-13 追加:外部計算、入力検証、Structured Outputs、アプリ側意味検証を追加。
- 2026-09-13 変更:長い計算説明を前提にした構成から、再現可能な計算パイプライン中心へ変更。
- 2026-09-13 削除:内部メタ情報、本文H1、旧モデル固有の推奨、計算精度向上を断定する未検証記述を削除。

