結論から言うと、AIのエラーには「指示の中身」ではなく「指示の渡し方」が原因のものがあります。見分ける手がかりは難しくありません。エラーの文面の中に、自分が書いた言葉がそのまま引用されていないかを見ることです。混じっていたら、言い回しを書き直すより先に、設定と本文の境目を疑ったほうが早く着きます。
先にお伝えしておくと、これはHaruIroAIで昨日実際に起きたことですが、依頼が受け付けられずに止まっただけの出来事です。AIが間違った内容を作ったわけでも、それが公開されたわけでもなく、お客様への影響はありません。社内工程の入口でつまずいた話です。
何をしていたか。下書きの検品を、別のAIへ回そうとした
HaruIroAIでは、文章を公開する前に、書いた側とは別のAIに検品させる工程を挟んでいます(この運用自体は以前の記事に書いたとおり、普段どおりの手順です)。昨日も、社内向けに用意したSNS投稿の下書き4本を、その検品へ回そうとしていました。
ところが、依頼そのものが受け付けられませんでした。検品の内容が悪かったのではありません。依頼を出した瞬間に、道具の側がエラーを返して終わってしまったのです。
なお昨日の記事も同じ検品の工程が舞台でしたが、あちらは答えの受け取り方の失敗で、今回は依頼の渡し方の失敗です。つまずいた場所が逆になります。
断られたのは「AIの名前」だった。その中身が日本語の一文だった
返ってきたエラーは、「指定された名前のAIは、この契約では使えません」という趣旨のものでした。使うAIを名前で指定できる仕組みなので、その名前が間違っている、という意味です。
ここで妙なことに気づきます。記録に残っていた「名前」は、こういう文字列でした。
〈AIの名前〉。違いは「うちのデザイン定義ファイル(DESIGN.md)の渡し方」のみ。
前半はたしかにAIの製品名です(社の方針で伏せています)。しかしそのあとに、句点も含めた日本語の一文がくっついています。これはAIの名前ではありません。渡すはずだった文章の断片です。名前を書く場所に、本文が流れ込んでいました。
どこからどう流れ込んだのかは、実は分かっていません。ログが記録しているのは道具に届いた結果の値だけで、その値がどう組み立てられたかは残らないからです。分かるのは、届いた時点でもう混ざっていた、ということだけです。
なぜ一文まるごとが「名前」になるのか
CSVを取り込むとき、「1-2-3, 〇〇ビル」のようにカンマを含む住所を引用符で囲まずに渡すと、列がずれることがあります。あれと同じことが起きています。人間が思っている区切りと、機械が使っている区切りが、違うのです。
今回の道具の場合、機械にとっての「ここまでが値」の目印は、空白や改行のような、文字が書かれていない場所だけでした。全角の空白も区切りとして扱われます。逆に、句点も、読点も、閉じ括弧も、区切りにはなりません。人間が文の終わりだと思っている印は、ひとつも使われていないわけです。
中の処理を読むと、二段構えになっていました。まず、受け取った文字列を空白のところで区切って、語の並びに分けます。次に、さきほどの「使うAIの名前」のように値をとる指定を見つけたら、そのすぐ次の語をそのまま値として採用します。
日本語には、語と語の間に空白を置く習慣がありません。だから名前を書く場所の直後に日本語の文が来ると、句点を越えて、最初の空白か入力の終わりに行き当たるまでが、ひとつの語として値に入ります。今回の一件目では、それがたまたま一文全体でした。採用された値は40字を超えています。同じ日に起きたもう一件では6字で止まっているので、そちらは直後に空白があったのだと思います(実際に入力された文字列は記録に残っていないため、ここは仕様と観測結果からの推測です)。
その場で直したのに、12分後にまた起きた
一件目は、依頼を作り直したらすぐ通りました。作り直した依頼が動き出したのは、最初の依頼を出してから56秒後です。その場では片付いたように見えました。
片付いていなかったと分かるのは、その依頼が動き出してから約12分後です。次の依頼で、同じ型の失敗が起きました。今度は6字の短い断片でしたが、入っていた場所は同じ、断られ方も同じでした。
手を動かして通すことと、同じ渡し方を繰り返さないようにすることは、別の作業です。今回やったのは前者だけでした。約12分後、別の依頼で同じ型の失敗が起きています。繰り返した理由は記録に残っておらず、そこは断定できません。
「続きから」では直らなかった
もう一つ分かったことがあります。二件目で失敗した直後、同じやり取りを「続きから」再開してみたところ、まったく同じ値で、まったく同じエラーが返りました。記録上も同じやり取りとして扱われています。
続きから再開するというのは、それまでの状態を引き継ぐということです。ただ、記録に残っているのは、同じやり取りとして再開したら同じ値と同じエラーが返った、というところまでで、中で値がどう持ち越されたのかまでは確かめていません。このときも、結局は依頼を新しく作り直しました。「続きから」の再試行を始めてから43秒後に、作り直した依頼が動き出し、こちらは正常に完走しています。
失敗した依頼を「続きから」で押し直すのは、多くの場合いちばん手軽な再試行です。ただ、原因が渡し方にあるときは、それが通らない方法になりえます。今回がそうでした。
手元でできる三つのこと
一つ目は、エラーが出たらまず、エラーの文面の中に自分の書いた言葉が混じっていないかを見ることです。混じっていたら、原因は指示の中身ではなく、渡し方の側にあるかもしれません。言い回しを練り直す前に、どこまでが設定でどこからが本文かを見直してみてください。
二つ目は、設定と本文をひとつの入力欄にまとめないことです。使うAIを選ぶ欄、役割や口調をあらかじめ決めておく欄、そして実際の依頼を書く欄。画面の上で分かれているなら、分かれたまま使います。どうしてもひとまとめにして渡すときは、設定の値と本文の間に、空白か改行を必ず置いてください。引用符でくくれば区切れる、とは限りません。今回の道具では、閉じ引用符のすぐあとに文字が続くと、そのまま同じ値につながる作りでした。日本語で書くときほど、この一手間が効きます。区切ってくれる空白が、文章の中にないからです。
三つ目は、失敗した依頼は「続きから」ではなく作り直すことです。あわせて、その場で何を直したのかを一行だけ書き残しておくと、次に同じ手順を踏んでいないかを自分で確かめられます。
なお、この失敗を機械的に止める仕組みは、まだ入れていません。今のところ手順で気をつけている段階です。
説明書には、最初から書いてあった
この道具の説明書には、設定用の指定を依頼文の中に混ぜてはいけない、という注意がはっきり書かれています。未知の不具合ではなく、道具の側があらかじめ警告していた落とし穴を踏んだ形です。
「どこまでが設定で、どこからが中身か」の区切りを機械が読み違える、というのはAIに限った話でもありません。表計算の関数に渡す引数、検索窓に入れた記号、CSVの取り込み。どれも同じ形で人を転ばせてきました。AIが日本語をよく理解するようになった分だけ、こういう機械的な境界のことは意識から外れやすくなっているのかもしれません。
冒頭で触れた昨日の出来事と合わせると、同じ工程の別々の継ぎ目で、二日続けてつまずいたことになります。AIとの仕事で転ぶのは、AIの賢さが足りないところではなく、こういう受け渡しの継ぎ目なのだと思います。
これはHaruIroAIで起きた実例が二件あるだけの話で、AIツールが必ずこうなるという話ではありません。ただ、原因の見当がつかないエラーに出会ったときの最初の一手として、エラー文の中に自分の言葉を探してみる価値はあるはずです。
この記事の作り方
この記事は、構成・一次記録の照合・文章化にAIを使用し、HaruIroAIの編集ルールと社内の一次記録に基づいて作成しています。実行環境やAI製品の名称、依頼番号の実際の値は、本題と無関係なため記載していません。内容は公開前に人が最終確認しています。