--- title: "RAG Reasoning" slug: "clovastudio-ragreasoning" updated: 2026-10-08T07:24:13Z published: 2026-10-08T07:24:13Z canonical: "api.ncloud-docs.com/clovastudio-ragreasoning" --- > ## Documentation Index > Fetch the complete documentation index at: https://api.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # RAG Reasoning Classic/VPC環境で利用できます。 信頼性を高める引用の出典、引用の出典のインデックス表記などの回答タイプに合わせて学習した RAG Reasoningモデルを活用し、根拠に基づいた RAG回答を生成します。RAG Reasoningは Function calling形式でエンジンを呼び出します。単一または複数の RAG関数を指定することができ、LLMが状況に合わせて自動で最適な関数を選択して検索拡張生成を行うことができます。[リランカー](/docs/ja/clovastudio-reranker)と連携して使用するとより安定した結果値を得ることができます。 ## リクエスト リクエスト形式を説明します。リクエスト形式は次の通りです。 | メソッド | URI | | --- | --- | | POST | /v1/api-tools/rag-reasoning | ### リクエストヘッダ CLOVA Studio APIで共通して使用されるヘッダの詳細は、[CLOVA Studioのリクエストヘッダ](/docs/ja/ai-naver-clovastudio-summary#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%94)をご参照ください。 ### リクエストボディ リクエストボディの説明は次の通りです。 | フィールド | タイプ | 必須の有無 | 説明 | | --- | --- | --- | --- | | `messages` | Array | Required | 会話メッセージ: [messages](/docs/ja/clovastudio-ragreasoning#messages) | | `topP` | Double | Optional | 生成トークン候補群を累積確率に基づいてサンプリング - 0.00 < `topP` ≤ 1.00 (デフォルト: 0.8) | | `topK` | Integer | Optional | 生成トークン候補群から確率の高いトークン K個を候補に指定してサンプリング - 0 ≤ `topK` ≤ 128 (デフォルト: 0) | | `maxTokens` | Integer | Optional | 最大トークン生成数 - 1024 ≤ `maxTokens` < 4096 (デフォルト: 1024) | | `temperature` | Double | Optional | 生成トークンに対する多様性の程度(設定値が高いほど多様な文章を生成) - 0.00 < `temperature` ≤ 1.00 (デフォルト: 0.50) | | `repetitionPenalty` | Double | Optional | 同じトークンを生成することに対するペナルティの程度(設定値が高いほど同じ結果値を繰り返し生成する確率は下がる) - 0.0 < `repetitionPenalty` ≤ 2.0 (デフォルト: 1.1) | | `stop` | Array | Optional | トークン生成停止文字 - [](デフォルト) | | `seed` | Integer | Optional | モデルの繰り返し実行時、結果値の一貫性レベルを調整 - 0: 一貫性レベルをランダム適用 (デフォルト) - 1 ≤ `seed` ≤ 4294967295: 一貫した結果を生成するための`seed`またはユーザーが指定する`seed`値 | | `includeAiFilters` | Boolean | Optional | AIフィルタ(生成された結果値に対する罵倒、蔑み/差別/嫌悪、セクハラ/わいせつなどカテゴリ別に当てはまる程度)結果を表示するか - `true`(デフォルト) \| `false` - `true`: 表示 - `false`: 表示しない | | `tools` | Array | Required | `Function calling`の使用可能なツールリスト: [tools](/docs/ja/clovastudio-ragreasoning#tools) | | `toolChoice` | String \| Object | Optional | `Function calling`ツール呼び出し動作の方法 - `auto`: モデルがツールを自動で呼び出し (String) - `none`: モデルがツールを呼び出さずに一般の回答を生成(String) - モデルが特定のツールを強制呼び出し(Object) | | `toolChoice.type` | String | Optional | `Function calling`モデルが呼び出すツールのタイプ | | `toolChoice.function` | Object | Optional | `Function calling`モデルが呼び出すツール - `function`(有効値) | | `toolChoice.function.name` | String | Optional | `Function calling`モデルが呼び出すツール名 | 参考 RAG Reasoningの最大入力トークン数は128,000で、最大出力トークン数は4,096です。 #### `messages` `messages`の説明は次の通りです。 | フィールド | タイプ | 必須の有無 | 説明 | | --- | --- | --- | --- | | `role` | Enum | Required | 会話メッセージのロール - `system` \| `user` \| `assistant` \| `tool` - `system`: ロールを規定する指示文 - `user`: ユーザーの発話または質問 - `assistant`: ユーザーの発話または質問に対する回答 - `tool`: assistant(モデル)が呼び出した関数の実行結果 | | `content` | String | Required | 会話メッセージ内容 - テキスト入力(String) | | `toolCalls` | Array | Conditional | assistantの呼び出しツール情報 - `role`が`tool`の場合、assistantの[toolCalls](/docs/ja/clovastudio-ragreasoning#toolCalls)リクエストと同様に入力 | | `toolCallId` | String | Conditional | ツール ID - `role`が`tool`の場合、必ず入力 - assistantの[toolCalls](/docs/ja/clovastudio-ragreasoning#toolCalls)リクエストと関連付ける用途 | 参考 `role`が`tool`の場合、`messages`の`content`には、検索データベースまたは検索 APIで検索した文書リスト(`search_result`)を追加します。検索結果(`search_result`)に`id: {文書の固有 ID}`、`doc: {検索した文書の原本}`を含め、RAG回答の引用表記に使用されるように構成してください。サンプルコードは次の通りです。 ``` { "role": "tool", "content": "[ { \"search_result\": [{\"id\": \"doc-1493058999\", \"doc\": \"NAVERアカウントによるログインは、個人会員を対象にしており、事業者会員は対象外です。\" }, ... ]" } ``` #### `tools` `tools`の説明は次の通りです。 | フィールド | タイプ | 必須の有無 | 説明 | | --- | --- | --- | --- | | `type` | String | Required | ツールのタイプ - `function`(有効値) | | `function` | Object | Required | 呼び出し`function`情報 | | `function.name` | String | Required | `function`名 | | `function.description` | String | Required | `function`の説明 | | `function.parameters` | Object | Required | `function`使用時に渡されるパラメータ - `properties`、`required` - 入力: [動作方法](/beta/docs/ja/clovastudio-chatcompletionsv3-fc#%EB%8F%99%EC%9E%91-%EB%B0%A9%EC%8B%9D)を参照 - 形式: [JSON Schema reference](https://json-schema.org/understanding-json-schema/reference)を参照 | #### `toolCalls` `toolCalls`の説明は次の通りです。 | フィールド | タイプ | 必須の有無 | 説明 | | --- | --- | --- | --- | | `id` | String | - | ツール識別子 | | `type` | String | - | ツールのタイプ - `function`(有効値) | | `function` | Object | - | 呼び出し`function`情報 | | `function.name` | String | - | `function`名 | | `function.arguments` | Object | - | `function`使用時に渡されるパラメータ | ### リクエスト例 リクエストのサンプルコードは次の通りです。 - Step 1. `role: user`に質問の内容を入力し、回答生成に最適な関数を呼び出す ([レスポンスの確認](/docs/ja/clovastudio-ragreasoning#%EC%9D%91%EB%8B%B5%EC%98%88%EC%8B%9C1)) ``` curl --location --request POST 'https://clovastudio.stream.ntruss.com/v1/api-tools/rag-reasoning' \ --header 'Authorization: Bearer ' \ --header 'Content-Type: application/json' \ --data-raw '{ "messages": [ { "content": "A100 GPUを借りる方法", "role": "user" } ], "tools": [ { "function": { "description": "NCloud関連検索の際に使用するツールです。\n分けて質問する必要がある場合、クエリを分割してツールを使用します。\n情報が見つからなかった場合、最終回答は出さずに suggested_queriesを参照してツールを再度使用することができます。", "name": "ncloud_cs_retrieval", "parameters": { "properties": { "query": { "description": "ユーザーの検索キーワードを整理して入れてください。", "type": "string" } }, "required": [ "query" ], "type": "object" } }, "type": "function" } ], "toolChoice": "auto", "maxTokens": 1024 }' ``` - Step 2. 最終回答を生成するための、`role: tool`を含めむリクエスト ([レスポンスの確認](/docs/ja/clovastudio-ragreasoning#%EC%9D%91%EB%8B%B5%EC%98%88%EC%8B%9C2)) ``` curl --location --request POST 'https://clovastudio.stream.ntruss.com/v1/api-tools/rag-reasoning' \ --header 'Authorization: Bearer ' \ --header 'Content-Type: application/json' \ --data-raw '{ "messages": [ { "content": "A100 GPUを借りる方法", "role": "user" }, { "role": "assistant", "content": "", "toolCalls": [ { "id": "call_enTEYb0kWBjOwtkngbl7FGTm", "type": "function", "function": { "name": "ncloud_cs_retrieval", "arguments": { "query": "A100 GPUを借りる方法" } } } ] }, { "content": "{\"search_result\": [{\"id\": \"doc-179\", \"doc\": \"GPU A100は、KR-1でのみ作成できます。A100の作成時は、KR-1の Subnetを選択してください。GPUサーバは企業会員に限り、最大5台まで作成できます。\"}, {\"id\": \"doc-248\", \"doc\": \"NAVERクラウドプラットフォームコンソールの Services > Compute > Serverメニューから GPU A100サーバを作成できます。作成方法の詳細は、サーバ作成ガイドをご参照ください。\"}, {\"id\": \"doc-156\", \"doc\": \"より多くの GPUサーバが必要な場合、または GPUサーバの作成が必要な個人会員の場合は、FAQを参照してサポートにお問い合わせください。\"}]}", "role": "tool", "toolCallId": "call_enTEYb0kWBjOwtkngbl7FGTm" } ], "tools": [ { "function": { "description": "NCloud関連検索の際に使用するツールです。\n分けて質問する必要がある場合、クエリを分割してツールを使用します。\n情報が見つからなかった場合、最終回答は出さずに suggested_queriesを参照してツールを再度使用することができます。", "name": "ncloud_cs_retrieval", "parameters": { "properties": { "query": { "description": "ユーザーの検索キーワードを整理して入れてください。", "type": "string" } }, "required": [ "query" ], "type": "object" } }, "type": "function" } ] }' ``` ## レスポンス レスポンス形式を説明します。 ### レスポンスヘッダ レスポンスヘッダの説明は次の通りです。 | ヘッダ | 必須の有無 | 説明 | | --- | --- | --- | | `Content-Type` | - | レスポンスデータの形式 - `application/json` | ### レスポンスボディ レスポンスボディの説明は次の通りです。 | フィールド | タイプ | 必須の有無 | 説明 | | --- | --- | --- | --- | | `status` | Object | - | [レスポンスの状態](/docs/ja/ai-naver-clovastudio-summary#%EC%9D%91%EB%8B%B5)を参照 | | `result` | Object | - | レスポンス結果 | | `result.message` | ChatMessage | - | 会話メッセージリスト | | `result.message.role` | Enum | - | 会話メッセージのロール - `system` \| `user` \| `assistant` - `system`: ロールを規定する指示文 - `user`: ユーザーの発話または質問 - `assistant`: モデルの回答 | | `result.message.content` | String | - | 会話メッセージの内容 | | `result.message.thinkingContent` | String | - | モデルの意思決定フロー | | `result.message.toolCalls` | Array | - | [toolCalls](/docs/ja/clovastudio-ragreasoning#toolCalls_response) | | `result.usage` | Object | - | トークン使用量 | | `result.usage.completionTokens` | Integer | - | 生成トークン数 | | `result.usage.promptTokens` | Integer | - | 入力(プロンプト)トークン数 | | `result.usage.totalTokens` | Integer | - | トークンの総数 - 生成トークン数+入力トークン数 | #### `toolCalls` `toolCalls`の説明は次の通りです。 | フィールド | タイプ | 必須の有無 | 説明 | | --- | --- | --- | --- | | `id` | String | - | ツール識別子 | | `type` | String | - | ツールのタイプ - `function`(有効値) | | `function` | Object | - | 呼び出し`function`情報 | | `function.name` | String | - | `function`名 | | `function.arguments` | Object | - | `function`使用時に渡されるパラメータ | ### レスポンス例 レスポンスのサンプルコードは次の通りです。 - Step 1.に対するレスポンス例 ([リクエストの確認](/docs/ja/clovastudio-ragreasoning#%EC%9A%94%EC%B2%AD%EC%98%88%EC%8B%9C1)) ``` { "status": { "code": "20000", "message": "OK" }, "result": { "message": { "role": "assistant", "content": "", "thinkingContent": "ユーザーから\"A100 GPUの借り方\"について質問がありました。この質問への回答を見つけるには、'ncloud_cs_retrieval'ツールを使って関連情報を検索する必要があります。", "toolCalls": [ { "id": "call_enTEYb0kWBjOwtkngbl7FGTm", "type": "function", "function": { "name": "ncloud_cs_retrieval", "arguments": { "query": "A100 GPUを借りる方法" } } } ] }, "usage": { "promptTokens": 135, "completionTokens": 84, "totalTokens": 219 } } } ``` - Step 2.に対するレスポンス例 (LLMの最終回答を返す) ([リクエストの例](/docs/ja/clovastudio-ragreasoning#%EC%9A%94%EC%B2%AD%EC%98%88%EC%8B%9C2)) ``` { "status": { "code": "20000", "message": "OK" }, "result": { "message": { "role": "assistant", "content": "A100 GPUを借りる方法は、NAVERクラウドプラットフォームコンソールの Services > Compute > Serverメニューから GPU A100サーバを作成できます。しかし、GPU A100は KR-1でしか作成できないため、A100の作成時には KR-1の Subnetを選択する必要があります。さらに、GPUサーバは企業会員に限り、最大5台まで作成できます。より多くの GPUサーバが必要な場合、または GPUサーバの作成が必要な個人会員の場合は、FAQを参照してサポートにお問い合わせください。" }, "usage": { "promptTokens": 332, "completionTokens": 146, "totalTokens": 478 } } } ``` #### 失敗 呼び出しに失敗した場合のレスポンスのサンプルコードは次の通りです。 - [クライアント共通エラー問題(4xx)](/beta/docs/ja/clovastudio-troubleshoot-c4xx) - [サーバ共通エラー問題(5xx)](/beta/docs/ja/clovastudio-troubleshoot-c5xx)