Topik ini menjelaskan cara memanggil model Kimi di Alibaba Cloud Model Studio menggunakan API yang kompatibel dengan OpenAI atau SDK DashScope.
Model yang dijelaskan dalam topik ini hanya tersedia di wilayah Tiongkok (Beijing). Untuk menggunakan model ini, Anda harus memiliki Kunci API dari wilayah Tiongkok (Beijing).
Ikhtisar
Kimi adalah rangkaian model bahasa besar (LLM) dari Moonshot AI.
kimi-k2-thinking: Model ini hanya mendukung mode berpikir dan menampilkan proses berpikir melalui bidang
reasoning_content. Model ini memiliki kemampuan coding dan pemanggilan alat yang sangat baik, sehingga cocok untuk skenario yang memerlukan analisis logis, perencanaan, atau pemahaman mendalam.Moonshot-Kimi-K2-Instruct: Model ini tidak mendukung pemikiran mendalam dan menghasilkan tanggapan secara langsung. Dengan kecepatan respons yang lebih cepat, model ini cocok untuk skenario yang memerlukan jawaban cepat dan langsung.
Model | Jendela konteks | Maksimum input | Rantai-pikiran maksimum | Tanggapan maksimum | Harga input | Harga output |
(Token) | (Juta token) | |||||
kimi-k2-thinking | 262.144 | 229.376 | 32.768 | 16.384 | $0,574 | $2,294 |
Moonshot-Kimi-K2-Instruct | 131.072 | 131.072 | - | 8.192 | $0,574 | $2,294 |
Memulai
Sebelum memanggil API, buat Kunci API dan ekspor Kunci API sebagai Variabel lingkungan. Jika Anda memanggil model menggunakan SDK, instal SDK OpenAI atau DashScope.
Kompatibel dengan OpenAI
Python
Kode contoh
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="kimi-k2-thinking",
messages=[{"role": "user", "content": "Who are you?"}],
stream=True,
)
reasoning_content = "" # Proses berpikir lengkap
answer_content = "" # Tanggapan lengkap
is_answering = False # Apakah fase tanggapan telah dimulai
print("\n" + "=" * 20 + "Proses berpikir" + "=" * 20 + "\n")
for chunk in completion:
if chunk.choices:
delta = chunk.choices[0].delta
# Kumpulkan hanya konten berpikir
if hasattr(delta, "reasoning_content") and delta.reasoning_content is not None:
if not is_answering:
print(delta.reasoning_content, end="", flush=True)
reasoning_content += delta.reasoning_content
# Menerima konten, mulai memberikan tanggapan
if hasattr(delta, "content") and delta.content:
if not is_answering:
print("\n" + "=" * 20 + "Tanggapan lengkap" + "=" * 20 + "\n")
is_answering = True
print(delta.content, end="", flush=True)
answer_content += delta.contentTanggapan contoh
====================Proses berpikir====================
Pengguna bertanya "Who are you?", yang merupakan pertanyaan langsung tentang identitas saya. Saya perlu menjawab secara jujur berdasarkan identitas saya yang sebenarnya.
Saya adalah asisten artificial intelligence yang dikembangkan oleh Moonshot AI, dan nama saya Kimi. Saya harus memperkenalkan diri secara jelas dan ringkas, termasuk hal-hal berikut:
1. Identitas saya: asisten AI
2. Pengembang saya: Moonshot AI
3. Nama saya: Kimi
4. Kemampuan inti saya: pemrosesan teks panjang, percakapan cerdas, pemrosesan file, pencarian, dll.
Saya harus menjaga nada ramah dan profesional, menghindari istilah teknis berlebihan agar pengguna biasa dapat memahami. Pada saat yang sama, saya harus menekankan bahwa saya adalah AI tanpa kesadaran pribadi, emosi, atau pengalaman pribadi.
Struktur tanggapan:
- Nyatakan langsung identitas saya
- Sebutkan pengembang
- Perkenalkan secara singkat kemampuan inti
- Tetap sederhana dan jelas
====================Tanggapan lengkap====================
Saya Kimi, asisten AI yang dikembangkan oleh Moonshot AI. Saya didasarkan pada arsitektur Mixture-of-Experts (MoE) dan memiliki kemampuan seperti pemahaman konteks ultra-panjang, percakapan cerdas, pemrosesan file, pembuatan kode, dan inferensi tugas kompleks. Bagaimana saya bisa membantu Anda?Node.js
Kode contoh
import OpenAI from "openai";
import process from 'process';
// Inisialisasi klien OpenAI
const openai = new OpenAI({
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
baseURL: 'https://dashscope.aliyuncs.com/compatible-mode/v1'
});
let reasoningContent = ''; // Proses berpikir lengkap
let answerContent = ''; // Tanggapan lengkap
let isAnswering = false; // Apakah fase tanggapan telah dimulai
async function main() {
const messages = [{ role: 'user', content: 'Who are you?' }];
const stream = await openai.chat.completions.create({
model: 'kimi-k2-thinking',
messages,
stream: true,
});
console.log('\n' + '='.repeat(20) + 'Proses berpikir' + '='.repeat(20) + '\n');
for await (const chunk of stream) {
if (chunk.choices?.length) {
const delta = chunk.choices[0].delta;
// Kumpulkan hanya konten berpikir
if (delta.reasoning_content !== undefined && delta.reasoning_content !== null) {
if (!isAnswering) {
process.stdout.write(delta.reasoning_content);
}
reasoningContent += delta.reasoning_content;
}
// Menerima konten, mulai memberikan tanggapan
if (delta.content !== undefined && delta.content) {
if (!isAnswering) {
console.log('\n' + '='.repeat(20) + 'Tanggapan lengkap' + '='.repeat(20) + '\n');
isAnswering = True;
}
process.stdout.write(delta.content);
answerContent += delta.content;
}
}
}
}
main();Hasil
====================Proses berpikir====================
Pengguna bertanya "Who are you?", yang merupakan pertanyaan langsung tentang identitas saya. Saya perlu menjawab secara jujur berdasarkan identitas saya yang sebenarnya.
Saya adalah asisten artificial intelligence yang dikembangkan oleh Moonshot AI, dan nama saya Kimi. Saya harus memperkenalkan diri secara jelas dan ringkas, termasuk hal-hal berikut:
1. Identitas saya: asisten AI
2. Pengembang saya: Moonshot AI
3. Nama saya: Kimi
4. Kemampuan inti saya: pemrosesan teks panjang, percakapan cerdas, pemrosesan file, pencarian, dll.
Saya harus menjaga nada ramah dan profesional, menghindari istilah teknis berlebihan agar pengguna biasa dapat memahami dengan mudah. Pada saat yang sama, saya harus menekankan bahwa saya adalah AI tanpa kesadaran pribadi, emosi, atau pengalaman pribadi untuk menghindari kesalahpahaman.
Struktur tanggapan:
- Nyatakan langsung identitas saya
- Sebutkan pengembang
- Perkenalkan secara singkat kemampuan inti
- Tetap sederhana dan jelas
====================Tanggapan lengkap====================
Saya Kimi, asisten artificial intelligence yang dikembangkan oleh Moonshot AI.
Saya ahli dalam:
- Pemahaman dan pembuatan teks panjang
- Percakapan cerdas dan tanya jawab
- Pemrosesan dan analisis file
- Pengambilan dan integrasi informasi
Sebagai asisten AI, saya tidak memiliki kesadaran pribadi, emosi, atau pengalaman, tetapi saya akan melakukan yang terbaik untuk memberikan bantuan yang akurat dan berguna kepada Anda. Bagaimana saya bisa membantu Anda?HTTP
Kode contoh
curl
curl -X POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kimi-k2-thinking",
"messages": [
{
"role": "user",
"content": "Who are you?"
}
]
}'Tanggapan contoh
{
"choices": [
{
"message": {
"content": "I am Kimi, an artificial intelligence assistant developed by Moonshot AI. I am good at handling long texts, intelligent conversation, file analysis, programming assistance, and complex task inference. I can help you answer questions, create content, and analyze documents. How can I help you?",
"reasoning_content": "The user asks \"Who are you?\", which is a direct question about my identity. I need to answer truthfully based on my actual identity.\n\nI am an artificial intelligence assistant developed by Moonshot AI, and my name is Kimi. I should introduce myself clearly and concisely, including the following:\n1. My identity: AI assistant\n2. My developer: Moonshot AI\n3. My name: Kimi\n4. My core capabilities: long-text processing, intelligent conversation, file processing, search, etc.\n\nI should maintain a friendly and professional tone while providing useful information. No need to overcomplicate, just answer directly.",
"role": "assistant"
},
"finish_reason": "stop",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 8,
"completion_tokens": 183,
"total_tokens": 191
},
"created": 1762753998,
"system_fingerprint": null,
"model": "kimi-k2-thinking",
"id": "chatcmpl-485ab490-90ec-48c3-85fa-1c732b683db2"
}DashScope
Python
Kode contoh
import os
from dashscope import Generation
# Inisialisasi parameter permintaan
messages = [{"role": "user", "content": "Who are you?"}]
completion = Generation.call(
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
api_key=os.getenv("DASHSCOPE_API_KEY"),
model="kimi-k2-thinking",
messages=messages,
result_format="message", # Atur format hasil menjadi message
stream=True, # Aktifkan keluaran streaming
incremental_output=True, # Aktifkan keluaran inkremental
)
reasoning_content = "" # Proses berpikir lengkap
answer_content = "" # Tanggapan lengkap
is_answering = False # Apakah fase tanggapan telah dimulai
print("\n" + "=" * 20 + "Proses berpikir" + "=" * 20 + "\n")
for chunk in completion:
message = chunk.output.choices[0].message
# Kumpulkan hanya konten berpikir
if message.reasoning_content:
if not is_answering:
print(message.reasoning_content, end="", flush=True)
reasoning_content += message.reasoning_content
# Menerima konten, mulai memberikan tanggapan
if message.content:
if not is_answering:
print("\n" + "=" * 20 + "Tanggapan lengkap" + "=" * 20 + "\n")
is_answering = True
print(message.content, end="", flush=True)
answer_content += message.content
# Setelah loop, variabel reasoning_content dan answer_content berisi konten lengkap
# Anda dapat melakukan pemrosesan lanjutan di sini sesuai kebutuhan
# print(f"\n\nProses berpikir lengkap:\n{reasoning_content}")
# print(f"\nTanggapan lengkap:\n{answer_content}")Tanggapan contoh
====================Proses berpikir====================
Pengguna bertanya "Who are you?", yang merupakan pertanyaan langsung tentang identitas saya. Saya perlu menjawab secara jujur berdasarkan identitas saya yang sebenarnya.
Saya adalah asisten artificial intelligence yang dikembangkan oleh Moonshot AI, dan nama saya Kimi. Saya harus menyatakan hal ini secara jelas dan ringkas.
Informasi penting yang harus disertakan sebagai berikut:
1. Nama saya: Kimi
2. Pengembang saya: Moonshot AI
3. Sifat saya: Asisten artificial intelligence
4. Saya dapat memberikan bantuan: menjawab pertanyaan, membantu pembuatan, dll.
Saya harus menjaga nada ramah dan membantu sambil secara akurat menyatakan identitas saya. Saya tidak boleh berpura-pura menjadi manusia atau memiliki identitas pribadi.
Tanggapan yang sesuai bisa berupa:
"Saya Kimi, asisten artificial intelligence yang dikembangkan oleh Moonshot AI. Saya dapat membantu Anda dengan berbagai tugas seperti menjawab pertanyaan, membuat konten, dan menganalisis dokumen. Bagaimana saya bisa membantu Anda?"
Tanggapan ini langsung, akurat, dan mengundang interaksi lebih lanjut.
====================Tanggapan lengkap====================
Saya Kimi, asisten artificial intelligence yang dikembangkan oleh Moonshot AI. Saya dapat membantu Anda dengan berbagai tugas seperti menjawab pertanyaan, membuat konten, dan menganalisis dokumen. Bagaimana saya bisa membantu Anda?Java
Kode contoh
// Versi SDK DashScope >= 2.19.4
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import io.reactivex.Flowable;
import java.lang.System;
import java.util.Arrays;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Main {
private static final Logger logger = LoggerFactory.getLogger(Main.class);
private static StringBuilder reasoningContent = new StringBuilder();
private static StringBuilder finalContent = new StringBuilder();
private static boolean isFirstPrint = true;
private static void handleGenerationResult(GenerationResult message) {
String reasoning = message.getOutput().getChoices().get(0).getMessage().getReasoningContent();
String content = message.getOutput().getChoices().get(0).getMessage().getContent();
if (reasoning!= null&&!reasoning.isEmpty()) {
reasoningContent.append(reasoning);
if (isFirstPrint) {
System.out.println("====================Proses berpikir====================");
isFirstPrint = false;
}
System.out.print(reasoning);
}
if (content!= null&&!content.isEmpty()) {
finalContent.append(content);
if (!isFirstPrint) {
System.out.println("\n====================Tanggapan lengkap====================");
isFirstPrint = true;
}
System.out.print(content);
}
}
private static GenerationParam buildGenerationParam(Message userMsg) {
return GenerationParam.builder()
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: .apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("kimi-k2-thinking")
.incrementalOutput(true)
.resultFormat("message")
.messages(Arrays.asList(userMsg))
.build();
}
public static void streamCallWithMessage(Generation gen, Message userMsg)
throws NoApiKeyException, ApiException, InputRequiredException {
GenerationParam param = buildGenerationParam(userMsg);
Flowable<GenerationResult> result = gen.streamCall(param);
result.blockingForEach(message -> handleGenerationResult(message));
}
public static void main(String[] args) {
try {
Generation gen = new Generation();
Message userMsg = Message.builder().role(Role.USER.getValue()).content("Who are you?").build();
streamCallWithMessage(gen, userMsg);
// Cetak hasil akhir
// if (reasoningContent.length() > 0) {
// System.out.println("\n====================Tanggapan lengkap====================");
// System.out.println(finalContent.toString());
// }
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
logger.error("Terjadi pengecualian: {}", e.getMessage());
}
System.exit(0);
}
}Tanggapan contoh
====================Proses berpikir====================
Pengguna bertanya "Who are you?", yang merupakan pertanyaan langsung tentang identitas saya. Saya perlu menjawab secara jujur berdasarkan identitas saya yang sebenarnya.
Saya adalah asisten artificial intelligence yang dikembangkan oleh Moonshot AI, dan nama saya Kimi. Saya harus menyatakan hal ini secara jelas dan ringkas.
Tanggapan harus mencakup hal-hal berikut:
1. Identitas saya: asisten AI
2. Pengembang saya: Moonshot AI
3. Nama saya: Kimi
4. Kemampuan inti saya: pemrosesan teks panjang, percakapan cerdas, pemrosesan file, dll.
Saya tidak boleh berpura-pura menjadi manusia, juga tidak boleh memberikan terlalu banyak detail teknis. Saya hanya perlu memberikan jawaban yang jelas dan ramah.
====================Tanggapan lengkap====================
Saya Kimi, asisten artificial intelligence yang dikembangkan oleh Moonshot AI. Saya ahli dalam menangani teks panjang, melakukan percakapan cerdas, menjawab pertanyaan, membantu pembuatan, dan membantu Anda menganalisis serta memproses file. Bagaimana saya bisa membantu Anda?HTTP
Kode contoh
curl
curl -X POST "https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation" \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kimi-k2-thinking",
"input":{
"messages":[
{
"role": "user",
"content": "Who are you?"
}
]
},
"parameters": {
"result_format": "message"
}
}'Tanggapan contoh
{
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"content": "I am Kimi, an artificial intelligence assistant developed by Moonshot AI. I can help you answer questions, create content, analyze documents, and write code. How can I help you?",
"reasoning_content": "The user asks \"Who are you?\", which is a direct question about my identity. I need to answer truthfully based on my actual identity.\n\nI am an artificial intelligence assistant developed by Moonshot AI, and my name is Kimi. I should state this clearly and concisely.\n\nKey information to include the following:\n1. My name: Kimi\n2. My developer: Moonshot AI\n3. My nature: Artificial intelligence assistant\n4. I can provide help: answer questions, assist with creation, etc.\n\nI should respond in a friendly and direct manner that is easy for the user to understand.",
"role": "assistant"
}
}
]
},
"usage": {
"input_tokens": 9,
"output_tokens": 156,
"total_tokens": 165
},
"request_id": "709a0697-ed1f-4298-82c9-a4b878da1849"
}Fitur model
Model | |||||||
kimi-k2-thinking | |||||||
Moonshot-Kimi-K2-Instruct |
Nilai parameter default
Model | suhu | top_p | presence_penalty |
kimi-k2-thinking | 1,0 | - | - |
Moonshot-Kimi-K2-Instruct | 0,6 | 1,0 | 0 |
Tanda hubung (-) menunjukkan bahwa parameter tersebut tidak dapat dikonfigurasi dan tidak memiliki nilai default.
Kode kesalahan
Jika pemanggilan model gagal dan pesan kesalahan dikembalikan, lihat Pesan kesalahan untuk informasi selengkapnya.