CambioはAIスワップ製品です。同時に、AIは意図的に短い手綱でつながれています。この記事は、AIが何に責任を負い、何に触れることを許されず、その両方のリストのすべての項目の背後にある論拠は何かを明示したリストです。
このシリーズの起点となる記事では、Cambioにおける「AIスワップ」が何を意味するかを大まかに定義しました。パーサー兼説明役であり、すべての決定は決定論的なコードが下す、というものです。この記事はその明示的なリストです。AIは実際に何に責任を負うのか。何に触れることを許されないのか。なぜその特定の境界なのか。このシリーズ全体から1つだけ覚えておくとしたら、以下の枠組みこそが覚えておくべきものです。
「行うこと」のリスト
CambioのAIが責任を負う仕事は4つあります。いずれも会話に関わるものです。いずれも境界が定められています。
1. 自然言語のインテントを構造化フィールドに解析する
「swap 0.3 BNB to USDT on BSC」とコンポーザーに入力すると、AIはその文字列を構造化リクエストに変換するパーサースタックの一部となります。category=Swap、from=BNB、fromNetwork=BSC、to=USDT、toNetwork=BSC、amount=0.3。ほとんどの解析はAIが呼び出されることなく正規表現の層で成功します。AIが扱うのは、メッセージの言い回しが変わっている、タイプミスを含む、自然言語と略記が混在している、あるいはどのフィールドが欠けているのかが曖昧なケースです。
2. フィールドが欠けているときに確認の質問をする
メッセージが「swap 100 USDT to BTC」と解析され、USDTのネットワークが指定されていない場合、それはTron、Ethereum、BSC、Solanaのいずれかであり得ますが、AIはフォローアップの質問を生成します。AIは黙ってネットワークを選びません。最も人気のあるものを想定しません。平易な言葉で、会話スレッドの中で尋ねます。
3. クオートが届いたときにナレーションする
見積もりが返ってくると、AIはそれを言葉で短く説明します。説明は構造化された見積もりオブジェクトの事実に限定され、数値を繰り返すことはありません。すべての数値は見積もりカードが担います。誇張したり、受け入れるべきかどうか意見を述べたり、比較を作り出したりはしません。
4. Helpカテゴリーに定型の回答を返す
ユーザーがHelpカテゴリーの質問——「ネットワーク手数料はどのように表示されますか?」「このペアの上限・下限はいくらですか?」「スワップにはどれくらい時間がかかりますか?」——をすると、AIは厳選されたリストから事前に書かれた回答を表示します。回答は静的です。ユーザー、言い回し、時間帯、あるいはその時々の私たちの気分によって変わることはありません。AIは質問を適切な回答に対応付けるだけで、回答を生成するわけではありません。
「やらない」ことのリスト
これらは、たとえもっともらしく試みることができたとしても、AIに実行を許可していないことです。それぞれが明確な理由に基づく意図的な選択です。
1. ルートを選ぶ
見積もりの経路は決定論的です。ペアが対応しているかを確認し、選択された実行ルートにあなたの正確な金額で見積もりを依頼し、明記されたネットワーク手数料と日付付きの参考値を添えて、見積もりを返します。どのステップも、同じ入力に対して毎回同じように動くコードです。AIには見積もりオブジェクトが構造化された入力として渡されるだけで、見積もりの内容に影響を与えることはできません。
2. 鍵を保持する、またはトランザクションに署名する
AIには資金に至る経路がありません。あなたはご注文に表示された入金アドレスにコインを送り、選択された実行ルートが支払います。AIには署名を要求したり資金を動かしたりするAPIがなく、鍵にもアクセスできません。注文の作成と支払いは決定論的なコードと実行ルートが処理し、モデルが扱うことはありません。
3. 価格を取得する
価格は、選択された実行ルートがあなたの正確な金額に対して出す見積もりに基づきます。AIはそのサービスを呼び出しません。市場データを解釈することもありません。価格の行方を予測することもありません。コンポーザーで「明日BTCはどうなる?」と聞くと、Helpカテゴリが価格予測は行わないことを伝える定型の回答を返し、外部の情報源を案内します。
4. ポリシーを設定する
Cambioの価格(ほとんどのルートで0.38%)、利用できるルートのリスト、各ルートの最小額と最大額、そしてスクリーニングのルール——これらはすべて決定論的なコードの中にあります。AIがそれらを参照したり、上書きしたり、解釈したりすることはありません。リクエストがその範囲外の場合(たとえばルートの最大額を超える金額)、AIが目にする前にコードが拒否します。
5. 安全に関する判断を下す
入金が期限内に届かなかった場合、注文は決定論的なルールに従って期限切れになります。支払いを完了できない場合、そのケースはモデルではなくコードと人が対応します。どの実行ルートもペアを見積もらない場合、リクエストは拒否されます。AIはこれらの結果を知らされますが(説明役がわかりやすい言葉で説明できるように)、その根本にある判断はどれも行いません。
なぜこの特定の境界線なのか
理由は3つです。CambioでこれまでにAIの範囲を絞り込んできたときと、毎回同じ3つの理由です。
検証可能性
Cambioの見積もりを確認したいユーザーは、api.cambio.one の公開APIを同じペアと金額で呼び出し、同じコードで計算された見積もりを、AIを介さずに取得できます。公開APIは言語モデルを呼び出しません。もしAIが意思決定の経路にあったら、この確認は不可能です。言語モデルは同じ入力に対しても再現性のない出力を生成するからです。
信頼性
言語モデルはダウンします。フロンティアモデルも時に長時間の障害を起こします——プロバイダーのインシデント、キャパシティの問題、地域的なレート制限、モデルバージョンの廃止などです。もしルーターがルート選定をAIに依存していたら、モデルの障害はすべてCambioの障害になってしまいます。AIを会話の表層に隔離することで、私たちは緩やかに機能低下できます。モデルサービスが遅いときは、コンポーザーはキーワード解析と確定的なテンプレートによるナレーションにフォールバックします。取引はそのまま成立します。モデルプロバイダーのインシデントの最中にCambioを使っているユーザーは、コンポーザーの応答スタイルを注意深く見ない限り、それに気づくことすらないでしょう。
説明責任
取引で通常とは異なる結果が生じたとき——ユーザーが期待とは違う金額を受け取った、サポートされていると思っていたペアが拒否された、スワップが見積もりより長くかかった——私たちはユーザーの「なぜ」という問いに答えられる必要があります。確定的なコードなら、「なぜ」には常に答えられます。このルールが発火した、これがコードパスだ、これがレシートだ、と。意思決定の経路にAIがいると、「なぜ」は「モデルがそう言ったから」になってしまい、それは取引でお金や時間を失ったユーザーに対する受け入れ可能な答えではありません。
グレーゾーンのケース
AIにもっと大きな範囲を与えることも十分あり得たのに、あえてそうしなかったケースについては、明確に述べておく価値があります。
金額が曖昧なとき——たとえばユーザーが「少しのBNBをUSDTにスワップして」と入力したとき——私たちはAIに「少し」を推測させません。AIは金額を尋ねます。ユーザーの直近の典型的なスワップのごく一部をデフォルトにすることも検討しましたが、資金に関して意図を推測することは、まさに事故を生むタイプのもっともらしいAIの「気配り」なのです。
ペアが未対応のとき — たとえばどの実行ルートも対応していないペアをユーザーが求めたとき — AIに「近い」代替ペアを提案させることはありません。決定論的な「未対応」メッセージを返し、選択はユーザーに委ねます。「代わりにBNBはどうですか?」と言いたくなるところですが、それは確認から推奨へと踏み込むことになり、金融商品での推奨は私たちが踏むつもりのない規制上の地雷です。
見積もりのスプレッドが異常に広く見える場合——たとえば流動性の薄いペアで——AIが説明を和らげたり、独自の理由を付け加えたりすることはありません。「このレートは通常より広くなっています。理由は…」という文言は、その文言そのものが事前に書かれ、レビューされ、定型の説明として承認されていない限り、AIに付け加えさせません。
これが実際にどう見えるか
具体例で見てみましょう。ユーザーがコンポーザーに「Ethereum上で100 USDTを0.0001 BTCにスワップ」と入力します。現在の市場レートでは、100 USDTは約0.0014 BTCの価値があります——つまりユーザーは公正価値の10分の1を受け取ろうとしているのです。
パーサーは成功します。category=Swap、from=USDT、fromNetwork=Ethereum、to=BTC、toNetwork=Bitcoin、amountOut=0.0001、direction=amount-out。ポリシーコードが実行されます。Executeパスは、この受取金額に必要な暗黙のfrom金額を計算し、それは約7 USDT——このペアが要求する$1の最低額を大きく下回ります。ポリシーは明確なエラーを返します。「このペアの最低額を下回っています(Ethereum上のUSDTからBTCへは$20の最低額があり、あなたのリクエストは約$7です)。」AIにはこのエラーが渡され、こう伝えます。「その受取金額はペアの$20の最低額を下回っています。もっと大きな受取金額か、別のペアを試していただけますか?」
AIがやらなかったこと。最低額をクリアするために金額をこっそり切り上げなかった、ユーザーが0.001 BTCを意図したと決めつけなかった、レートが市場からずれて見えるとユーザーに警告しなかった。ポリシーコードが確定的な答えを返し、AIはそれを一文に翻訳しました。ユーザーは何が起きたかを正確に把握できます。
私たちがAIの範囲を広げる場面(と、抵抗する場面)
今後を見据えると、上記のルールに違反する領域に踏み込むことなく、AIの能力を追加することでプロダクトが良くなる場面があります。
曖昧なクエリのより高度な解析——たとえば「convert」や「exchange」を「swap」の同義語として認識すること、英語以外の言い回しをサポートすること、スラング(「BNBをステーブルにdumpして」)を解析することなど。これらはすべて依然として解析です。ユーザー入力を構造化されたフィールドに翻訳します。ルーターの判断は確定的なままです。
多言語サポート——同じパーサーと説明役をスペイン語、ロシア語、中国語で動かすこと。ルーターはユーザーがどの言語で入力したかを気にしません。気にするのはコンポーザーです。これは私たちのロードマップにあります。
誘惑が強まっても私たちがAIの範囲を広げない場面。ルート選定、価格予測、ポリシー判断、安全に関する判断。これらの境界線は恒久的なものです。AIがそれらのいずれかを決定しているように見えるものに関する将来の投稿は、私たちがローンチ時に設定した信頼のフロンティアへの裏切りとなるでしょう。
なぜこの規律が重要なのか
AIは動く標的です。モデルは数か月ごとに良くなります。スワップの文脈でAIが十分うまくこなせそうなことの範囲は、継続的に広がっていきます。技術的に可能なことに追いつくためにAIの範囲を広げようとする圧力は、絶え間なく続くでしょう。
私たちは、ユーザーの資金、ユーザーの安全、あるいは運用上のポリシーに触れるシステムの部分については、その圧力に屈しません。AIは上記のリストにあることを行います。それ以外のすべては確定的です。それが約束です。私たちは意思決定をひそかにモデルへ移行させ、後からそれを発表してユーザーを驚かせることはしません。
このシリーズの次の投稿では、モデル選定の判断——なぜ解析とナレーションの仕事にGPT-5やClaudeではなくGemini 2.5 Flash Liteを選んだのか、そしてその選択を見直すには何が変わる必要があるのか——について具体的に掘り下げます。



