Moonshot AI의 Kimi K2.6 발표는 코딩, 장기 실행, 에이전트 스웜을 위한 새로운 오픈 소스 최첨단 기술로 자리매김합니다. 이 API는 OpenAI와 호환되며, `https://api.moonshot.ai/v1`에 호스팅되어 있고, 플랫폼에 문서화되어 있습니다. OpenAI SDK가 설치되어 있다면 약 5분 안에 실제 요청을 보낼 수 있습니다.
이 가이드에서는 인증, 첫 번째 요청, 스트리밍, 도구 호출, 시각 및 비디오 입력, 사고 모드, 그리고 300개의 서브 에이전트로 에이전트 스웜을 구동하는 방법을 안내하며, 통합 코드를 작성하기 전에 Apidog로 모든 엔드포인트를 테스트하는 방법을 보여줍니다.
TL;DR: 60초 만에 Kimi K2.6 API
- 기본 URL: `https://api.moonshot.ai/v1`
- 엔드포인트: `POST /chat/completions`
- 모델 ID: `kimi-k2.6`, `kimi-k2.6-thinking`
- 인증: `Authorization: Bearer $KIMI_API_KEY`
- 형식: OpenAI 채팅 완료 스키마 (메시지, 도구, 스트림 등)
- 컨텍스트: 262,144 입력 토큰, 추론을 위해 최대 98,304 출력 토큰
- 기본값: temperature 1.0, top-p 1.0 (Moonshot의 공식 안내에 따름)
최소 curl:
curl https://api.moonshot.ai/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $KIMI_API_KEY" \
-d '{
"model": "kimi-k2.6",
"messages": [{"role": "user", "content": "Write a Python function that reverses a string."}]
}'
그게 전부입니다. 이 가이드의 나머지 부분에서는 에이전트 스웜과 Moonshot이 말하는 4,000단계 실행 제한을 포함한 세부 정보를 다룹니다.

이 API로 실제로 할 수 있는 것
Kimi K2.6 발표에 따르면, 이 API는 프로덕션 환경에서 다음 모든 것을 가능하게 합니다:
- 단일 작업에서 12시간 이상 실행되는 코딩 에이전트 (Qwen3.5-0.8B Mac 추론 데모 참조: 4,000개 이상의 도구 호출, 처리량 15에서 193 토큰/초로 증가).
- 자동 사고 대응 기능을 갖춘 며칠간의 세션에 걸친 자율 인프라 관리.
- Rust, Go, Python, Zig 전반에 걸친 장기적인 신뢰성.
- 4,000개 이상의 조정된 단계를 실행하는 최대 300개의 서브 에이전트로 구성된 에이전트 스웜.
- 단일 프롬프트에서 인증, 데이터베이스 및 트랜잭션을 포함한 풀스택 앱을 생성하는 디자인 주도 개발.
- 비전 + Python 도구 사용 파이프라인 (Python을 사용한 MathVision: 93.2%).
Claude Code 컴퓨터 사용, 나만의 Claude Code 구축, 또는 Cursor Composer 2와 같은 범주의 도구를 구축하는 경우, K2.6 API는 모델 레이어에서 직접적인 교체가 가능합니다.
1단계: API 키 받기
- platform.moonshot.ai (또는 platform.kimi.ai)로 이동하여 가입합니다. 이메일 또는 Google OAuth로 가능합니다.
- 계정을 확인합니다. 해외 사용자는 SMS 인증이 필요할 수 있습니다.
- 결제 정보를 추가합니다. Moonshot은 일반적으로 새 계정에 소량의 무료 크레딧을 제공합니다.
- 대시보드에서 API 키를 열고 키 생성을 클릭합니다.
- 키를 즉시 복사합니다 (한 번만 표시됩니다).
- 키를 내보냅니다:
export KIMI_API_KEY="sk-..."
프로덕션용으로 `.zshrc`, `.bashrc` 또는 비밀 관리자에 추가하십시오. 절대 커밋하지 마십시오.
개발 중에 요금을 지불하는 것을 피하고 싶으신가요? Kimi K2.6을 무료로 사용하는 방법은 Cloudflare Workers AI, 자체 호스팅 가중치, 무료 크레딧 프로그램을 다룹니다.
2단계: SDK 선택
API는 OpenAI와 호환되므로, 기본 URL을 변경하면 공식 OpenAI SDK가 작동합니다.
| 옵션 | 설치 | 가장 적합한 용도 |
|---|---|---|
| curl | 내장 | 빠른 테스트, CI |
| OpenAI Python | `pip install openai` | Python 서비스 |
| OpenAI Node | `npm install openai` | JS/TS 앱 |
Python
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("KIMI_API_KEY"),
base_url="https://api.moonshot.ai/v1",
)
response = client.chat.completions.create(
model="kimi-k2.6",
messages=[{"role": "user", "content": "What is the capital of France?"}],
)
print(response.choices[0].message.content)
Node.js
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.KIMI_API_KEY,
baseURL: "https://api.moonshot.ai/v1",
});
const response = await client.chat.completions.create({
model: "kimi-k2.6",
messages: [{ role: "user", content: "What is the capital of France?" }],
});
console.log(response.choices[0].message.content);
curl
curl https://api.moonshot.ai/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $KIMI_API_KEY" \
-d '{
"model": "kimi-k2.6",
"messages": [{"role": "user", "content": "What is the capital of France?"}]
}'
세 가지 모두 동일한 응답 형식을 반환합니다.
3단계: 요청 본문 이해
OpenAI 채팅 완료와 동일한 필드:
{
"model": "kimi-k2.6",
"messages": [
{ "role": "system", "content": "You are a helpful assistant." },
{ "role": "user", "content": "Your prompt here." }
],
"temperature": 1.0,
"top_p": 1.0,
"max_tokens": 8192,
"stream": false,
"tools": [],
"tool_choice": "auto",
"thinking": { "type": "disabled" }
}
Moonshot 관련 두 가지 참고 사항:
- 기본값이 높습니다. 공식 블로그에서는 조정된 기본값으로 temperature 1.0과 top-p 1.0을 권장합니다. OpenAI 코딩 워크플로에서 temperature 0.2 습관을 가져오지 마십시오.
- `thinking`은 `kimi-k2.6-thinking`에서 추론 추적을 전환합니다. `{"type": "disabled"}`는 빠른 답변을 위해 이를 억제합니다.
4단계: 스트리밍
스트리밍은 모든 UI 또는 장기 생성에 대한 올바른 기본값입니다. 추론 작업의 최대 출력은 98,304 토큰에 도달할 수 있습니다. 한 번에 모든 것을 기다리고 싶지는 않을 것입니다.
Python
stream = client.chat.completions.create(
model="kimi-k2.6",
messages=[{"role": "user", "content": "Write a 500-word essay on MoE models."}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
Node.js
const stream = await client.chat.completions.create({
model: "kimi-k2.6",
messages: [{ role: "user", content: "Write a 500-word essay on MoE models." }],
stream: true,
});
for await (const chunk of stream) {
const delta = chunk.choices[0]?.delta?.content;
if (delta) process.stdout.write(delta);
}
스트리밍은 도구 호출에서도 작동합니다. 인수는 JSON 델타로 도착하며 이를 연결해야 합니다.
5단계: 도구 호출
Moonshot은 파트너 테스트에서 Toolathlon 점수 50.0%와 96.60% 도구 호출 성공률을 보고합니다. 형식은 표준 OpenAI 함수 호출 스키마이므로, QA 엔지니어를 위한 기존 API 테스트 워크플로가 적용됩니다.
도구 정의
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the current weather in a location.",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "City name"},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
},
"required": ["location"]
}
}
}
]
첫 번째 호출 (모델 결정)
import json
messages = [{"role": "user", "content": "What's the weather in Tokyo?"}]
resp = client.chat.completions.create(
model="kimi-k2.6",
messages=messages,
tools=tools,
tool_choice="auto",
)
msg = resp.choices[0].message
messages.append(msg)
if msg.tool_calls:
for call in msg.tool_calls:
args = json.loads(call.function.arguments)
result = fetch_weather(args["location"], args.get("unit", "celsius"))
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": json.dumps(result),
})
두 번째 호출 (최종 답변)
final = client.chat.completions.create(
model="kimi-k2.6",
messages=messages,
tools=tools,
)
print(final.choices[0].message.content)
K2.6은 다단계 도구 체인에 강하며, 이는 Kimi Code와 같은 장기 실행 코딩 에이전트를 실현 가능하게 만듭니다. 프레임워크 비교를 위해 Claude Code 워크플로는 다른 백엔드로 동일한 루프를 다룹니다.
6단계: 시각 입력
K2.6은 MMMU-Pro에서 79.4%, V* (Python 포함)에서 96.9%를 기록했습니다. 이미지는 OpenAI의 `image_url` 콘텐츠 형식을 사용하여 사용자 메시지에 들어갑니다:
response = client.chat.completions.create(
model="kimi-k2.6",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Describe this image in one sentence."},
{"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}}
]
}
],
)
로컬 파일의 경우 Base64 인코딩합니다:
import base64
with open("photo.jpg", "rb") as f:
b64 = base64.b64encode(f.read()).decode("utf-8")
image_url = f"data:image/jpeg;base64,{b64}"
OCR 또는 다이어그램 읽기의 경우, 명확한 텍스트 지시와 이미지를 결합합니다. 수학 문제의 경우, Python 인터프리터 도구를 포함합니다. MathVision 93.2% 점수는 Python 액세스가 활성화된 상태에서 측정되었습니다.
7단계: 비디오 입력
비디오 URL 또는 프레임 시퀀스를 전달합니다:
response = client.chat.completions.create(
model="kimi-k2.6",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Summarize what happens in this video."},
{"type": "video_url", "video_url": {"url": "https://example.com/clip.mp4"}}
]
}
],
)
짧은 클립(<30초)은 단일 호출에서 작동합니다. 긴 비디오는 프레임별 추론이 많은 토큰을 생성하므로 스트리밍의 이점을 얻습니다.
8단계: 사고 모드
`kimi-k2.6-thinking`은 보이는 추론 추적을 생성합니다 (OpenAI의 o1 스타일 모델과 유사). Moonshot은 사고 모드가 활성화되었을 때 AIME 2026에서 96.4%, GPQA-Diamond에서 90.5%를 보고합니다.
사고 모드 켜기 (사고 모델의 기본값):
response = client.chat.completions.create(
model="kimi-k2.6-thinking",
messages=[{"role": "user", "content": "Prove sqrt(2) is irrational."}],
)
사고 모드 끄기:
response = client.chat.completions.create(
model="kimi-k2.6-thinking",
messages=[{"role": "user", "content": "Quick: what's 17 * 23?"}],
extra_body={"thinking": {"type": "disabled"}},
)
추론 추적은 응답의 `reasoning` 필드에 반환됩니다. 이를 최종 사용자에게 숨기고 최종 답변만 표시하거나, 디버그 로그로 파이프할 수 있습니다.
9단계: 에이전트 스웜
에이전트 스웜은 배울 가치가 가장 큰 기능입니다. Kimi K2.6 블로그에 따르면: 최대 300개의 서브 에이전트, 4,000개 이상의 조정된 단계, K2.5보다 3배 향상된 용량입니다.
플랫폼의 에이전트 매개변수를 통해 호출합니다:
response = client.chat.completions.create(
model="kimi-k2.6",
messages=[{
"role": "user",
"content": "Build a 5-page marketing site for a coffee brand with responsive design and a newsletter signup."
}],
extra_body={
"agent": {
"type": "swarm",
"max_agents": 30,
"max_steps": 4000
}
},
)
스웜 호출은 몇 분 또는 몇 시간 동안 실행됩니다. 세 가지 실용적인 팁:
- 스트리밍을 사용하십시오. 진행 상황을 확인하고 잘못된 실행을 조기에 중단하고 싶을 것입니다.
- `max_agents`를 제한하십시오. 300이 상한선이며, 대부분의 작업에서는 10~30개가 더 예측 가능합니다.
- 예산을 설정하십시오. 긴 스웜 작업은 토큰을 빠르게 소모할 수 있습니다. 각 응답에 `usage`를 기록하고 사용하는 모든 메트릭 스택으로 파이프하여 경고를 설정하십시오.
Kimi 블로그는 13시간 동안 4,000줄 이상의 코드를 수정한 데모 실행을 설명합니다. 아키텍처가 이를 가능하게 하며, API 플래그는 단지 이를 켜는 역할만 합니다.
10단계: Apidog로 모든 것을 테스트하기
위의 각 섹션은 다른 본문 형태, 헤더 요구 사항 또는 응답 형식을 소개합니다. Apidog는 디버깅 루프를 시각적인 워크플로로 전환합니다.

Apidog에서 Kimi K2.6 설정
- Apidog 다운로드 및 프로젝트 생성.
- `kimi-prod` 환경을 두 개의 변수와 함께 생성: `BASE_URL = https://api.moonshot.ai/v1` 및 `KIMI_API_KEY = sk-...`.
- 새로운 API 요청: `POST {{BASE_URL}}/chat/completions`.
- 헤더: `Authorization: Bearer {{KIMI_API_KEY}}`, `Content-Type: application/json`.
- 본문 (스트리밍 예제):
{
"model": "kimi-k2.6",
"messages": [{ "role": "user", "content": "Hello, Kimi K2.6!" }],
"stream": true
}
- 보내기를 클릭합니다. 토큰은 실시간으로 응답 패널로 스트리밍됩니다.
Apidog가 제공하는 추가 기능
- OpenAI 채팅 완료 사양에 대한 스키마 유효성 검사로, 누락된 필드를 즉시 표시합니다.
- 이상한 응답을 생성한 정확한 호출을 재생할 수 있도록 요청 기록.
- 클릭 한 번으로 개발, 스테이징, 프로덕션 키 간 환경 전환.
- 프로젝트 내보내기를 통한 팀 공유; 50명 이상의 엔지니어 팀을 위한 API 테스트를 참조하십시오.
- Moonshot에 문제가 발생하거나 오프라인일 때를 위한 모의 서버.
- Kimi의 스트리밍 형식을 깨끗하게 처리하는 SSE 스트림 지원 (많은 API 도구는 그렇지 않음).
에디터 내 테스트를 위해 Apidog는 VS Code 확장으로도 제공됩니다. 현재 Postman에 묶여 있다면, Postman 없이 API 테스트를 수행하는 방법이 전환 과정을 안내합니다.
번거롭지 않은 오류 처리
Moonshot은 표준 HTTP 상태 코드를 사용합니다:
- 400: 잘못된 요청. 일반적으로 잘못된 형식의 본문 또는 잘못된 모델 이름.
- 401: 인증 실패. 키가 없거나, 잘못되었거나, 만료됨.
- 429: 속도 제한 또는 할당량 소진.
- 500: 서버 오류. 지수적 백오프(exponential backoff)로 재시도.
- 529: 과부하. 몇 초 후에 재시도.
재시도 래퍼:
import time
from openai import OpenAI, RateLimitError, APIError
def call_kimi(messages, max_retries=5):
for attempt in range(max_retries):
try:
return client.chat.completions.create(
model="kimi-k2.6",
messages=messages,
)
except RateLimitError:
time.sleep(2 ** attempt)
except APIError as e:
if e.status_code >= 500 and attempt < max_retries - 1:
time.sleep(2 ** attempt)
else:
raise
raise RuntimeError("Kimi K2.6 failed after retries")
스트림 중간 연결 끊김의 경우, 수신된 토큰을 추적하고 연결이 끊어지면 "여기서부터 계속" 지시로 다시 시작하십시오. 98,304 토큰의 추론 출력 상한선은 긴 스트림이 오류가 아니라 정상임을 의미합니다.
비용 관리
Moonshot은 kimi.com/membership/pricing에 가격을 게시합니다. 비용을 예측 가능하게 유지하기 위한 세 가지 프로덕션 수준 팁:
- `max_tokens`를 제한하십시오. 사용 사례에 맞는 최소값으로 설정하십시오. 챗봇 답변에는 2,048이면 충분합니다.
- 시스템 프롬프트를 캐시하십시오. Moonshot의 프롬프트 캐싱은 반복되는 시스템 메시지에 대해 작동합니다. 정적 지시를 먼저 두십시오.
- `usage`를 기록하십시오. 모든 응답에는 `prompt_tokens`, `completion_tokens`, `total_tokens`가 포함됩니다. 이를 Prometheus 또는 사용하는 모든 메트릭 스택으로 파이프하고 경고를 설정하십시오.
생산 패턴: GitHub 문제 해결 에이전트
다음은 GitHub 문제를 읽고, 관련 코드를 찾고, 수정 사항을 제안하고, 테스트를 실행하는 에이전트이며, Kimi K2.6 도구 호출 루프를 중심으로 구성됩니다:
from openai import OpenAI
import os, json
client = OpenAI(
api_key=os.getenv("KIMI_API_KEY"),
base_url="https://api.moonshot.ai/v1",
)
tools = [
{"type": "function", "function": {
"name": "read_file",
"description": "Read a file in the repo.",
"parameters": {
"type": "object",
"properties": {"path": {"type": "string"}},
"required": ["path"]
}
}},
{"type": "function", "function": {
"name": "search_code",
"description": "Ripgrep the codebase for a pattern.",
"parameters": {
"type": "object",
"properties": {"query": {"type": "string"}},
"required": ["query"]
}
}},
{"type": "function", "function": {
"name": "run_tests",
"description": "Run the project test suite.",
"parameters": {"type": "object", "properties": {}}
}},
]
def tool_dispatch(name, args):
if name == "read_file":
with open(args["path"]) as f:
return f.read()
if name == "search_code":
return run_ripgrep(args["query"])
if name == "run_tests":
return run_pytest()
raise ValueError(f"Unknown tool: {name}")
messages = [
{"role": "system", "content": "You are a senior engineer. Fix the described bug."},
{"role": "user", "content": "Issue: login form submits twice on slow networks."}
]
while True:
resp = client.chat.completions.create(
model="kimi-k2.6",
messages=messages,
tools=tools,
)
msg = resp.choices[0].message
messages.append(msg)
if not msg.tool_calls:
print(msg.content)
break
for call in msg.tool_calls:
result = tool_dispatch(call.function.name, json.loads(call.function.arguments))
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": result,
})
이것은 `extra_body` 스웜 구성을 추가하여 에이전트 스웜으로 확장됩니다. 또한 human-in-the-loop 체크포인트를 원한다면 Hermes 다중 에이전트 스택과도 잘 작동합니다.
FAQ
Moonshot 전용 SDK가 필요한가요?아니요. `base_url`을 변경하면 OpenAI Python 및 Node SDK가 작동합니다.
API는 속도 제한이 있나요?예. 제한은 티어 및 사용 기록에 따라 달라집니다. 대시보드를 확인하십시오.
Kimi K2.6은 LangChain, LlamaIndex, Vercel AI SDK와 호환되나요?예. OpenAI 호환 기본 URL을 허용하는 모든 프레임워크가 작동합니다.
Kimi K2.6은 JSON 모드를 지원하나요?예. 유효한 JSON 출력을 위해서는 `response_format: {"type": "json_object"}`를, 엄격한 스키마를 위해서는 `{"type": "json_schema", "json_schema": {...}}`를 전달하십시오.
정확히 컨텍스트 창 크기는 얼마인가요?공식 블로그에 따르면 262,144 입력 토큰, 추론 작업의 경우 최대 98,304 출력 토큰입니다.
API를 통해 Kimi K2.6을 미세 조정할 수 있나요?아직은 안 됩니다. 현재로서는 미세 조정은 오픈 가중치를 자체 하드웨어에서 실행하는 것을 의미합니다.
`kimi-k2.6`과 `kimi-k2.6-thinking`의 차이점은 무엇인가요?`kimi-k2.6`은 빠른 에이전트 모델입니다. `kimi-k2.6-thinking`은 추론 단계를 노출하며 수학, 논리, 어려운 계획에 최적화되어 있습니다 (AIME 2026: 96.4%, GPQA-Diamond: 90.5%).
무료 티어가 있나요?Cloudflare Workers AI, kimi.com 채팅, 자체 호스팅 옵션에 대한 Kimi K2.6 무료 액세스 가이드를 참조하십시오.
요약
Kimi K2.6 API는 기본 URL과 API 키라는 두 가지 변경 사항만으로 모든 OpenAI 호환 툴체인에 통합될 수 있습니다. 이를 통해 262K 컨텍스트 창, 300개의 서브 에이전트를 가진 에이전트 스웜, 96.60% 호출 성공률로 조정된 도구 호출 기능을 사용할 수 있으며, 호스팅된 API를 사용하지 않으려는 경우 오픈 소스 가중치를 대체 옵션으로 활용할 수 있습니다.
새로운 통합을 구축하는 경우, 먼저 Apidog를 사용하여 각 엔드포인트를 구성하고 확인하십시오. 이를 통해 스키마 오류, 스트리밍 버그, 인증 문제를 코드베이스에 반영하기 전에 파악할 수 있습니다. 그런 다음 작동하는 요청을 Python 또는 Node 서비스로 자신감 있게 포팅하십시오.
참고 자료 및 추가 읽을거리
- 공식 발표: Kimi K2.6 — Moonshot AI 블로그
- API 빠른 시작: platform.kimi.ai
- API 플랫폼: platform.moonshot.ai
- Kimi Code 터미널 에이전트: kimi.com/code
- 가격: kimi.com/membership/pricing
- 오픈 가중치: huggingface.co/moonshotai/Kimi-K2.6
- 관련 Apidog 가이드: Kimi K2.6이란 무엇인가, 무료 Kimi K2.6 사용 방법, OpenRouter에서 Qwen 3.6 무료 사용, Qwen3.5-Omni API 사용 방법, VS Code 내 Apidog 사용 방법, Postman 없이 API 테스트, 50명 이상 엔지니어 팀을 위한 API 테스트, Claude Code 워크플로, Cursor Composer 2.
