> For the complete documentation index, see [llms.txt](https://docs.maiagent.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.maiagent.ai/tech/ja/advanced-genai-tech/function-calling.md).

# Function Calling

Function Calling（ツール呼び出し）の概念と、MaiAgent の Agent がツール定義を取得する方法、プラットフォームがツールを実行して結果をモデルに返す仕組み、および反復回数、タイムアウト、結果の長さなどの制限について説明します。

## Function Calling とは？

Function Calling（関数呼び出し、またはツール呼び出し）とは、大規模言語モデル（LLM）がリクエストを処理する際に、外部プログラムや API（以下、まとめて「ツール」と呼びます）が必要だと判断し、呼び出すツールの名前と引数を構造化された形式（通常は JSON）で出力することです。

LLM 自体はツールを実行せず、どのツールをどの引数で呼び出すかを「決定」するだけです。実際の実行は呼び出し元のプログラムが行い、結果を LLM に返します。LLM はその結果に基づいて回答するか、次のツールを呼び出すかを決定します。

<figure><img src="https://605688223-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVYMUz6J7vDZ0QTvb1rbN%2Fuploads%2Fgit-blob-174638479c334f8fa77665a8f7c7d488a7e620d3%2Ffc2.png?alt=media" alt="LLM が必要に応じて検索、天気 API、翻訳 API などのツールを選択します"><figcaption><p>LLM がユーザーの要望に応じて呼び出すツールを選択します（概念図）</p></figcaption></figure>

## Function Calling の仕組み

一般的に、Function Calling は次のサイクルで動作します。

1. **ツール定義の提供**：呼び出し元が各ツールの名前、用途の説明、パラメーター構造（JSON Schema）を、会話とともに LLM に送信します。
2. **モデルによる呼び出しの決定**：LLM がツールを必要と判断すると、直接回答する代わりにツール名と JSON 形式の引数を出力します。
3. **ツールの実行**：呼び出し元が名前と引数に従って対応するプログラムを実行します。例えば、データベースの照会や外部 API の呼び出しです。
4. **結果の返却**：呼び出し元が実行結果を会話に追加し、LLM に返します。
5. **回答または継続**：LLM は結果に基づいて回答を生成するか、追加の情報が必要だと判断して再びツールを呼び出します。

モデルがツールを呼び出すかどうか、またどの引数を指定するかは、主にツールの用途とパラメーターの説明が明確かどうかに左右されます。

### 主な用途 <a href="#common-uses" id="common-uses"></a>

| 用途                | 例                                                                                |
| ----------------- | -------------------------------------------------------------------------------- |
| リアルタイム情報や社内データの取得 | 注文状況、在庫、為替レート、社内システムの記録の確認                                                       |
| 操作の実行             | チケットの作成、予約、通知の送信                                                                 |
| 複数ステップのタスク        | 顧客情報を調べ、その結果に基づいて契約を照会し、最後に回答をまとめます                                              |
| 自然言語から構造化クエリへの変換  | Text to SQL。[Text to SQL](/tech/ja/advanced-genai-tech/text-to-sql.md) を参照してください |

***

## MaiAgent での動作 <a href="#how-it-works-in-maiagent" id="how-it-works-in-maiagent"></a>

### 有効化の条件 <a href="#prerequisites" id="prerequisites"></a>

* Agent の <mark style="color:blue;">回答モード</mark> は <mark style="color:blue;">Agent モード</mark> である必要があります。<mark style="color:blue;">RAG Q\&A</mark> など、ほかの回答モードではツールを呼び出しません。
* 管理画面では、ツール呼び出しに対応するモデルにのみ Agent モードが提供されます。組織のプランによって、利用可能な回答モードが制限される場合もあります。

### モデルが呼び出せるツール <a href="#tool-sources" id="tool-sources"></a>

| 提供元           | 説明                                                                  | 仕様                                                                                                               |
| ------------- | ------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| API ツール       | 1 つのツールが 1 つの HTTP エンドポイントとメソッドに対応し、プラットフォームが代わりにリクエストを送信します        | [API ツールエンジニアリングガイド](/tech/ja/api-integration/api-tool-engineering-guide.md)                                     |
| MCP ツール       | 1 つのツールが 1 つの MCP サーバーに対応し、そのサーバー上の「許可されたツール」がすべてモデルから呼び出せるツールになります | [セルフホスト MCP Server 接続仕様](/tech/ja/mcp/self-hosted-mcp-server.md)、[Remote MCP サービス概要](/tech/ja/mcp/remote-mcp.md) |
| プラットフォーム内蔵ツール | ナレッジベース検索、Code Interpreter、Browser Tool などです。Agent の設定に応じて有効になります   | ユーザーマニュアルを参照してください                                                                                               |
| スキル           | スキルを紐付けると、モデルが `skill_expand_tool` を使ってスキルの指示と追加ツールを展開します           | [Skill スキルモジュール](/tech/ja/advanced-genai-tech/skill.md)                                                          |

Agent は自身に紐付けられたツールのみを呼び出せます。管理画面でツールを作成する際に選択できる種類は、API ツールと MCP ツールです。

### ツール定義をモデルに渡す方法 <a href="#tool-definition" id="tool-definition"></a>

* **名前**：ツール名は英数字とアンダースコアに正規化され、最大 64 文字です。規則は [API ツールエンジニアリングガイド：ツール定義の対応関係](/tech/ja/api-integration/api-tool-engineering-guide.md#tool-definition) を参照してください。
* **用途の説明**：API ツールでは「<mark style="color:blue;">プロンプト</mark>」に値があればそれを使い、なければ「<mark style="color:blue;">説明</mark>」を使います。MCP ツールでは、サーバーの `tools/list` が返す `description` を使います。
* **パラメーター構造**：API ツールでは「<mark style="color:blue;">パラメーター構造 (JSON Schema)</mark>」、MCP ツールではサーバーが返す `inputSchema` を使います。
* **ツール検索**：Agent の「<mark style="color:blue;">ツール検索機能を有効化</mark>」（デフォルトで有効）がオンの場合、大部分のツールの完全な定義は最初からモデルに渡されません。モデルはまず `tool_searching_tool` の説明で利用可能なツール名を確認し、呼び出す際に名前で検索して定義を読み込みます。紐付けられたツールが多い場合、モデルに毎回送信するツール定義を減らせます。

### 実行と結果の返却 <a href="#execution" id="execution"></a>

```mermaid
sequenceDiagram
    participant U as ユーザー
    participant A as Agent（LLM）
    participant P as MaiAgent プラットフォーム
    participant T as ツール（API／MCP サーバー／内蔵機能）

    U->>A: 質問
    A->>P: ツール呼び出し（名前＋JSON 引数）
    P->>P: パラメーター構造に基づく引数の検証、Credits の確認
    P->>T: ツールの実行
    T-->>P: 結果
    P->>P: 長すぎる結果の切り詰め、ツール実行記録の保存
    P-->>A: ツールの結果
    A-->>U: 回答（または再びツールを呼び出します）
```

* **引数の検証**：モデルが指定した引数は、パラメーター構造に基づいて検証されます。引数が不適切な場合やツールの実行中にエラーが発生した場合、エラー内容がツールの結果としてモデルに返されます。モデルは引数を修正して再試行するか、ユーザーに説明するため、回答全体は中断されません。
* **複数のツール**：モデルが同じステップで複数のツールを要求すると、プラットフォームは同時に実行します。
* **結果の長さ**：ツールの結果がモデルのコンテキストウィンドウの一定割合（プラットフォームのデフォルトは 0.8）を超えると、先頭と末尾を残して中間を省略します。Agent では「<mark style="color:blue;">ツール結果の切り詰め</mark>」も有効にでき、文字数の上限（デフォルトは 8000）で大きすぎる結果を切り詰めます。
* **繰り返し呼び出し**：同じ回答内で、まったく同じ引数で同じツールを再び呼び出し、結果も同じだった場合、プラットフォームは同じ結果を返しません。代わりに、再試行しても異なるデータは得られない旨をモデルに伝えます。
* **実行記録**：呼び出しごとに、入力引数、出力またはエラー、ステータス、所要時間を含むツール実行記録が保存されます。
* **Credits**：API ツール、MCP ツール、および一部の内蔵ツールでは、呼び出しごとに Credits が消費されます。残高が不足している場合、その呼び出しは送信されず、モデルに残高不足の説明が返されます。

### 実行上限 <a href="#limits" id="limits"></a>

| 設定                                           | 範囲とデフォルト                                          | 上限に達した場合                                  |
| -------------------------------------------- | ------------------------------------------------- | ----------------------------------------- |
| <mark style="color:blue;">最大反復回数</mark>      | 1–100、デフォルトは 20 です。ツール呼び出しのラウンド数を数えます。ツール検索は含みません | Agent がツール呼び出しを停止し、まとめの回答を生成します           |
| <mark style="color:blue;">実行タイムアウト（秒）</mark> | 30–1200、デフォルトは 600 です                             | ワークフローが終了し、タイムアウトメッセージが表示されます（カスタマイズ可能です） |

先に達した上限が適用されます。反復回数を増やす際は、タイムアウト時間も増やしてください。そうしないと、先にタイムアウトしやすくなります。

***

## 制限と注意事項 <a href="#limitations" id="limitations"></a>

* **モデルがツールを呼び出さない、または誤ったツールを呼び出す場合があります**：プラットフォームは、モデルが適切なタイミングで適切なツールを呼び出すことを保証しません。モデルがツールを呼び出さなければ、ツール実行記録は作成されません。この場合、調整すべきものはツール自体ではなく、ツールとパラメーターの説明です。
* **ツールの説明が品質を左右します**：各パラメーターに説明と形式の例を記載し、ツールの説明には用途、使用するタイミング、返却内容を明確に記載してください。
* **書き込み操作は再送に対応できる必要があります**：API ツールはタイムアウトや一部のエラーで自動再試行し、モデルも繰り返し呼び出す場合があります。注文やチケット作成などの書き込み操作では、ツール側で冪等性を確保してください。詳細は [API ツールエンジニアリングガイド：タイムアウト、再試行、TLS](/tech/ja/api-integration/api-tool-engineering-guide.md#timeout-retry-tls) を参照してください。
* **キーをパラメーター構造に含めないでください**：モデルはパラメーター構造と引数の値を参照できます。キーはツールのヘッダーや Query パラメーターに設定するか、連絡先の認証情報を使用してください。
* **一般的に、ツール呼び出し能力はモデルによって異なります**：同じツールでもモデルを変更すると、呼び出すタイミングや引数の品質が変わる場合があります。モデルを変更したら再度テストしてください。

***

## 操作方法はユーザーマニュアルを参照してください <a href="#user-guide-links" id="user-guide-links"></a>

* [ツール機能の概要](https://docs.maiagent.ai/build/tools/tool_description)
* [API ツールの作成](https://docs.maiagent.ai/build/tools/setup_api_tool)
* [MCP ツールの作成](https://docs.maiagent.ai/build/tools/mcp-setup)
* [Agent へのツール設定](https://docs.maiagent.ai/build/tools/configure_tools)
* [回答の長さと Agent の実行上限](https://docs.maiagent.ai/build/agent/custom-max-tokens)
* [ツール実行記録](https://docs.maiagent.ai/build/agent-ops/tool-execution-records)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.maiagent.ai/tech/ja/advanced-genai-tech/function-calling.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
