DEV Community

Cover image for วิธีใช้ Kimi K3 API?
Thanawat Wongchai
Thanawat Wongchai

Posted on • Originally published at apidog.com

วิธีใช้ Kimi K3 API?

Moonshot AI เปิดตัว Kimi K3 เมื่อวันที่ 16 กรกฎาคม 2026 โดยระบุว่าเป็นโมเดล 3T-class แบบเปิดตัวแรกของโลก ใช้สถาปัตยกรรม Mixture-of-Experts (MoE) ขนาด 2.8T พารามิเตอร์ และรองรับ context window สูงสุด 1,048,576 โทเค็น สำหรับนักพัฒนา จุดสำคัญคือ API ของ Kimi K3 ใช้รูปแบบที่เข้ากันได้กับ OpenAI SDK: หากโปรเจกต์ของคุณเรียก GPT หรือ OpenAI-compatible endpoint อยู่แล้ว คุณเพียงเปลี่ยน base_url, api_key และ model="kimi-k3" ก็เริ่มใช้งานได้ บทความนี้จะพาคุณตั้งค่า API key, เรียกใช้งานผ่าน Python, JavaScript และ cURL, เปิดสตรีมมิ่ง, ใช้ tool calling, JSON mode, reasoning_effort, รวมถึงตรวจสอบคำขอและ SSE แบบดิบด้วย Apidog

ลองใช้ Apidog วันนี้

สรุปย่อ (TL;DR)

  • Model ID บน Kimi คือ kimi-k3
  • หากเรียกผ่าน OpenRouter ให้ใช้ moonshotai/kimi-k3
  • API ใช้รูปแบบ OpenAI Chat Completions: ตั้งค่า base_url, api_key และ model
  • ยืนยัน base URL ที่ใช้กับบัญชีของคุณจาก platform.kimi.ai โดย Kimi เคยใช้ https://api.moonshot.ai/v1
  • รองรับ context window ขนาด 1M โทเค็น
  • ราคาที่ระบุคือ:
    • cache-hit input: 0.30 ดอลลาร์ / 1M โทเค็น
    • cache-miss input: 3.00 ดอลลาร์ / 1M โทเค็น
    • output: 15.00 ดอลลาร์ / 1M โทเค็น
  • รองรับ streaming, tool calling, JSON mode, structured output และ reasoning_effort
  • สำหรับงานเขียนโค้ดทั่วไปที่มีปริมาณสูง kimi-k2-7-code อาจคุ้มค่ากว่า
  • ใช้ Apidog เพื่อตรวจสอบ request, response, SSE stream และทดสอบ K3 เทียบกับ K2.7

เลือกโมเดลให้ตรงกับงาน

ก่อนเริ่มเขียนโค้ด ให้แยกงานที่ต้องการออกเป็นสองกลุ่ม:

งาน โมเดลที่ควรพิจารณา
งาน reasoning ซับซ้อน, agent หลายรอบ, context ขนาดใหญ่, orchestration เครื่องมือ kimi-k3
งานเขียนโค้ดซ้ำ ๆ, CI tests, งานปริมาณมากที่ต้องคุมต้นทุน kimi-k2-7-code

Kimi K3 เป็นโมเดลแนวหน้าของตระกูล Kimi ที่เน้นงานเขียนโค้ดซับซ้อน งาน agentic ระยะยาว และงานความรู้ที่ต้องใช้บริบทขนาดใหญ่ อย่างไรก็ตาม ต้นทุนโทเค็นเอาต์พุตสูงกว่าโมเดลอื่นในกลุ่ม และ โพสต์เปิดตัวของ Moonshot ระบุว่า K3 ยังตามหลัง Claude Fable 5 และ GPT-5.6 Sol ในการเปรียบเทียบภายในบางรายการ

Kimi K3 model overview

หากคุณต้องการประเมิน K2.7 สำหรับงานที่เน้นต้นทุน ให้ดู:

แนวทางใช้งานที่ตรงไปตรงมาคือ:

  1. เริ่มจาก kimi-k2-7-code สำหรับงาน routine และ throughput สูง
  2. ย้ายงานที่ต้องใช้ context ยาว, reasoning ลึก หรือ agentic tool coordination ไปที่ kimi-k3
  3. ทดสอบ prompt เดียวกันกับทั้งสองโมเดลก่อนตัดสินใจใช้งานจริง

1. สร้าง API key และตั้งค่า environment

ไปที่ platform.kimi.ai แล้วลงชื่อเข้าใช้ จากนั้นสร้าง API key ใหม่ในส่วน API keys

Kimi platform API key setup

ขั้นตอนที่ควรทำ:

  1. เปิดหน้า API keys ในคอนโซล
  2. สร้างคีย์ใหม่
  3. คัดลอกคีย์และเก็บไว้ใน secret manager หรือ password manager
  4. ตรวจสอบเครดิตหรือระดับการเรียกเก็บเงิน
  5. จด base URL ที่แสดงในคอนโซลของบัญชีคุณ

Kimi เคยใช้ base URL นี้:

https://api.moonshot.ai/v1
Enter fullscreen mode Exit fullscreen mode

แต่ควรใช้ค่าที่คอนโซลแสดงสำหรับบัญชีของคุณเสมอ

ตั้งค่า environment variables

export KIMI_API_KEY="sk-your-key-here"
export KIMI_BASE_URL="https://api.moonshot.ai/v1"
Enter fullscreen mode Exit fullscreen mode

อย่า hard-code API key ลงใน source code, commit Git หรือ screenshot ของคำขอ API

สำหรับรายละเอียดการคิดราคา cache-hit และ cache-miss ดู คู่มือราคา Kimi K3


2. เรียก kimi-k3 ครั้งแรก

Kimi K3 ใช้รูปแบบ OpenAI Chat Completions ดังนั้น flow พื้นฐานคือ:

  1. สร้าง OpenAI client
  2. ตั้ง api_key
  3. ตั้ง base_url
  4. เรียก chat.completions.create()
  5. กำหนด model="kimi-k3"

Python

ติดตั้ง SDK ก่อน:

pip install openai
Enter fullscreen mode Exit fullscreen mode

จากนั้นสร้างไฟล์ kimi.py:

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["KIMI_API_KEY"],
    # ยืนยัน URL นี้จาก platform.kimi.ai ก่อนใช้งานจริง
    base_url=os.environ["KIMI_BASE_URL"],
)

response = client.chat.completions.create(
    model="kimi-k3",
    messages=[
        {
            "role": "system",
            "content": "คุณคือผู้ช่วยเขียนโค้ดที่แม่นยำ",
        },
        {
            "role": "user",
            "content": "อธิบายว่า token bucket rate limiter ทำงานอย่างไรในหนึ่งย่อหน้า",
        },
    ],
)

print(response.choices[0].message.content)
Enter fullscreen mode Exit fullscreen mode

รันคำสั่ง:

python kimi.py
Enter fullscreen mode Exit fullscreen mode

JavaScript / TypeScript

ติดตั้ง SDK:

npm install openai
Enter fullscreen mode Exit fullscreen mode

ตัวอย่าง kimi.mjs:

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.KIMI_API_KEY,
  // ยืนยัน URL นี้จาก platform.kimi.ai ก่อนใช้งานจริง
  baseURL: process.env.KIMI_BASE_URL,
});

const response = await client.chat.completions.create({
  model: "kimi-k3",
  messages: [
    {
      role: "system",
      content: "คุณคือผู้ช่วยเขียนโค้ดที่แม่นยำ",
    },
    {
      role: "user",
      content: "อธิบายว่า token bucket rate limiter ทำงานอย่างไรในหนึ่งย่อหน้า",
    },
  ],
});

console.log(response.choices[0].message.content);
Enter fullscreen mode Exit fullscreen mode

รันด้วย:

node kimi.mjs
Enter fullscreen mode Exit fullscreen mode

cURL

หากต้องการตรวจสอบ request โดยไม่ใช้ SDK ให้เริ่มด้วย cURL:

curl "$KIMI_BASE_URL/chat/completions" \
  -H "Authorization: Bearer $KIMI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kimi-k3",
    "messages": [
      {
        "role": "user",
        "content": "อธิบายว่า token bucket rate limiter ทำงานอย่างไรในหนึ่งย่อหน้า"
      }
    ]
  }'
Enter fullscreen mode Exit fullscreen mode

แก้ปัญหาพื้นฐาน

สถานะ สาเหตุที่พบบ่อย สิ่งที่ควรตรวจสอบ
401 Unauthorized API key ไม่ถูกต้อง หรือไม่ได้ตั้งค่า ตรวจ KIMI_API_KEY
404 Not Found base URL หรือ path ไม่ถูกต้อง ตรวจ KIMI_BASE_URL และ /chat/completions
ถูกปฏิเสธเพราะเครดิตไม่พอ เครดิตหรือ billing ไม่พร้อม ตรวจหน้า billing ในคอนโซล
SDK ปฏิเสธพารามิเตอร์ใหม่ SDK ยังไม่รู้จักฟิลด์นั้น ใช้ extra_body

ดูตัวเลือกของไคลเอนต์เพิ่มเติมได้จาก OpenAI Python SDK


3. รับคำตอบแบบสตรีมมิ่ง

สำหรับ chat UI หรือ agent ที่ตอบยาว ควรเปิด streaming เพื่อแสดง token ทันทีที่มาถึง แทนการรอ response ทั้งก้อน

Python streaming

stream = client.chat.completions.create(
    model="kimi-k3",
    messages=[
        {
            "role": "user",
            "content": "เขียนบทกวี 6 บรรทัดเกี่ยวกับ flaky tests",
        }
    ],
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[0].delta

    if delta.content:
        print(delta.content, end="", flush=True)
Enter fullscreen mode Exit fullscreen mode

เบื้องหลัง SDK จะอ่าน Server-Sent Events (SSE) ซึ่งมีลักษณะคล้าย:

data: {"choices":[{"delta":{"content":"..."}}]}

data: [DONE]
Enter fullscreen mode Exit fullscreen mode

JavaScript streaming

const stream = await client.chat.completions.create({
  model: "kimi-k3",
  messages: [
    {
      role: "user",
      content: "เขียนบทกวี 6 บรรทัดเกี่ยวกับ flaky tests",
    },
  ],
  stream: true,
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
Enter fullscreen mode Exit fullscreen mode

เมื่อ streaming มีปัญหา อย่าดูเฉพาะผลลัพธ์จาก SDK เพราะ SDK ซ่อนรายละเอียด SSE ไว้ การดูเฟรม data: แบบดิบจะช่วยแยกได้ว่าเกิดปัญหาที่ client, network หรือ endpoint


4. ใช้ tool calling กับ Kimi K3

Kimi K3 รองรับ function calling, การกำหนด tool choice และการโหลดเครื่องมือแบบไดนามิก คุณสามารถใช้รูปแบบนี้สร้าง agent ที่:

  • อ่านไฟล์
  • เรียก internal API
  • ค้นหาข้อมูล
  • รันคำสั่ง
  • ตรวจสถานะ deployment
  • ดึงข้อมูลจากฐานข้อมูล

โมเดลจะ ไม่รันฟังก์ชันแทนคุณ แต่จะส่งชื่อฟังก์ชันและ JSON arguments กลับมา จากนั้นแอปของคุณต้องเป็นผู้รัน tool และส่งผลลัพธ์กลับไป

ขั้นที่ 1: ประกาศ tool

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "รับสภาพอากาศปัจจุบันสำหรับเมืองใดเมืองหนึ่ง",
            "parameters": {
                "type": "object",
                "properties": {
                    "city": {
                        "type": "string",
                        "description": "ชื่อเมือง เช่น สิงคโปร์",
                    },
                },
                "required": ["city"],
            },
        },
    }
]

messages = [
    {
        "role": "user",
        "content": "ตอนนี้สภาพอากาศในสิงคโปร์เป็นอย่างไร?",
    }
]

first = client.chat.completions.create(
    model="kimi-k3",
    messages=messages,
    tools=tools,
    tool_choice="auto",
)

tool_call = first.choices[0].message.tool_calls[0]

print(tool_call.function.name)
print(tool_call.function.arguments)
Enter fullscreen mode Exit fullscreen mode

ตัวอย่างผลลัพธ์:

get_weather
{"city":"Singapore"}
Enter fullscreen mode Exit fullscreen mode

ขั้นที่ 2: รัน tool ในแอปของคุณ

ในตัวอย่างนี้ เราจำลองผลลัพธ์จาก weather service:

import json

weather_result = {
    "city": "Singapore",
    "temp_c": 31,
    "sky": "humid",
}
Enter fullscreen mode Exit fullscreen mode

ขั้นที่ 3: ส่งผลลัพธ์กลับไปให้โมเดล

messages.append(first.choices[0].message)

messages.append({
    "role": "tool",
    "tool_call_id": tool_call.id,
    "content": json.dumps(weather_result),
})

final = client.chat.completions.create(
    model="kimi-k3",
    messages=messages,
    tools=tools,
)

print(final.choices[0].message.content)
Enter fullscreen mode Exit fullscreen mode

ควบคุมการเลือก tool

บังคับให้โมเดลต้องเลือก tool:

tool_choice = "required"
Enter fullscreen mode Exit fullscreen mode

บังคับให้เรียกฟังก์ชันเฉพาะ:

tool_choice = {
    "type": "function",
    "function": {
        "name": "get_weather",
    },
}
Enter fullscreen mode Exit fullscreen mode

สำหรับ agent แบบหลายรอบ ให้ส่ง message history กลับไปครบถ้วน อย่าตัดบริบทก่อนหน้าของผู้ช่วยทิ้งโดยไม่จำเป็น เพราะ K3 ถูกฝึกให้ทำงานกับประวัติ reasoning ต่อเนื่อง และคุณภาพอาจไม่เสถียรหากบริบทขาดช่วง


5. ใช้ JSON mode และ structured output

หาก response จะถูกส่งต่อไปยังระบบอื่น อย่า parse จากข้อความอิสระถ้าไม่จำเป็น ให้ขอ JSON ตั้งแต่ต้น

JSON mode

response = client.chat.completions.create(
    model="kimi-k3",
    messages=[
        {
            "role": "system",
            "content": "ส่งคืนเฉพาะ JSON ที่ถูกต้องเท่านั้น ห้ามใช้ข้อความ ห้ามใช้มาร์กดาวน์",
        },
        {
            "role": "user",
            "content": "ดึงชื่อและบทบาทจาก: 'Ada Lovelace, นักคณิตศาสตร์'.",
        },
    ],
    response_format={"type": "json_object"},
)

print(response.choices[0].message.content)
Enter fullscreen mode Exit fullscreen mode

ตัวอย่างผลลัพธ์:

{
  "name": "Ada Lovelace",
  "role": "นักคณิตศาสตร์"
}
Enter fullscreen mode Exit fullscreen mode

แม้จะใช้ JSON mode ก็ควร parse และ validate response ฝั่งแอปเสมอ:

import json

result = json.loads(response.choices[0].message.content)

if "name" not in result or "role" not in result:
    raise ValueError("JSON response ไม่มีฟิลด์ที่ต้องการ")
Enter fullscreen mode Exit fullscreen mode

Structured output ด้วย JSON Schema

หาก SDK และบัญชีของคุณรองรับ json_schema ให้กำหนด schema ที่ชัดเจน:

response = client.chat.completions.create(
    model="kimi-k3",
    messages=[
        {
            "role": "user",
            "content": "ดึงชื่อและบทบาทจาก: 'Ada Lovelace, นักคณิตศาสตร์'.",
        }
    ],
    response_format={
        "type": "json_schema",
        "json_schema": {
            "name": "person",
            "schema": {
                "type": "object",
                "properties": {
                    "name": {"type": "string"},
                    "role": {"type": "string"},
                },
                "required": ["name", "role"],
            },
        },
    },
)
Enter fullscreen mode Exit fullscreen mode

ก่อนนำ json_schema ไปใช้ใน production ให้ตรวจสอบการรองรับจากคอนโซล Kimi สำหรับบัญชีของคุณ หากยังไม่แน่ใจ ใช้ json_object พร้อม validation ฝั่งแอปเป็นทางเลือกที่ปลอดภัยกว่า

Kimi ยังมี partial mode และ web search ซึ่งใช้ได้เมื่อคุณต้องการเติมคำตอบล่วงหน้า หรือทำงานกับข้อมูลล่าสุด


6. ตั้งค่า reasoning_effort

Kimi K3 มีพารามิเตอร์ reasoning_effort สำหรับควบคุมระดับความพยายามในการให้เหตุผลก่อนสร้างคำตอบ

ปัจจุบันระดับที่ระบุว่าใช้งานได้คือ:

max
Enter fullscreen mode Exit fullscreen mode

ตัวอย่าง:

response = client.chat.completions.create(
    model="kimi-k3",
    messages=[
        {
            "role": "user",
            "content": "วางแผนการย้ายข้อมูลจาก REST ไปยัง GraphQL สำหรับ API ที่มี 40 ปลายทาง",
        }
    ],
    reasoning_effort="max",
)
Enter fullscreen mode Exit fullscreen mode

ใช้กับงานที่ต้องการการวางแผนหรือวิเคราะห์เชิงลึก เช่น:

  • วางแผน migration
  • วิเคราะห์ dependency ใน monorepo
  • แตกงาน refactor ขนาดใหญ่
  • สร้าง rollout plan
  • ออกแบบ agent workflow

ความพยายามในการให้เหตุผลที่สูงขึ้นอาจเพิ่มจำนวน output tokens และความหน่วงเวลา ดังนั้นไม่ควรใช้กับทุก request โดยอัตโนมัติ

เมื่อ SDK ยังไม่รองรับฟิลด์นี้

หาก OpenAI SDK เวอร์ชันของคุณปฏิเสธ reasoning_effort ให้ส่งผ่าน extra_body:

response = client.chat.completions.create(
    model="kimi-k3",
    messages=[
        {
            "role": "user",
            "content": "วางแผนการย้ายข้อมูลจาก REST ไปยัง GraphQL",
        }
    ],
    extra_body={
        "reasoning_effort": "max",
    },
)
Enter fullscreen mode Exit fullscreen mode

extra_body มีประโยชน์สำหรับฟิลด์เฉพาะผู้ให้บริการที่ endpoint รองรับแล้ว แต่ SDK เวอร์ชันที่คุณติดตั้งยังไม่รู้จัก


7. ลดต้นทุนด้วย context caching

Kimi K3 ระบุราคาต่างกันระหว่าง input ที่ cache-hit และ cache-miss:

ประเภท ราคา / 1M โทเค็น
Cache-hit input 0.30 ดอลลาร์
Cache-miss input 3.00 ดอลลาร์
Output 15.00 ดอลลาร์

ความแตกต่างของ cache-hit กับ cache-miss คือส่วน prefix ของ request ที่เหมือนกับ request ก่อนหน้า สามารถนำ state ที่คำนวณไว้กลับมาใช้ใหม่ได้

โครงสร้าง prompt ที่ควรใช้

วางข้อมูลคงที่ไว้ด้านหน้าเสมอ:

messages = [
    {
        "role": "system",
        "content": """
คุณคือผู้ช่วยสำหรับ codebase นี้
กฎการตอบ:
- ให้คำตอบกระชับ
- อ้างอิงชื่อไฟล์เมื่อเสนอการแก้ไข
- อย่าสร้าง API ที่ไม่มีอยู่จริง
""",
    },
    {
        "role": "user",
        "content": "ตรวจสอบ src/auth/login.ts และเสนอการปรับปรุง error handling",
    },
]
Enter fullscreen mode Exit fullscreen mode

หากคุณส่ง system prompt, repository context หรือเอกสารชุดเดิมซ้ำหลายครั้ง ให้รักษาข้อความเหล่านั้น:

  • ไว้ต้น request
  • ใช้เนื้อหาเดิม
  • เรียงลำดับเดิม
  • ไม่แก้ whitespace โดยไม่จำเป็น

รูปแบบนี้ช่วยเพิ่มโอกาสเกิด cache-hit และลดต้นทุน input ลงอย่างมาก


8. ทดสอบและดีบัก Kimi K3 ด้วย Apidog

SDK ทำให้การเรียก API ง่ายขึ้น แต่ก็ซ่อนรายละเอียด HTTP, headers, request body และ SSE frames ไปพร้อมกัน เมื่อเกิดปัญหา เช่น:

  • stream หยุดกลางทาง
  • tool_calls ส่ง arguments ผิดรูปแบบ
  • response ไม่ตรง JSON schema
  • key หรือ base URL ผิด
  • model ตอบต่างจากที่คาด

คุณควรตรวจ request และ response แบบดิบ

Apidog ช่วยให้คุณส่งคำขอ Kimi K3 แบบ HTTP โดยตรง ดู SSE ทีละเฟรม และเก็บ API key เป็น environment variable แทนการใส่ค่าไว้ใน request body

Debug Kimi K3 API requests in Apidog

สร้าง request ใน Apidog

  1. สร้าง HTTP request ใหม่
  2. ตั้ง method เป็น POST
  3. ตั้ง URL เป็น:
{{KIMI_BASE_URL}}/chat/completions
Enter fullscreen mode Exit fullscreen mode
  1. เพิ่ม headers:
Authorization: Bearer {{KIMI_API_KEY}}
Content-Type: application/json
Enter fullscreen mode Exit fullscreen mode
  1. ตั้งค่า environment variables:
KIMI_BASE_URL=https://api.moonshot.ai/v1
KIMI_API_KEY=sk-your-key-here
Enter fullscreen mode Exit fullscreen mode
  1. ใส่ request body:
{
  "model": "kimi-k3",
  "messages": [
    {
      "role": "user",
      "content": "อธิบายว่า token bucket rate limiter ทำงานอย่างไร"
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

ตรวจสอบ streaming แบบดิบ

เพิ่ม "stream": true:

{
  "model": "kimi-k3",
  "stream": true,
  "messages": [
    {
      "role": "user",
      "content": "เขียนบทกวี 6 บรรทัดเกี่ยวกับ flaky tests"
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

จากนั้นตรวจสอบว่า SSE stream มี:

data: ...
Enter fullscreen mode Exit fullscreen mode

และปิดท้ายด้วย:

data: [DONE]
Enter fullscreen mode Exit fullscreen mode

หาก SDK ของคุณแสดงผลไม่ครบ แต่ Apidog เห็นเฟรมจาก server ครบ ปัญหาอาจอยู่ที่ client-side stream handling ไม่ใช่ endpoint

ดีบัก tool calling

ส่ง request ที่มี tools แล้วตรวจ response field:

{
  "tool_calls": [
    {
      "id": "call_...",
      "type": "function",
      "function": {
        "name": "get_weather",
        "arguments": "{\"city\":\"Singapore\"}"
      }
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

ใช้จุดนี้ตรวจว่า:

  • โมเดลเลือก tool ถูกตัวหรือไม่
  • JSON arguments ถูกต้องหรือไม่
  • JSON Schema ของ tool คลุมเครือหรือไม่
  • แอปของคุณส่ง tool_call_id กลับถูกต้องหรือไม่

คุณยังสามารถนำคำสั่ง cURL ที่ใช้งานได้ไป import ใน Apidog เพื่อบันทึกเป็น request ที่ทีมเรียกใช้ซ้ำได้ ดู workflow เพิ่มเติมได้จาก การทดสอบ API โดยไม่ต้องใช้ Postman

หาก agent ของคุณเชื่อมต่อกับโมเดลผ่าน MCP ดู คู่มือการดีบักด้วยภาพด้วยไคลเอนต์ Apidog MCP และ ดาวน์โหลด Apidog เพื่อทดลองกับ API key ของคุณเอง


9. กรณีใช้งานที่เหมาะกับ Kimi K3

Agent เขียนโค้ดระดับ repository

ใช้ context ขนาด 1M ร่วมกับ tools เพื่อให้ agent ทำงานข้ามไฟล์ได้ เช่น:

  1. อ่านโครงสร้าง repository
  2. วิเคราะห์ test failures
  3. เรียก test runner
  4. อ่าน logs
  5. แก้ไขโค้ด
  6. รันทดสอบซ้ำ

ให้วาง codebase context ที่ใช้ร่วมกันไว้ต้น prompt เพื่อเพิ่มโอกาส cache-hit

งานเอกสารขนาดใหญ่

ส่งสเปก, สัญญา, เอกสารออกแบบ หรือ research corpus เข้าไปใน context แล้วขอผลลัพธ์แบบ structured output เช่น:

{
  "requirements": [],
  "risks": [],
  "open_questions": []
}
Enter fullscreen mode Exit fullscreen mode

กรณีนี้เหมาะกับ json_schema และควรรักษาเอกสารหลักไว้เป็น prefix คงที่

การวางแผน migration และ refactor

ใช้ reasoning_effort="max" กับช่วงวางแผน เช่น:

  • แตก REST endpoints เป็น GraphQL schema
  • วางแผนแยก monolith
  • จัดลำดับการย้าย database
  • ประเมินผลกระทบของ dependency upgrade

หลังจากได้แผนแล้ว งานแก้ไขเชิงกลไกที่ทำซ้ำได้อาจย้ายไปโมเดลที่ต้นทุนต่ำกว่า

คำตอบที่อิงข้อมูลล่าสุด

เมื่อเชื่อมกับ web search หรือ tools ที่ดึงข้อมูลจากระบบของคุณ K3 สามารถใช้ตอบคำถามที่ไม่ควรพึ่งพาเฉพาะความรู้จากการฝึก เช่น:

  • สถานะ deployment ล่าสุด
  • release notes ล่าสุด
  • สถานะ incident
  • ข้อมูลจาก internal API
  • เอกสารเวอร์ชันล่าสุด

สรุป

การเริ่มใช้ Kimi K3 ผ่าน API มีแกนหลักเพียงสามค่า:

base_url
api_key
model="kimi-k3"
Enter fullscreen mode Exit fullscreen mode

หลังจากนั้น คุณสามารถใช้รูปแบบ OpenAI Chat Completions เดิมสำหรับ:

  • streaming
  • tool calling
  • JSON mode
  • structured output
  • reasoning_effort

สิ่งที่ควรวางแผนก่อนขึ้น production คือ:

  1. ใช้ base URL จากคอนโซล Kimi ของบัญชีคุณ
  2. เก็บ API key ใน environment variable หรือ secret manager
  3. ออกแบบ prompt ให้ prefix คงที่เพื่อเพิ่ม cache-hit
  4. ใช้ K3 กับงาน reasoning, agentic workflow และ context ยาว
  5. ใช้ K2.7 กับงาน routine ปริมาณสูงเมื่อเหมาะสม
  6. ตรวจสอบ request และ SSE แบบดิบด้วย Apidog ก่อนเชื่อมเข้ากับแอปจริง

คำถามที่พบบ่อย (FAQ)

API model ID สำหรับ Kimi K3 คืออะไร?

บนแพลตฟอร์ม Kimi ให้ใช้:

kimi-k3
Enter fullscreen mode Exit fullscreen mode

หากเรียกผ่าน OpenRouter ให้ใช้:

moonshotai/kimi-k3
Enter fullscreen mode Exit fullscreen mode

ดูรายการโมเดลได้ที่ openrouter.ai/moonshotai/kimi-k3

ควรใช้ base URL ใด?

ให้ยืนยัน base URL จาก platform.kimi.ai เพราะเป็นค่าที่เชื่อถือได้สำหรับบัญชีของคุณ Kimi เคยใช้:

https://api.moonshot.ai/v1
Enter fullscreen mode Exit fullscreen mode

ควรเก็บค่าเป็น environment variable แทนการ hard-code:

export KIMI_BASE_URL="https://api.moonshot.ai/v1"
Enter fullscreen mode Exit fullscreen mode

Kimi K3 ใช้กับ OpenAI SDK ได้หรือไม่?

ได้ API ใช้รูปแบบ OpenAI Chat Completions ดังนั้น OpenAI Python และ JavaScript SDK ใช้งานได้หลังจากเปลี่ยน base_url และ model

สำหรับฟิลด์เฉพาะผู้ให้บริการที่ SDK ยังไม่รู้จัก ให้ใช้ extra_body

Kimi K3 มีค่าใช้จ่ายเท่าไร?

ราคาที่ระบุคือ:

  • 0.30 ดอลลาร์ / 1M cache-hit input tokens
  • 3.00 ดอลลาร์ / 1M cache-miss input tokens
  • 15.00 ดอลลาร์ / 1M output tokens

ดูรายละเอียดได้จาก คู่มือราคา Kimi K3

Context caching ช่วยอะไร?

เมื่อ prefix ของ request ตรงกับคำขอก่อนหน้า ระบบสามารถนำ state ที่คำนวณไว้กลับมาใช้ใหม่ ทำให้ค่า input tokens ของส่วนนั้นลดจาก 3.00 ดอลลาร์เป็น 0.30 ดอลลาร์ต่อ 1M โทเค็น

รักษา system prompt และ shared context ให้คงที่และอยู่ต้น request เพื่อเพิ่มโอกาสเกิด cache-hit

ควบคุมความพยายามในการคิดของโมเดลได้หรือไม่?

ได้ ผ่าน reasoning_effort โดยระดับที่ระบุว่ามีอยู่ปัจจุบันคือ:

max
Enter fullscreen mode Exit fullscreen mode

ตัวอย่าง:

reasoning_effort="max"
Enter fullscreen mode Exit fullscreen mode

ระดับ reasoning ที่สูงขึ้นอาจใช้ output tokens มากขึ้นและเพิ่ม latency

ควรเลือก Kimi K3 หรือ Kimi K2.7 Code?

เลือก kimi-k3 หากงานต้องใช้:

  • reasoning เชิงลึก
  • context 1M โทเค็น
  • agentic tool coordination
  • งานวิเคราะห์หรือวางแผนขนาดใหญ่

เลือก K2.7 เมื่อเป็นงานเขียนโค้ดทั่วไปที่มีปริมาณสูงและต้องคุมต้นทุน ดู เปรียบเทียบ Kimi K3 กับ Kimi K2.7 Code และ คู่มือ API Kimi K2.7 Code

ดีบัก streaming หรือ tool calling ที่เสียได้อย่างไร?

ส่ง request แบบดิบใน Apidog แล้ว:

  1. เปิด "stream": true เพื่อตรวจ SSE frames ทีละเฟรม
  2. ตรวจ data: [DONE]
  3. ตรวจ tool_calls
  4. ตรวจ JSON arguments ที่โมเดลส่งกลับ
  5. เก็บ API key เป็น environment variable แทนการใส่ใน request body

Top comments (0)