Kimi K3 API 가이드: 추론(Reasoning), 도구 호출(Tool Calling), 구조화된 출력(Structured Output)
요약
Kimi K3 모델을 실제 운영 환경에 적용하기 위한 API 활용 가이드입니다. 사고(Reasoning) 기능, 도구 호출, 구조화된 출력 등 주요 기능의 동작 방식과 주의사항을 다룹니다.
핵심 포인트
- reasoning_effort는 'max' 값만 지원하며 사고 이력 보존이 중요함
- 최대 128개의 도구 호출 및 동적 도구 로딩 지원
- 1M 토큰의 대규모 컨텍스트 창 제공
- temperature 등 주요 샘플링 파라미터가 고정되어 있음
OpenAI 호환 API를 통해 Kimi K3를 테스트하고 있다면, 이를 실제 운영 환경에 연결하기 전에 알아두어야 할 몇 가지 세부 사항이 있습니다.
Kimi K3는 단순히 컨텍스트 창(Context window)이 더 큰 또 다른 채팅 모델이 아닙니다. 이 모델은 상시 작동하는 사고(Always-on thinking) 기능, 1M 토큰의 컨텍스트 창, Chat Completions, Responses, 그리고 Claude 호환 Messages 간의 API별 차이점, 그리고 클라이언트 코드에서 당황스러울 수 있는 몇 가지 예외 상황(Edge cases)을 갖추고 있습니다.
이 가이드는 AIHubMix에서 검증한 다음 내용을 요약합니다:
reasoning_effort="max"및 사고 이력 (Thinking history)- 도구 호출 (Tool calling) 및 동적 도구 로딩 (Dynamic tool loading)
- 구조화된 출력 (Structured output) 지원
- 자동 컨텍스트 캐싱 (Automatic context caching)
- 접두사 완성 (Prefix completion)
- 비전 (Vision) 입력
- 중단 시퀀스 (Stop sequence) 동작
테스트 노트: 아래 동작은 2026년 7월 17일 AIHubMix 운영 API를 통해 검증되었습니다. 모델 제공업체는 시간이 지남에 따라 동작을 변경할 수 있으므로, 예외적인 동작에 의존하기 전에 최신 모델 페이지와 공식 문서를 확인하십시오.
Kimi K3 한눈에 보기
| 항목 | 값 |
|---|---|
| 컨텍스트 창 (Context window) | 1M 토큰 |
| ... |
심층 추론(Deep reasoning), 긴 컨텍스트 작업, 에이전트 워크플로우(Agent workflows), 구조화된 추출(Structured extraction) 또는 대규모 컨텍스트를 활용한 코드 생성이 필요하다면, Kimi K3는 가장 먼저 테스트해야 할 모델입니다.
빠른 실험을 위해, 더 무거운 워크로드를 전체 Kimi K3 API로 옮기기 전 Kimi K3 Free를 유용한 진입점으로 활용할 수 있습니다.
1. 사고 모드: reasoning_effort는 max만 지원합니다
Kimi K3의 사고(Thinking) 기능은 기본적으로 활성화되어 있습니다. 중요한 점은 reasoning_effort가 단 하나의 값만 지원한다는 것입니다:
from openai import OpenAI
client = OpenAI(
...
다회차 대화(Multi-turn conversations)의 경우, 사고 내용(Thinking content)을 포함하여 이전 어시스턴트 메시지를 수정 없이 그대로 다시 전달하십시오.
messages = [
{"role": "user", "content": "What is the capital of France?"},
{
...
이것이 중요한 이유는 Kimi K3가 사고 이력을 보존하도록 학습되었기 때문입니다. 만약 세션 관리자(Session manager), 프록시(Proxy) 또는 로깅 계층(Logging layer)에서 사고 필드를 제거하면, 이후의 대화 단계가 덜 안정적일 수 있습니다.
2. 샘플링 파라미터는 고정되어 있습니다
Kimi K3는 제공자(provider)로부터 고정된 샘플링 설정을 사용합니다:
temperature:1.0top_p:0.95n:1presence_penalty:0frequency_penalty:0
실질적인 권장 사항은 간단합니다. 제공자의 문서에서 별도로 명시하지 않는 한, 이러한 파라미터들을 생략하십시오.
3. 도구 호출 (Tool calling) 및 동적 도구 로딩 (Dynamic tool loading)
Kimi K3는 최대 128개의 도구를 지원합니다. 도구 호출 (Tool calling)은 모든 API에서 작동하지만, 구문(syntax)은 서로 다릅니다.
Chat Completions
tool_choice는 auto, none, required를 지원합니다.
Kimi K3는 Chat Completions에서 동적 도구 로딩 (dynamic tool loading)도 지원합니다. tools를 포함하고 content는 없는 시스템 메시지 (system message)를 사용하여 대화 중간에 새로운 도구를 주입할 수 있습니다.
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello."},
...
기억해야 할 세부 사항 하나: 주입된 도구 메시지는 이후의 요청(requests)에 다시 포함되어야 합니다.
Responses API
도구 정의는 더 평탄한(flatter) 구조를 사용합니다:
response = client.responses.create(
model="kimi-k3",
input="Hello",
...
테스트 결과, 모델은 function_call 출력 항목을 반환했습니다.
Claude 호환 Messages API
Messages API는 Anthropic 스타일의 도구 정의를 사용합니다:
from anthropic import Anthropic
client = Anthropic(
...
중요한 주의 사항: 동적 도구 로딩 (dynamic tool loading)은 공식적인 Messages 호환 엔드포인트(endpoint)에서 적용되지 않았습니다. 대신 최상위 레벨(top level)에서 도구를 선언하십시오.
4. 구조화된 출력 (Structured output)
구조화된 출력 (Structured output)은 Chat Completions 및 Responses를 통해 잘 작동합니다.
Chat Completions
completion = client.chat.completions.create(
model="kimi-k3",
messages=[
...
관찰된 출력:
{"city":"Paris"}
Responses API
response = client.responses.create(
model="kimi-k3",
input="Paris is the capital of France. Extract the city name.",
...
Messages API 주의 사항
Claude 호환 Messages 엔드포인트는 테스트 과정에서 구조화된 출력 (structured output)을 지원하지 않았습니다. 구조화된 출력 (structured-output) 필드는 조용히 무시되었으며, 엔드포인트는 HTTP 200과 함께 자유 형식의 텍스트 (free-form text)를 반환했습니다.
만약 다운스트림 (downstream) 코드에서 엄격한 JSON이 필요하다면, Kimi K3의 구조화된 출력 (structured output)을 위해 Chat Completions 또는 Responses를 사용하십시오.
5. 컨텍스트 캐싱 (Context caching)은 자동입니다
Kimi K3의 컨텍스트 캐싱 (context caching)은 자동입니다. 별도의 특별한 요청 파라미터 (request parameter)가 필요하지 않습니다.
반복되는 긴 접두사 (prefix)가 캐시에 적중하면, 사용량 (usage) 필드는 API마다 다릅니다:
| API | 캐시 사용량 (Cache usage) 필드 |
|---|---|
| Chat Completions | usage.prompt_tokens_details.cached_tokens |
| ... |
이는 긴 시스템 프롬프트 (system prompts), 검색 중심의 컨텍스트 (retrieval-heavy contexts), 그리고 대규모 접두사 (prefixes)를 재사용하는 에이전트 워크플로우 (agent workflows)에 특히 유용합니다.
6. 접두사 완성 (Prefix completion)
접두사 완성 (Prefix completion)을 사용하면 모델이 어시스턴트 접두사 (assistant prefix)로부터 내용을 이어갈 수 있습니다. 이는 코드 완성 (code completion), 제어된 포맷팅 (controlled formatting), 또는 부분적으로 생성된 답변을 이어가는 데 유용합니다.
Chat Completions
messages = [
{"role": "user", "content": "Write a haiku about the sea."},
{"role": "assistant", "content": "Waves fold into foam,", "partial": True},
...
Responses 및 Messages
Responses 및 Messages의 경우, 어시스턴트 접두사 (assistant prefix)를 마지막 어시스턴트 메시지 (assistant message)로 전달하십시오. 별도의 partial 파라미터는 필요하지 않습니다.
7. 비전 입력 (Vision input)
Kimi K3는 이미지 입력을 지원합니다. 정확한 콘텐츠 블록 (content-block) 형식은 API에 따라 다릅니다.
Chat Completions
messages = [
{
"role": "user",
...
Responses API
input = [
{
"role": "user",
...
Messages API
messages = [
{
"role": "user",
...
64x64 크기의 빨간색 PNG를 사용한 간단한 테스트에서, 모델은 Red라고 정확하게 답변했습니다.
8. 중지 시퀀스 (Stop sequence) 동작
Kimi K3는 중지 시퀀스 (stop sequence) 제한을 검증합니다:
- 최대 5개의 중지 시퀀스 (stop sequences)
- 각 시퀀스는 32바이트 (bytes)를 초과할 수 없음
테스트 결과, 두 제한 중 하나라도 초과하면 HTTP 400을 반환했습니다.
한 가지 주의사항: Messages API에서는 중단 시퀀스 (stop sequence)가 발생했을 때 Anthropic의 의미론 (semantics)을 따르지 않았습니다. 응답은 stop_sequence 대신 stop_reason: "end_turn"을 반환했으며, stop_sequence는 null이었습니다.
만약 귀하의 클라이언트가 절단 (truncation)을 감지하기 위해 해당 필드들에 의존한다면, 자체적인 처리 로직을 추가하십시오.
9. 지연 시간 (Latency): 긴 Kimi K3 호출은 시간이 오래 걸릴 수 있습니다
Kimi K3의 사고 (thinking) 과정은 최대 레벨로 고정되어 있기 때문에, 복잡한 단일 호출 (single-call) 작업은 일반적인 채팅 완성 (chat completions)보다 훨씬 더 오래 걸릴 수 있습니다.
단일 파일 HTML 게임 생성 테스트 결과:
- 총 요청 시간: 2,541초 (약 42분)
- 완성 토큰 (Completion tokens): 74,994개
- 사고 토큰 (Thinking tokens): 54,486개
- 사고 비중 (Thinking share): 완성 토큰의 73%
- 최종 결과: 실행 가능한 1,275줄의 코드
- 종료 사유 (Finish reason):
stop
프로덕션 클라이언트를 위한 권장 사항:
- 긴 작업에는 스트리밍 (streaming)을 사용하십시오.
- 타임아웃 (timeouts)을 몇 분 또는 그 이상으로 설정하십시오.
max_completion_tokens에 충분한 여유를 두십시오.- 비용과 지연 시간을 추정할 때 사고 토큰 (thinking-token) 사용량을 추적하십시오.
기능 매트릭스 (Capability matrix)
| 기능 (Capability) | Chat Completions | Responses | Messages |
|---|---|---|---|
| 응답 내 사고 내용 (Thinking content in response) | reasoning_content | reasoning 출력 항목 | thinking 콘텐츠 블록 |
| ... |
FAQ
AIHubMix에서 Kimi K3는 어떤 API를 지원하나요?
AIHubMix는 Chat Completions, Responses, 그리고 Claude 호환 Messages API를 통해 Kimi K3를 지원합니다.
Kimi K3의 사고 (thinking) 기능을 비활성화할 수 있나요?
아니요. Kimi K3의 사고 기능은 기본적으로 활성화되어 있으며, reasoning_effort는 `
주요하게 주의해야 할 사항은 사고 이력 (thinking history), 장기 작업 지연 시간 (long-task latency), API별 구문 차이, 그리고 구조화된 출력 (structured output) 및 중단 시퀀스 (stop sequence) 메타데이터와 관련된 Messages API의 주의 사항입니다.
가격 책정 및 실시간 상태는 Kimi K3 모델 페이지를 참조하세요:
https://aihubmix.com/model/kimi-k3
kimi-k3-free 모델을 포함한 더 많은 모델은 다음을 방문해 주세요:
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기