학습용 데이터 답변 생성 API
목적
저장된 학습용 질문·답변 데이터를 기준으로 답변을 조회하고, AI를 한 번 호출하여 답변을 정리한 뒤 반환합니다.
stream 값에 따라 일반 JSON 또는 SSE 스트림으로 받을 수 있습니다.URL
Plain Text
https://api.sidetalk.ai/v1/knowledge/completionsHTTP 메서드
Plain Text
POST요청 본문
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| question | String | 조건부 | knowledgeId가 없을 때 저장된 질문과 정확히 일치하는 데이터를 찾는 데 사용합니다. |
| knowledgeId | String | 조건부 | 학습용 데이터 1건을 식별하는 ID입니다. 조회 API 응답의 data[].knowledgeId 값을 그대로 전달하는 것을 권장합니다. |
| stream | Boolean | 아니요 | false(기본값)이면 일반 JSON, true이면 SSE 스트림으로 반환합니다. |
| sessionId | String | 아니요 | 채팅 로그에 사용할 세션 ID입니다. |
knowledgeId 또는 question 중 하나는 전달해야 합니다. 두 값을 모두 전달하면 knowledgeId를 우선 사용합니다.요청 예시
knowledgeId로 조회하는 요청
Bash
curl -X POST "https://api.sidetalk.ai/v1/knowledge/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${API_KEY}" \
-d '{
"knowledgeId": "456",
"stream": false
}'기존 세션으로 요청
Bash
curl -X POST "https://api.sidetalk.ai/v1/knowledge/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${API_KEY}" \
-d '{
"knowledgeId": "456",
"sessionId": "943f15db-3984-4f21-ad64-f0115839c3a6",
"stream": false
}'성공 응답(200 OK)
JSON
{
"success": true,
"knowledgeId": "456",
"sessionId": "943f15db-3984-4f21-ad64-f0115839c3a6",
"message": {
"content": "배송은 결제 후 2~3일 이내에 진행됩니다."
},
"recommended_questions": [
{
"knowledgeId": "3356",
"question": "배송 조회는 어떻게 하나요?",
"type": "chat_data"
}
],
"meta": {
"chat_log_uuid": "uuid",
"knowledgeId": "456",
"sessionId": "943f15db-3984-4f21-ad64-f0115839c3a6",
"latency_ms": 850,
"used_credit": 1,
"tokens": {
"input_tokens": 100,
"output_tokens": 30,
"total_tokens": 130,
"token_cost": 0
}
}
}오류 응답
| 상태 코드 | 설명 |
|---|---|
| 400 | JSON 형식 또는 필수 식별 정보가 잘못되었습니다. |
| 402 | API 사용 크레딧이 부족합니다. |
| 403 | API 키 인증에 실패했습니다. |
| 404 | 조건에 맞는 학습용 답변을 찾을 수 없습니다. |
| 500 | 답변 생성 중 서버 오류가 발생했습니다. |
JSON
{
"success": false,
"error": "Answer not found"
}참고: 이 API는 지정된 학습용 데이터의 답변을 조회한 뒤 AI 포매팅을 한 번 적용하는 API입니다.
스트림 요청(stream: true)
stream을 true로 보내면 대화형 API와 같은 SSE 형식으로 응답합니다. metadata 이벤트 다음에 choices[].delta.content 형식의 데이터 청크가 오고, 마지막에 finish_reason: "stop" 청크와 [DONE]이 전송됩니다. knowledgeId는 메타데이터와 모든 데이터 청크에 포함됩니다.Bash
curl -N -X POST "https://api.sidetalk.ai/v1/knowledge/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${API_KEY}" \
-d '{
"knowledgeId": "456",
"stream": true,
"sessionId": "api-session-1"
}'응답 예시는 다음과 같습니다.
JSON
event: metadata
data: {"knowledgeId":"456","sessionId":"api-session-1","chat_log_uuid":"uuid"}
data: {"id":"chatcmpl-uuid","object":"chat.completion.chunk","created":1731042399,"knowledgeId":"456","choices":[{"index":0,"delta":{"content":"배송은 "},"finish_reason":null}]}
data: {"id":"chatcmpl-uuid","object":"chat.completion.chunk","created":1731042399,"knowledgeId":"456","choices":[{"index":0,"delta":{"content":"결제 후 2~3일 이내에 진행됩니다."},"finish_reason":null}]}
data: {"id":"chatcmpl-uuid","object":"chat.completion.chunk","created":1731042399,"knowledgeId":"456","choices":[{"index":0,"delta":{},"finish_reason":null}],"sidetalk_event":{"type":"recommendedQuestions","data":{"items":[{"knowledgeId":"3356","question":"배송 조회는 어떻게 하나요?","type":"chat_data"}]}}}
data: {"id":"chatcmpl-uuid","object":"chat.completion.chunk","created":1731042399,"knowledgeId":"456","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"meta":{"chat_log_uuid":"uuid","knowledgeId":"456","sessionId":"api-session-1","latency_ms":850,"used_credit":1,"tokens":{"input_tokens":100,"output_tokens":30,"total_tokens":130,"token_cost":0}}}
data: [DONE]일반 JSON 응답에는
recommended_questions 배열이 포함됩니다.
직접 연결된 추천질문이 없으면 유사도 기반 추천질문이 최대 3개 반환될 수 있습니다.추천 질문의 식별자도
knowledgeId이며, type은 추천 데이터의 종류입니다.스트림에서는 답변 청크와 같은
data 형식으로 다음 이벤트가 추가됩니다.JSON
data: {"id":"chatcmpl-uuid","object":"chat.completion.chunk","created":1731042399,"knowledgeId":"456","choices":[{"index":0,"delta":{},"finish_reason":null}],"sidetalk_event":{"type":"recommendedQuestions","data":{"items":[{"knowledgeId":"3356","question":"배송 조회는 어떻게 하나요?","type":"chat_data"}]}}}
data: {"id":"chatcmpl-uuid","object":"chat.completion.chunk","created":1731042399,"knowledgeId":"456","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
data: [DONE]knowledgeId 없이 question만 전달하는 경우, 저장된 학습용 질문과 정확히 일치하는 데이터를 조회합니다.
답변 조회 후 추천질문이 없으면 유사도 기반 추천질문이 자동으로 조회될 수 있습니다.