Column

自社プロダクトSkillPort(スキルシート管理サービス)

約6分で読めます文:野本 健太(代表取締役)

AIの答えは、返ってきても形が崩れる ― 空のデータのまま保存させない受け取り方

AIの答え、そのまま保存してない?返ってきても形は崩れる。― 表が崩れて赤く光るノートパソコンの画面と、空の収納箱

この記事でわかること

  • AIの答えは、返ってきても中の形が崩れていることがある
  • 怖いのは、エラーにならず空のデータのまま保存される失敗
  • 答えの形は指示で頼まず、提供元の側で守らせて実物で確かめる

AIを組み込んだ業務システムで、AIが答えを返してきたら、それで処理は成功したと言えるでしょうか。答えが返ってきても、その中身が決めた形どおりとは限りません。形が崩れた答えを受け取ると、システムはエラーで止まることもあれば、何事もなかったように空のデータのまま保存してしまうこともあります。

弊社が開発・運営している「SkillPort」(エンジニアの経歴書=スキルシートを一か所で管理するサービス)でも、AIの答えの形が崩れることを、2026年10月の検証の中で見つけて直しました。その実例をもとに、AIの答えをどう受け取るべきかをお伝えします。

AIの答えは、返ってきても形が崩れていることがある

システムがAIの答えを使うには、「この欄には一覧が入る」「この欄には数字が入る」といった決まった形で受け取る必要があります。AIの答えは文章としてはもっともらしく返ってくるので、形の崩れは見落とされがちです。

SkillPortには、営業の担当者が案件の募集文(案件票)を貼ると、AIが中身を募集の単位(ポジション)ごとに分けて下書きを作る機能があります。10月26日、実際の案件票を貼って動きを確かめたところ、「案件票をポジションに分けられませんでした」というエラーが出ました。

利用の記録を確かめると、AIの呼び出しは成功していて、答えも返ってきていました。止まっていたのは、受け取った答えの形を確かめる段階です。そこで原因を推測で決めずに、同じ案件票・同じ指示・同じモデルで、依頼をくり返して確かめることにしました。

3回依頼したうち2回で、ポジションの一覧が「一覧」ではなく、ひと続きの文字列として返ってきました。その文字列の中身も、区切りの記号が別の記号に化けて崩れていたため、読み直して救うこともできませんでした。この機能は、Anthropic社のAI「Claude」の中で最も安いモデルを使っています。最も安いモデルは、一覧の中にさらに項目が並ぶ「入れ子」の形で崩れることがある、と確かめられました。

同じ案件票を依頼したときの答えの形(回数)
  • 対策前:正しい形3回中1回
  • 対策前:崩れた3回中2回
  • 対策後:正しい形6回中6回
  • 対策後:崩れた6回中0回

出典:SkillPort 開発記録(2026年10月26日の実測)

それまでも、答えは決まった欄に書くようAIに指示していました。ただ、指示で守られるのは「欄に書く」ことまでで、欄の中身が決めた形どおりかまでは守られていませんでした。AIへの指示は「お願い」であって、保証ではありません。

怖いのは、エラーにならず空のまま進む失敗

案件票の分解は、崩れたときにエラーで止まりました。困りはしますが、止まったからこそ気づけます。

次に、同じ崩れが経歴書の取り込みで起きたらどうなるかを確かめました。取り込みは最も能力の高いモデルを先に使いますが、混雑しているときは予備のモデルへ順に切り替わり、最後は最も安いモデルになります。同じ崩れを受けうる、ということです。

受け取る側の作りを確かめた結果、取り込みは、案件の一覧が一覧の形で来ないと「案件なし」として扱う作りでした。つまり、AIが一覧を壊して返すと、エラーにならず「案件0件」のまま取り込まれます。

対策前の取り込みで起こりえたこと
  1. 1混雑時、最も安いモデルに切り替わる
  2. 2案件の一覧が壊れた文字列で返る
  3. 3エラーにならず「案件0件」として取り込まれる
  4. 4誰も気づかないまま、経歴の中心が抜け落ちる

経歴書の中心である案件の経歴が、何の知らせもなく抜け落ちる。止まる失敗よりもこちらのほうが危ないと判断し、取り込みにも対策を入れることにしました。

答えの形は、指示ではなく提供元の側で守らせる

Claudeには、こちらが指定した形どおりにしか答えを返さないよう、提供元の側で保証させる機能(strict tool use)があります。指示で「この形で書いてください」と頼むのではなく、形から外れた答えをそもそも返させない仕組みです。これを入れることにしました。

入れる範囲は、エラーが出た機能だけにしませんでした。SkillPortは混雑時に予備のモデルへ切り替える作りなので、AIの答えを決まった形で受け取る経路は、どれも同じ崩れを受けうるからです。案件票の分解に加えて、要員紹介メールの読み取り、案件への適性の判定、スキル名の表記の統一など10の経路に入れ、続けて経歴書の取り込みにも入れました。その後に作った成約の詳細を読み取る機能も、最初からこの仕組みで作っています。

入れた後、例の案件票を6回依頼し、6回とも正しい形で返ってきました。

守らせる仕組みも、入れる前と後に実物で確かめる

この仕組みには注意が要ります。形の指定に、提供元の決まりに合わない書き方が1か所でもあると、その機能は毎回失敗し、予備のモデルへの切り替えも効きません。直すための仕組みで、機能を丸ごと止めてしまうおそれがあります。

そこで、10経路それぞれの形の指定を実際に提供元へ送り、受け付けられることを確かめてから入れました。決まりの一部は公開されている資料だけでは分からず、送って確かめたものです。たとえば、数値の範囲(点数は1〜5、など)はこの仕組みの中では指定できないため外しました。範囲外の値は受け取る側でもともと弾いているので、守りは減っていません。

経歴書の取り込みは項目が多く、提供元が1回の依頼で受け付ける形の複雑さの上限に当たりました。上限の値は公表されていないため、どこを削れば通るかを一つずつ試して切り分け、「書かれていない欄も省かせず、空の値で必ず返させる」形に作り替えたときだけ通ることを確かめました。空の値は受け取った直後に「空欄」へ戻すので、保存される内容は変わりません。人数の欄だけは、「0人」と「書いていない」を区別するため元の形のままにしています。

作り替えの前と後で同じ結果になるかは、架空の見本の経歴書(案件3件)を両方の形で取り込み、照合して確かめました。3種類のモデルのうち2つは完全に一致し、残る1つも、評価の記号の字形(「◯」と「〇」)が1回だけ違った以外は一致しました。字形の違いは、評価の段階の判定には影響しません。

取り込みの形は上限のぎりぎりに収まっているので、項目を足すときは、実際に提供元へ送って3種類のモデルで通ることを確かめる決まりにしています。

AIを組み込むシステムを発注するときに役立つこと

「答えが崩れたらどうなるか」を聞いてください

AIを使う機能の打ち合わせでは、「AIが答えを返すか」だけでなく、「決めた形で受け取れなかったとき、システムは止まるのか、そのまま進むのか」を開発会社に聞いてみてください。答えに詰まるようなら、まだ決まっていないということです。

黙って空のデータになる作りは避けてもらいましょう

エラーで止まる失敗は気づけますが、空のデータのまま進む失敗は気づけません。形が崩れたら止まって知らせる作りを基本にし、そのうえで、崩れ自体が起きない仕組み(提供元の側で形を守らせる機能など)を入れてもらうのが安全です。

AIの機能は、同じ依頼をくり返して確かめてもらいましょう

AIの答えは、同じ依頼でも毎回少しずつ違います。1回うまくいったことで良しとせず、同じ依頼を何度か投げて、崩れ方まで確かめてから判断するのが確実です。今回の「3回中2回」も、そうして確かめた数字です。

書いた人

野本 健太株式会社Rushout 代表取締役

海上自衛隊、システムエンジニアを経て、2019年に株式会社Rushoutを設立。自社プロダクトの開発と受託開発を手がける。

代表メッセージ