Kimi K2.6 API 사용법

Ashley Innocent

Ashley Innocent

21 April 2026

Kimi K2.6 API 사용법

Apidog 엔터프라이즈

온프레미스 배포

SSO & RBAC

SOC 2 준수

Apidog Enterprise 살펴보기

Moonshot AI의 Kimi K2.6 발표는 코딩, 장기 실행, 에이전트 스웜을 위한 새로운 오픈 소스 최첨단 기술로 자리매김합니다. 이 API는 OpenAI와 호환되며, `https://api.moonshot.ai/v1`에 호스팅되어 있고, 플랫폼에 문서화되어 있습니다. OpenAI SDK가 설치되어 있다면 약 5분 안에 실제 요청을 보낼 수 있습니다.

이 가이드에서는 인증, 첫 번째 요청, 스트리밍, 도구 호출, 시각 및 비디오 입력, 사고 모드, 그리고 300개의 서브 에이전트로 에이전트 스웜을 구동하는 방법을 안내하며, 통합 코드를 작성하기 전에 Apidog로 모든 엔드포인트를 테스트하는 방법을 보여줍니다.

💡
빠른 경로: 통합 코드를 커밋하기 전에 Apidog에서 Kimi K2.6 API를 시각적으로 테스트하세요. 한 번의 가져오기, 한 번의 Bearer 토큰으로 전체 기록 및 스키마 유효성 검사를 통해 실제 스트리밍 요청을 할 수 있습니다. Apidog를 무료로 다운로드하세요.
button

TL;DR: 60초 만에 Kimi K2.6 API

최소 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는 프로덕션 환경에서 다음 모든 것을 가능하게 합니다:

Claude Code 컴퓨터 사용, 나만의 Claude Code 구축, 또는 Cursor Composer 2와 같은 범주의 도구를 구축하는 경우, K2.6 API는 모델 레이어에서 직접적인 교체가 가능합니다.

1단계: API 키 받기

  1. platform.moonshot.ai (또는 platform.kimi.ai)로 이동하여 가입합니다. 이메일 또는 Google OAuth로 가능합니다.
  2. 계정을 확인합니다. 해외 사용자는 SMS 인증이 필요할 수 있습니다.
  3. 결제 정보를 추가합니다. Moonshot은 일반적으로 새 계정에 소량의 무료 크레딧을 제공합니다.
  4. 대시보드에서 API 키를 열고 키 생성을 클릭합니다.
  5. 키를 즉시 복사합니다 (한 번만 표시됩니다).
  6. 키를 내보냅니다:
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 관련 두 가지 참고 사항:

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
        }
    },
)

스웜 호출은 몇 분 또는 몇 시간 동안 실행됩니다. 세 가지 실용적인 팁:

  1. 스트리밍을 사용하십시오. 진행 상황을 확인하고 잘못된 실행을 조기에 중단하고 싶을 것입니다.
  2. `max_agents`를 제한하십시오. 300이 상한선이며, 대부분의 작업에서는 10~30개가 더 예측 가능합니다.
  3. 예산을 설정하십시오. 긴 스웜 작업은 토큰을 빠르게 소모할 수 있습니다. 각 응답에 `usage`를 기록하고 사용하는 모든 메트릭 스택으로 파이프하여 경고를 설정하십시오.

Kimi 블로그는 13시간 동안 4,000줄 이상의 코드를 수정한 데모 실행을 설명합니다. 아키텍처가 이를 가능하게 하며, API 플래그는 단지 이를 켜는 역할만 합니다.

10단계: Apidog로 모든 것을 테스트하기

위의 각 섹션은 다른 본문 형태, 헤더 요구 사항 또는 응답 형식을 소개합니다. Apidog는 디버깅 루프를 시각적인 워크플로로 전환합니다.

Apidog에서 Kimi K2.6 설정

  1. Apidog 다운로드 및 프로젝트 생성.
  2. `kimi-prod` 환경을 두 개의 변수와 함께 생성: `BASE_URL = https://api.moonshot.ai/v1` 및 `KIMI_API_KEY = sk-...`.
  3. 새로운 API 요청: `POST {{BASE_URL}}/chat/completions`.
  4. 헤더: `Authorization: Bearer {{KIMI_API_KEY}}`, `Content-Type: application/json`.
  5. 본문 (스트리밍 예제):
{
  "model": "kimi-k2.6",
  "messages": [{ "role": "user", "content": "Hello, Kimi K2.6!" }],
  "stream": true
}
  1. 보내기를 클릭합니다. 토큰은 실시간으로 응답 패널로 스트리밍됩니다.

Apidog가 제공하는 추가 기능

에디터 내 테스트를 위해 Apidog는 VS Code 확장으로도 제공됩니다. 현재 Postman에 묶여 있다면, Postman 없이 API 테스트를 수행하는 방법이 전환 과정을 안내합니다.

번거롭지 않은 오류 처리

Moonshot은 표준 HTTP 상태 코드를 사용합니다:

재시도 래퍼:

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에 가격을 게시합니다. 비용을 예측 가능하게 유지하기 위한 세 가지 프로덕션 수준 팁:

생산 패턴: 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 서비스로 자신감 있게 포팅하십시오.

참고 자료 및 추가 읽을거리

Apidog에서 API 설계-첫 번째 연습

API를 더 쉽게 구축하고 사용하는 방법을 발견하세요