https://api.ncloud-docs.com/docs/clovastudio-ragreasoning
RAG Reasoning
api.ncloud-docs.com
위의 내용은 RAG Reasoning의 공식 문서이다.
이번에 RAG Reasoning을 조금 더 쉽게 이해하려면 요청 응답 예시와 파라미터를 살펴보는게 좋을 것 같다.
그 전에 RAG Reasoning의 작동 방식을 이해하는게 좋다.
간단하게
- 사용자 질문을 입력
- AI가 답변에 필요한 검색 함수(Function)를 선택해 호출
- 검색 결과(문서 등)를 받아, 그 근거를 바탕으로 최종 답변을 생성
이렇게 3단계로 나누어진다.
Step 1 . 유저의 요청
curl --location --request POST 'https://clovastudio.stream.ntruss.com/v1/api-tools/rag-reasoning' \
--header 'Authorization: Bearer <access_token>' \
--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
}'
위의 내용은 문서내의 요청 예시이다.
위의 요청 예시는 유저가 A100 GPU 빌리는 방법에 대해서 질문한 것이다.
여기서 LLM은 유저의 요청을 보고 tools 안의 function을 골라서 수행한다.
여기서 function은

위의 내용과 같이 정의되는데
메시지의 내용을 보고, 그 메시지의 요청을 처리하기 적절한 function을 찾아 function calling 하는 것이다.
function calling은
https://api.ncloud-docs.com/docs/clovastudio-chatcompletionsv3-fc
Function calling
api.ncloud-docs.com
위의 문서를 보면 알 수 있다.
사실 어떤 특별한 건 없고 내가 함수를 자연어로 정의해서 사용하는 것이다.
역시 LLM을 사용하니깐 이런 방식으로 함수를 사용할 수 있다...
요약하자면 메시지의 요청을 받고, 그 메시지의 요청을 처리하기 적절한 function을 골라서 수행한다.
위의 요청에 대한 응답은 다음과 같다.
Step 2. 유저요청 응답
{
"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
}
}
}
위의 result내에서 toolCalls를 보면 function을 선택하여 호출한 것을 볼 수 있다.
그리고 우리가 추론모델을 사용할 때, 나오는 생각하는 과정? 은 thinkingContent로 나오는 것을 볼 수 있다.
여기서 thinkingContent를 보면 사용자의 요청을 해결하기 위해서 어떤 function을 사용해야하는지 생각한 내용이 나오고,
toolCalls를 통해 함수를 선택하고 파라미터를 넣어준 것이 보인다.
해당 응답을 받은 유저는 계속 이어서 요청을 하게 된다.
Step3. 유저가 이어서 요청
curl --location --request POST 'https://clovastudio.stream.ntruss.com/v1/api-tools/rag-reasoning' \
--header 'Authorization: Bearer <access_token>' \
--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\": \"네이버 클라우드 플랫폼 콘솔의 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"
}
]
}'
message 블로 내 3번째 블록을 보면 이전에 AI가 고른 function이 들어가 있고 이를 유저측에서 요청하는데 해당 과정을 거쳐서
{
"status": {
"code": "20000",
"message": "OK"
},
"result": {
"message": {
"role": "assistant",
"content": "A100 GPU를 빌리는 방법은 <doc-248>네이버 클라우드 플랫폼 콘솔의 Services > Compute > Server 메뉴에서 GPU A100 서버를 생성할 수 있습니다.</doc-248> 그러나 <doc-179>GPU A100은 KR-1에서만 생성 가능하며, A100 생성 시에는 KR-1의 Subnet을 선택해야 합니다.</doc-179> 또한, <doc-179>GPU 서버는 기업 회원에 한하여 최대 5대까지 생성할 수 있습니다.</doc-179> 만약 더 많은 GPU 서버가 필요하거나 GPU 서버 생성이 필요한 개인 회원의 경우, <doc-156>FAQ를 참고하여 고객 지원으로 문의해 주십시오.</doc-156>"
},
"usage": {
"promptTokens": 332,
"completionTokens": 146,
"totalTokens": 478
}
}
}
위와 같이 최종적으로 응답을 하게 된다.
'AI' 카테고리의 다른 글
| [AI] 리랭커 (feat. CLOVA) (3) | 2025.07.25 |
|---|---|
| [AI] RAG(Retrieval-Augmented Generation) feat. CLOVA (0) | 2025.07.25 |