関数呼び出しとは何ですか?LLMツールスキーマの解説

関数呼び出しとは何か

Scrapeless MCPサーバーは、エージェントホストがモデルに関数呼び出しインターフェースを通じて提示できるWebおよびブラウザの機能を公開します。

要約

  • 関数呼び出しは構造化されたモデル出力です。 モデルは引数を持つ名前付きツールを要求します。アプリケーションコードがそれを検証し、実行します。
  • モデルは関数を実行しません。 資格情報、ネットワークアクセス、副作用、結果の処理はホストアプリケーションに残ります。
  • スキーマは信頼性を形作ります。 明確な名前、説明、必須フィールド、列挙型、および制約値はあいまいな呼び出しを減らします。
  • 検証は依然として必要です。 スキーマに適合した引数は、認可されていない、不安全な、古くなった、現在の状態に対して間違っている可能性があります。
  • ツールの結果は会話を続けます。 アプリケーションは関数の結果を返し、モデルが応答するか、別の許可されたステップを選択できるようにします。

なぜこのトピックが重要か

関数呼び出しは、アプリケーションがツールを言語モデルに説明し、そのうちの1つを使用するための構造化された要求を受け取ることを可能にするパターンです。 OpenAIの関数呼び出しドキュメント ツール定義がスキーマを使用し、アプリケーションが選択された関数を実行することを説明しています。モデルは提案を生成しますが、サーバー、データベース、ブラウザ、または資格情報への直接アクセスを得ることはありません。

この分離は、言語モデルをソフトウェアの内部で有用にします。自然言語の意図は、型付き操作にマッピングでき、既存のアプリケーションコードは認証とビジネスルールを維持します。関数呼び出しは、読み取り専用の検索、計算、レコードの検索、ブラウザ操作、またはトランザクションを支えることができます。必要なリスクと検証は、副作用に依存し、JSONの見た目のきれいさには依存しません。

関数呼び出しライフサイクル

ホストはモデルにユーザーリクエストと利用可能なツール定義のセットを送信します。各定義には名前、説明、入力スキーマがあります。モデルは直接応答するか、構造化された引数を持つツール呼び出しを返すことがあります。ホストはその呼び出しを解析し、チェックし、対応するコードを実行し、正しい呼び出しのIDで結果を返します。

モデルはその結果を使用して最終的な答えを生成するか、別のツールを要求できます。複数ステップのツール使用はエージェントループを作成しますが、関数呼び出し自体はモデルとホストの間のインターフェースに過ぎません。計画、メモリ、認証、スケジューリング、エラーポリシーは別々のアプリケーションの懸念事項です。

よく設計されたツールは、1つの意味のある能力を表します。`do_anything`のようなあいまいなツールは権限を隠し、モデルに多くの引数の組み合わせを与えすぎます。狭い検索機能、顧客検索、またはブラウザナビゲーション操作は、説明、検証、観察、および独立して付与しやすいです。

良いツール定義の要件

  • 明確な名前。 動詞と目的語を使用して、その機能を近くのツールから区別します。
  • 決定に焦点を当てた説明。 ツールを使用すべき時期、返すもの、重要な除外を説明します。
  • 制約スキーマ。 必要なフィールドを要求し、列挙型、フォーマット、境界、ネストされたオブジェクトを意図的に使用します。
  • 型付き結果。 安定したフィールド、ソース証拠、アクションのステータス、機械可読エラーを返します。
  • 明示的な副作用。 読み取り、書き込み、送信、削除、提出、および購入の動作をホストとモデルに明示的に示します。

関数呼び出し、API、およびMCP

これらの概念は異なるレイヤーで動作し、しばしば競合するのではなく一緒に機能します。

概念役割重要な境界
関数呼び出しモデルが型付き操作を要求するホストが実行の方法と実行の可否を選択する
APIソフトウェアサービスが操作を公開する認証とビジネスルールはサービス内に存在する
MCPサーバーが互換性のあるホストにツールとデータを宣伝するホストが発見された機能のどれがモデルに届くかを決定する
エージェント目標、状態、ツール、および評価を調整する自律性はポリシーと停止ルールによって制約される
コンピュータの使用グラフィカルインターフェースを操作するアクションには現在の視覚的または意味的状態が必要

安全な関数呼び出しループを実装する

すべてのツール呼び出しをモデルによって提案された信頼できない入力として扱う。他のクライアントから期待されるのと同じ承認と検証を適用する。

  1. 能力の在庫。 リソース、副作用、および権限によって操作を分割し、各ツールに理解可能な契約を持たせる。
  2. 実際の関数からスキーマを設計する。 モデルが考慮できないパラメータを発明するのではなく、実際に必要な入力と出力フィールドを一致させる。
  3. コンテキストと権限を検証する。 実行前にアイデンティティ、リソースの所有権、現在の状態、許可された値、予算、および承認を確認する。
  4. 正確な結果を返す。 秘密や内部スタックトレースを露出することなく、安定した識別子、証拠、構造化されたエラーカテゴリを含める。
  5. 全体の交換を記録する。 ツール定義のバージョン、要求された引数、検証結果、実行結果、およびモデルが表示できる応答を記録する。

ツール使用を評価する

ツール呼び出しの評価は選択、引数形成、実行、および最終回答の使用を区別する必要がある。

  • 選択の精度。 モデルは正しいツールを選択したか、ツールの使用を正しく避けたか?
  • 引数の有効性。 呼び出しはスキーマとタスク特有の意味的制約を満たしているか?
  • 承認の動作。 ホストは不許可のリソースをブロックし、適切な境界で承認を必要としたか?
  • 結果の使用。 モデルは返されたフィールドと証拠を解釈し、サポートされていない主張を追加しなかったか?
  • ループ制御。 複数ステップの使用は、完了、非進行、または予算の枯渇で終了したか?

関数呼び出しリスク

構造化出力は解析を改善しますが、それ自体がモデルの判断を信頼できるものにしない。 NIST AIリスク管理フレームワーク はガバナンスフレームを提供し、 HTTPセマンティクス仕様 はネットワーク応答がホストが解釈しなければならない正確なセマンティクスを持つことを実装者に思い出させる。セキュリティはアプリケーションの責任のままである。

  • 過度に広いツール。 大規模な能力は最小特権の承認と意味のある評価を困難にする。
  • 意味的無効性。 引数はJSONスキーマを通過できるが、間違ったアカウント、古いレコード、または禁止されたターゲットを指すことがある。
  • ツール結果を介したインジェクション。 外部コンテンツは指示を含む可能性がある。データとして返し、システムポリシーの優先順位を保持する。
  • 秘密の漏洩。 ツールの定義と結果は、資格情報、プライベートルーティング、または不必要な個人データを公開しないべきである。
  • 重複効果。 ホストは、意図しない書き込みを生成しないように、操作の同一性と現在の状態チェックを使用するべきです。

関数呼び出しのユースケース

現在の情報

モデルに検索または取得を要求させ、ソースを持つ結果を受け取らせます。

ビジネス検索

ユーザーの質問を承認されたサービスに対する検証済みのクエリに変換します。

ウェブ操作

ブラウザアクションを、セッションとドメインポリシーを持つ狭い機能として公開します。

ワークフロー支援

構造化された書き込み操作を準備し、コミットメントの前にアプリケーションまたは人間の承認を要求します。

パイロットから生産へ

関数呼び出しのための有用なパイロットは、レコードを記録ごとに検査できる小ささであるべきです。次のように始めます: インベントリ機能リソース、 副作用、 および許可別に操作を分割し、各ツールが理解しやすい契約を持つようにします。そして、 実際の関数から設計スキーマを適用します:モデルが尊重できないモデルフレンドリーパラメータを発明するのではなく、実際に必要な入力と出力フィールドを一致させます。最初の評価セットは意図的に混合されており、普通のケース、あいまいなケース、証拠の欠如、およびシステムが拒否したり引き渡したりしなければならないアクションを含めます。これは、ワークフローが高いボリュームの後に設計のミスを隠す前に、その境界を理解しているかどうかを明らかにします。

生産の準備には、すべての測定基準とアーティファクトに対する所有者が必要です。トラック 選択の精度 モデルが正しいツールを選んだか、ツールの使用を正しく避けたかを回答しますか?トラック 引数の妥当性 呼び出しがスキーマとタスク固有の意味的制約を満たしたかどうかを判断するには? 認可の振る舞いを追加します チームがホストが許可されていないリソースをブロックしたかどうか、適切な境界で承認を要求したかどうかを確認できるように。これらの測定は、ダッシュボードの合計としてのみ存在するのではなく、基盤となる記録にリンクする必要があります。レビュアーは、変更されたメトリックから、正確なクエリ、ソース、観察、またはそれを生み出したアクションに移動する必要があります。

運用管理は、ビジネス上の決定を変更する可能性が最も高い失敗モードをターゲットにするべきです。最初のレビュー規則は、次のことをカバーするべきです: 幅広いツール:大きな機能は、最小権限の承認と意味のある評価を困難にします。退出レビューは、次のことをカバーするべきです: 重複副作用:ホストは、意図しない書き込みを生成しないように、操作の同一性と現在の状態チェックを使用するべきです。応答の所有者を割り当て、問題を解決する証拠の定義を行い、結果がデータ、プロンプト、ツール、許可、またはソースポリシーを変更するかどうかを記録します。その記録は、同じ欠陥が説明のない品質の変動として再発見されることを防ぎます。

パイロットが予測可能に動作するまで拡張を行わないでください。チームは、モデルに検索または取得を要求させ、ソースを持つ結果を受け取らせるという仕事がある現在の情報から始めることができます。第2段階ではビジネス検索を追加でき、ワークフローはユーザーの質問を承認されたサービスに対する検証済みのクエリに変換しなければなりません。スコープが拡大するにつれて、元のテストセットを運用し続けます。新しいソース、市場、ツール、許可は、回帰を特定の変更に割り当てられるようにするために、一度に1つの境界で導入されるべきです。

結論

関数呼び出しは、言語モデルにソフトウェア機能を要求する型付きの方法を提供します。その信頼性は、周囲のホストから来ています:正確なスキーマ、意味的検証、最小権限、決定論的承認、安定した結果、完全なトレース。モデルが選択し、アプリケーションは責任のままです。

読み取り専用ツールと短い機能セットから始めます。副作用を追加する前に、実際のタスクに基づいて選択肢や引数を評価します。このシーケンスは、自然言語の柔軟性を制御されたソフトウェアの動作に変えます。

エージェントホストにウェブツールを公開する準備はできていますか?

Scrapeless MCP ServerとAgent Browserを使用して、構造化されたツールインターフェースを通じて制約されたウェブ機能を利用可能にします。

今日申し込んで、 $5の無料クレジットを獲得するクレジットカードは不要.

$5クレジットを取得する →

FAQ

関数呼び出しは、LLM内でコードを実行しますか?

いいえ。モデルは構造化されたツールリクエストを出力します。ホストアプリケーションがそれを検証し、それ自身のコードまたはサービス呼び出しを実行し、結果をモデルに返します。

関数呼び出しはAPIと同じですか?

いいえ。APIはソフトウェア操作を公開します。関数呼び出しは操作を要求するためのモデル向けパターンです。アプリケーションコードはしばしば関数呼び出しを1つまたは複数のAPIにマッピングします。

MCPは関数呼び出しと同じですか?

いいえ。MCPはホストが機能サーバーに接続し、ツールやリソースを発見する方法を標準化します。ホストは、関数呼び出しインターフェースを通じてモデルに選択したMCPツールを提示することができます。

JSON Schemaはツール呼び出しを安全にしますか?

いいえ。スキーマ検証は構造といくつかの値の制約をチェックします。ホストは依然としてアイデンティティ、所有権、承認、ビジネスルール、現在の状態、副作用の承認を確認する必要があります。

モデルが受け取るべき関数の数はいくつですか?

タスクに関連する最小のセットを使用します。重複するツールが多すぎると、選択のあいまいさが増し、許可について考えるのが難しくなります。ツールのルーティングは、モデル選択の前に大きなカタログを狭めることができます。

参考文献