Cette rubrique explique comment appeler le service d'inférence du modèle Kimi déployé sur Alibaba Cloud Model Studio.
Régions prises en charge : Chine (Pékin), Singapour, Japon (Tokyo), Chine (Hong Kong), Allemagne (Francfort) et États-Unis (Virginie).
Essai du modèle : Vous pouvez tester le modèle Kimi dans le centre d'essai des modèles.
Les points de terminaison du service sont spécifiques à chaque région. Configurez l'URL de base appropriée pour votre région.
OpenAI compatible
US (Virginia)
Le paramètre base_url pour les appels SDK est : https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/compatible-mode/v1
URL de la requête HTTP : POST https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions
Germany (Frankfurt)
Le paramètre base_url pour les appels SDK est : https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/compatible-mode/v1
URL de la requête HTTP : POST https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions
Singapore
Le paramètre base_url pour les appels SDK est : https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1
URL de la requête HTTP : POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions
Japan (Tokyo)
Le paramètre base_url pour les appels SDK est : https://{WorkspaceId}.ap-northeast-1.maas.aliyuncs.com/compatible-mode/v1
URL de la requête HTTP : POST https://{WorkspaceId}.ap-northeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions
China (Beijing)
Le paramètre base_url pour les appels SDK est : https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1
URL de la requête HTTP : POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/chat/completions
China (Hong Kong)
Le paramètre base_url pour les appels SDK est : https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/compatible-mode/v1
URL de la requête HTTP : POST https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/compatible-mode/v1/chat/completions
DashScope
US (Virginia)
L'URL de la requête HTTP pour les modèles multimodaux, tels que kimi-k2,6 et kimi-k2,5, est POST https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
Le paramètre base_url pour les appels SDK est :
Python code
dashscope.base_http_api_url = 'https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1'
Java code
-
Méthode 1 :
import com.alibaba.dashscope.protocol.Protocol; Generation gen = new Generation(Protocol.HTTP.getValue(), "https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1"); -
Méthode 2 :
import com.alibaba.dashscope.utils.Constants; Constants.baseHttpApiUrl="https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1";
Germany (Frankfurt)
L'URL de la requête HTTP pour les modèles multimodaux, tels que kimi-k3, kimi-k2,7-code, kimi-k2,6 et kimi-k2,5, est POST https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
Le paramètre base_url pour les appels SDK est :
Python code
dashscope.base_http_api_url = 'https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1'
Java code
-
Méthode 1 :
import com.alibaba.dashscope.protocol.Protocol; Generation gen = new Generation(Protocol.HTTP.getValue(), "https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1"); -
Méthode 2 :
import com.alibaba.dashscope.utils.Constants; Constants.baseHttpApiUrl="https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1";
Singapore
L'URL de la requête HTTP pour les modèles multimodaux, tels que kimi-k3, kimi-k2,7-code, kimi-k2,6 et kimi-k2,5, est POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
Le paramètre base_url pour les appels SDK est :
Python code
# Singapore region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
Java code
-
Option 1 :
import com.alibaba.dashscope.protocol.Protocol; // Singapore region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region. Generation gen = new Generation(Protocol.HTTP.getValue(), "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1"); -
Option 2 :
import com.alibaba.dashscope.utils.Constants; // Singapore region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region. Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
Japan (Tokyo)
L'URL de la requête HTTP pour les modèles multimodaux, tels que kimi-k3, kimi-k2,7-code, kimi-k2,6 et kimi-k2,5, est POST https://{WorkspaceId}.ap-northeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
Le paramètre base_url pour les appels SDK est :
Python code
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-northeast-1.maas.aliyuncs.com/api/v1'
Java code
-
Option 1 :
import com.alibaba.dashscope.protocol.Protocol; Generation gen = new Generation(Protocol.HTTP.getValue(), "https://{WorkspaceId}.ap-northeast-1.maas.aliyuncs.com/api/v1"); -
Option 2 :
import com.alibaba.dashscope.utils.Constants; Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-northeast-1.maas.aliyuncs.com/api/v1";
Chine (Hong Kong)
L'URL de requête HTTP pour les modèles multimodaux, tels que kimi-k3, kimi-k2,7-code, kimi-k2,6 et kimi-k2,5, est POST https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
Le paramètre base_url pour les appels via le SDK est :
Code Python
dashscope.base_http_api_url = 'https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/api/v1'
Code Java
-
Méthode 1 :
import com.alibaba.dashscope.protocol.Protocol; Generation gen = new Generation(Protocol.HTTP.getValue(), "https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/api/v1"); -
Méthode 2 :
import com.alibaba.dashscope.utils.Constants; Constants.baseHttpApiUrl="https://{WorkspaceId}.cn-hongkong.maas.aliyuncs.com/api/v1";
Chine (Pékin)
L'URL de requête HTTP pour les modèles multimodaux, tels que kimi-k3, kimi-k2,7-code, kimi-k2,6 et kimi-k2,5, est POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation
Le paramètre base_url pour les appels via le SDK est :
Code Python
# China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
dashscope.base_http_api_url = 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1'
Code Java
-
Option 1 :
import com.alibaba.dashscope.protocol.Protocol; // China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region. Generation gen = new Generation(Protocol.HTTP.getValue(), "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1"); -
Option 2 :
import com.alibaba.dashscope.utils.Constants; // China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region. Constants.baseHttpApiUrl="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1";
Remplacez {WorkspaceId} par votre ID d'espace de travail réel.
Prérequis : vous devez obtenir une clé API et la définir comme variable d'environnement. Si vous utilisez le SDK, vous devez l'installer.
Premiers pas
Les exemples suivants utilisent uniquement des entrées textuelles. Pour des exemples multimodaux, consultez la section Appel multimodal.
Compatible OpenAI
Python
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
# China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="kimi-k3",
messages=[{"role": "user", "content": "Who are you?"}],
stream=True,
extra_body={"enable_thinking": True}, # Enable thinking mode to get reasoning_content
)
reasoning_content = "" # Complete thinking process
answer_content = "" # Complete response
is_answering = False # Tracks if the main response has started.
print("\n" + "=" * 20 + "Thinking Process" + "=" * 20 + "\n")
for chunk in completion:
if chunk.choices:
delta = chunk.choices[0].delta
# Store content from the thinking process.
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
# Start printing the main response once its content arrives.
if hasattr(delta, "content") and delta.content:
if not is_answering:
print("\n" + "=" * 20 + "Complete Response" + "=" * 20 + "\n")
is_answering = True
print(delta.content, end="", flush=True)
answer_content += delta.content
Réponse
====================Thinking Process====================
The user asks "Who are you?", which is a direct question about my identity. I need to answer truthfully based on my actual identity.
I am Kimi, an AI assistant developed by Moonshot AI. I should introduce myself clearly and concisely, including:
1. My identity: AI assistant
2. My developer: Moonshot AI
3. My name: Kimi
4. My core capabilities: long-text processing, intelligent conversation, file processing, search, etc.
I should maintain a friendly and professional tone, avoiding overly technical terms for clarity. I should also emphasize that I am an AI without personal consciousness, emotions, or experiences to prevent misunderstandings.
Response structure:
- Directly state my identity
- Mention my developer
- Briefly introduce core capabilities
- Keep it clear and concise
====================Complete Response====================
I am Kimi, an AI assistant developed by Moonshot AI. I am based on a Mixture-of-Experts (MoE) architecture and have capabilities such as ultra-long context understanding, intelligent conversation, file processing, code generation, and complex task reasoning. How can I help you?
Node.js
import OpenAI from "openai";
import process from 'process';
// Initialize the OpenAI client
const openai = new OpenAI({
// If not using an environment variable, replace `process.env.DASHSCOPE_API_KEY` with your API key string (e.g., "sk-xxx").
apiKey: process.env.DASHSCOPE_API_KEY,
// China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
baseURL: 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1'
});
let reasoningContent = ''; // Complete thinking process
let answerContent = ''; // Complete response
let isAnswering = false; // Tracks if the main response has started.
async function main() {
const messages = [{ role: 'user', content: 'Who are you?' }];
const stream = await openai.chat.completions.create({
model: 'kimi-k3',
messages,
stream: true,
enable_thinking: true, // Enable thinking mode to get reasoning_content
});
console.log('\n' + '='.repeat(20) + 'Thinking Process' + '='.repeat(20) + '\n');
for await (const chunk of stream) {
if (chunk.choices?.length) {
const delta = chunk.choices[0].delta;
// Store content from the thinking process.
if (delta.reasoning_content !== undefined && delta.reasoning_content !== null) {
if (!isAnswering) {
process.stdout.write(delta.reasoning_content);
}
reasoningContent += delta.reasoning_content;
}
// Start printing the main response once its content arrives.
if (delta.content !== undefined && delta.content) {
if (!isAnswering) {
console.log('\n' + '='.repeat(20) + 'Complete Response' + '='.repeat(20) + '\n');
isAnswering = true;
}
process.stdout.write(delta.content);
answerContent += delta.content;
}
}
}
}
main();
Réponse
====================Thinking Process====================
The user asks "Who are you?", which is a direct question about my identity. I need to answer truthfully based on my actual identity.
I am Kimi, an AI assistant developed by Moonshot AI. I should introduce myself clearly and concisely, including:
1. My identity: AI assistant
2. My developer: Moonshot AI
3. My name: Kimi
4. My core capabilities: long-text processing, intelligent conversation, file processing, search, etc.
I should maintain a friendly and professional tone and avoid overly technical terms for clarity. I should also emphasize that I am an AI without personal consciousness, emotions, or experiences to prevent misunderstandings.
Response structure:
- Directly state my identity
- Mention my developer
- Briefly introduce core capabilities
- Keep it clear and concise
====================Complete Response====================
I am Kimi, an AI assistant developed by Moonshot AI.
I am skilled in:
- Long-text understanding and generation
- Intelligent conversation and question answering
- File processing and analysis
- Information retrieval and integration
As an AI assistant, I do not have personal consciousness, emotions, or experiences, but I am designed to provide accurate and helpful assistance. How can I help you?
HTTP
curl
# China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
curl -X POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kimi-k3",
"messages": [
{
"role": "user",
"content": "Who are you?"
}
],
"enable_thinking": true
}'
Réponse
{
"choices": [
{
"message": {
"content": "I am Kimi, an AI assistant developed by Moonshot AI. I am skilled in long-text processing, intelligent conversation, file analysis, programming assistance, and complex task reasoning. I can help you answer questions, create content, and analyze documents. How can I assist you?",
"reasoning_content": "The user asks \"Who are you?\", which is a direct question about my identity. I must answer truthfully based on my actual identity.\n\nI am Kimi, an AI assistant developed by Moonshot AI. I should introduce myself clearly and concisely, including:\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; a direct answer is sufficient.",
"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-k3",
"id": "chatcmpl-485ab490-90ec-48c3-85fa-1c732b683db2"
}
DashScope
Les exemples DashScope suivants utilisent le point de terminaison
multimodal-generationpour appeler kimi-k3, qui prend en charge les entrées textuelles et multimodales. Pour plus d'exemples multimodaux, consultez la section Appel multimodal .
Python
import os
import dashscope
from dashscope import MultiModalConversation
# China (Beijing) region configuration. Replace {WorkspaceId} with your actual workspace ID. For other regions, use the corresponding base URL.
dashscope.base_http_api_url = "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1"
# Define the request messages.
messages = [{"role": "user", "content": "Who are you?"}]
completion = MultiModalConversation.call(
api_key=os.getenv("DASHSCOPE_API_KEY"), # If not using an environment variable, provide your key directly, e.g., api_key="sk-xxx"
model="kimi-k3",
messages=messages,
result_format="message", # Set the result format to message
stream=True, # Enable streaming.
incremental_output=True, # Enable incremental output
enable_thinking=True, # Enable thinking mode to get reasoning_content
)
reasoning_content = "" # Complete thinking process
answer_content = "" # Complete response
is_answering = False # Tracks if the main response has started.
print("\n" + "=" * 20 + "Thinking Process" + "=" * 20 + "\n")
for chunk in completion:
message = chunk.output.choices[0].message
# Store content from the thinking process.
reasoning_chunk = message.get("reasoning_content")
if reasoning_chunk:
if not is_answering:
print(reasoning_chunk, end="", flush=True)
reasoning_content += reasoning_chunk
# Start printing the main response once its content arrives. content is a list, so extract the text from it.
if message.get("content"):
text = message.content[0].get("text", "")
if not is_answering:
print("\n" + "=" * 20 + "Complete Response" + "=" * 20 + "\n")
is_answering = True
print(text, end="", flush=True)
answer_content += text
Réponse
====================Thinking Process====================
The user asks "Who are you?", which is a direct question about my identity. I need to answer truthfully based on my actual identity.
I am Kimi, an AI assistant developed by Moonshot AI. I should state this clearly and concisely.
Key information to include:
1. My name: Kimi
2. My developer: Moonshot AI
3. My nature: AI assistant
4. What I can do: answer questions, assist with content creation, etc.
I should maintain a friendly and helpful tone while accurately stating my identity. I should not pretend to be human or have a personal identity.
A suitable response would be:
"I am Kimi, an AI assistant developed by Moonshot AI. I can help you with a variety of tasks such as answering questions, creating content, and analyzing documents. How can I help you?"
This response is direct, accurate, and encourages further interaction.
====================Complete Response====================
I am Kimi, an AI assistant developed by Moonshot AI. I can help you with a variety of tasks such as answering questions, creating content, and analyzing documents. How can I help you?
Java
// DashScope SDK version >= 2.19.4
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
import java.util.Arrays;
import java.util.Collections;
public class Main {
public static void main(String[] args) {
// China (Beijing) region configuration. Replace {WorkspaceId} with your actual workspace ID. For other regions, use the corresponding base URL.
Constants.baseHttpApiUrl = "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1";
try {
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessage userMsg = MultiModalMessage.builder()
.role(Role.USER.getValue())
.content(Arrays.asList(Collections.singletonMap("text", "Who are you?")))
.build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// If not using an environment variable, replace the following line with your API key, e.g., .apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("kimi-k3")
.messages(Arrays.asList(userMsg))
.build();
MultiModalConversationResult result = conv.call(param);
String content = (String) result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text");
System.out.println("Response: " + content);
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.err.println("An exception occurred: " + e.getMessage());
}
System.exit(0);
}
}
Réponse
Response: I am Kimi, an AI assistant developed by Moonshot AI. My skills include long-text processing, intelligent conversation, question answering, content creation, and file analysis and processing. How can I assist you?
HTTP
curl
# China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
curl -X POST "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation" \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kimi-k3",
"input":{
"messages":[
{
"role": "user",
"content": "Who are you?"
}
]
},
"parameters": {
"result_format": "message",
"enable_thinking": true
}
}'
Réponse
{
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"content": "I am Kimi, an AI 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 Kimi, an AI assistant developed by Moonshot AI. I should state this clearly and concisely.\n\nKey information to include:\n1. My name: Kimi\n2. My developer: Moonshot AI\n3. My nature: AI assistant\n4. What I can do: answer questions, assist with content creation, etc.\n\nThe response should be friendly, direct, and easy to understand.",
"role": "assistant"
}
}
]
},
"usage": {
"input_tokens": 9,
"output_tokens": 156,
"total_tokens": 165
},
"request_id": "709a0697-ed1f-4298-82c9-a4b878da1849"
}
Compatible Anthropic
Python
Exemple de code
import anthropic
import os
client = anthropic.Anthropic(
# If the environment variable is not configured, replace the value with your Model Studio API key: api_key="sk-xxx"
api_key=os.getenv("DASHSCOPE_API_KEY"),
# When you make a call, replace {WorkspaceId} with your actual Workspace ID.
base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropic",
)
message = client.messages.create(
model="kimi-k3",
max_tokens=1024,
messages=[
{"role": "user", "content": "Who are you?"}
],
stream=True,
)
for event in message:
if event.type == "content_block_delta":
if hasattr(event.delta, "thinking"):
print(event.delta.thinking, end="", flush=True)
if hasattr(event.delta, "text"):
print(event.delta.text, end="", flush=True)
HTTP
Exemple de code
curl
# Singapore region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/apps/anthropic/v1/messages \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "kimi-k3",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Who are you?"
}
]
}'
Appels multimodaux
Les modèles kimi-k2,7-code, kimi-k2,6 et kimi-k2,5 peuvent traiter simultanément du texte, des images ou des vidéos. Utilisez le paramètre enable_thinking pour activer le mode de raisonnement. Les exemples suivants illustrent l'utilisation de cette fonctionnalité.
Activer ou désactiver le mode de raisonnement
kimi-k2,6 et kimi-k2,5 sont des modèles à raisonnement hybride. Ils peuvent répondre après une phase de réflexion ou fournir une réponse directe. Le paramètre enable_thinking permet de contrôler l'activation du mode de raisonnement :
true: active le mode de raisonnementfalse(par défaut) : désactive le mode de raisonnement
Le modèle kimi-k2.7-code fonctionne exclusivement en mode de raisonnement : ce mode est toujours activé (la valeur par défaut de enable_thinking est true et ne peut pas être désactivée), et la valeur par défaut de preserve_thinking est true.
kimi-k2,6 prend en charge la transmission du processus de raisonnement dans les conversations multi-tours via le paramètre preserve_thinking . Pour plus d'informations, consultez la rubrique Transmettre le processus de raisonnement.
Les exemples ci-dessous montrent comment utiliser une URL d'image avec le mode de raisonnement activé. L'exemple principal traite l'entrée d'une seule image, tandis que le code commenté illustre l'entrée de plusieurs images.
OpenAI compatible
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
# China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)
# Single-image input example (thinking mode enabled)
completion = client.chat.completions.create(
model="kimi-k2.6",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "What scene is depicted in the image?"},
{
"type": "image_url",
"image_url": {
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"
}
}
]
}
],
extra_body={"enable_thinking":True} # Enable thinking mode
)
# Print the thinking process
if hasattr(completion.choices[0].message, 'reasoning_content') and completion.choices[0].message.reasoning_content:
print("\n" + "=" * 20 + "Thinking Process" + "=" * 20 + "\n")
print(completion.choices[0].message.reasoning_content)
# Print the complete response
print("\n" + "=" * 20 + "Complete Response" + "=" * 20 + "\n")
print(completion.choices[0].message.content)
# Multi-image input example (thinking mode enabled, uncomment to use)
# completion = client.chat.completions.create(
# model="kimi-k2.6",
# messages=[
# {
# "role": "user",
# "content": [
# {"type": "text", "text": "What do these images depict?"},
# {
# "type": "image_url",
# "image_url": {"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"}
# },
# {
# "type": "image_url",
# "image_url": {"url": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png"}
# }
# ]
# }
# ],
# extra_body={"enable_thinking":True}
# )
#
# # Print the thinking process and complete response
# if hasattr(completion.choices[0].message, 'reasoning_content') and completion.choices[0].message.reasoning_content:
# print("\nThinking Process:\n" + completion.choices[0].message.reasoning_content)
# print("\nComplete Response:\n" + completion.choices[0].message.content)
import OpenAI from "openai";
import process from 'process';
const openai = new OpenAI({
apiKey: process.env.DASHSCOPE_API_KEY,
// China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
baseURL: 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1'
});
// Single-image input example (thinking mode enabled)
const completion = await openai.chat.completions.create({
model: 'kimi-k2.6',
messages: [
{
role: 'user',
content: [
{ type: 'text', text: 'What scene is depicted in the image?' },
{
type: 'image_url',
image_url: {
url: 'https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg'
}
}
]
}
],
enable_thinking: true // Enable thinking mode
});
// Print the thinking process
if (completion.choices[0].message.reasoning_content) {
console.log('\n' + '='.repeat(20) + 'Thinking Process' + '='.repeat(20) + '\n');
console.log(completion.choices[0].message.reasoning_content);
}
// Print the complete response
console.log('\n' + '='.repeat(20) + 'Complete Response' + '='.repeat(20) + '\n');
console.log(completion.choices[0].message.content);
// Multi-image input example (thinking mode enabled, uncomment to use)
// const multiCompletion = await openai.chat.completions.create({
// model: 'kimi-k2.6',
// messages: [
// {
// role: 'user',
// content: [
// { type: 'text', text: 'What do these images depict?' },
// {
// type: 'image_url',
// image_url: { url: 'https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg' }
// },
// {
// type: 'image_url',
// image_url: { url: 'https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png' }
// }
// ]
// }
// ],
// enable_thinking: true
// });
//
// // Print the thinking process and complete response
// if (multiCompletion.choices[0].message.reasoning_content) {
// console.log('\nThinking Process:\n' + multiCompletion.choices[0].message.reasoning_content);
// }
// console.log('\nComplete Response:\n' + multiCompletion.choices[0].message.content);
# China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
curl -X POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kimi-k2.6",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "What scene is depicted in the image?"
},
{
"type": "image_url",
"image_url": {
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"
}
}
]
}
],
"enable_thinking": true
}'
# Multi-image input example (uncomment to use)
# China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
# curl -X POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/chat/completions \
# -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
# -H "Content-Type: application/json" \
# -d '{
# "model": "kimi-k2.6",
# "messages": [
# {
# "role": "user",
# "content": [
# {
# "type": "text",
# "text": "What do these images depict?"
# },
# {
# "type": "image_url",
# "image_url": {
# "url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"
# }
# },
# {
# "type": "image_url",
# "image_url": {
# "url": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png"
# }
# }
# ]
# }
# ],
# "enable_thinking": true,
# "stream": false
# }'
DashScope
import os
import dashscope
from dashscope import MultiModalConversation
# China (Beijing) region configuration. Replace {WorkspaceId} with your actual workspace ID. For other regions, use the corresponding base URL.
dashscope.base_http_api_url = "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1"
# Single-image input example (thinking mode enabled)
response = MultiModalConversation.call(
api_key=os.getenv("DASHSCOPE_API_KEY"),
model="kimi-k2.6",
messages=[
{
"role": "user",
"content": [
{"text": "What scene is depicted in the image?"},
{"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"}
]
}
],
enable_thinking=True # Enable thinking mode
)
# Print the thinking process
if hasattr(response.output.choices[0].message, 'reasoning_content') and response.output.choices[0].message.reasoning_content:
print("\n" + "=" * 20 + "Thinking Process" + "=" * 20 + "\n")
print(response.output.choices[0].message.reasoning_content)
# Print the complete response
print("\n" + "=" * 20 + "Complete Response" + "=" * 20 + "\n")
print(response.output.choices[0].message.content[0]["text"])
# Multi-image input example (thinking mode enabled, uncomment to use)
# response = MultiModalConversation.call(
# api_key=os.getenv("DASHSCOPE_API_KEY"),
# model="kimi-k2.6",
# messages=[
# {
# "role": "user",
# "content": [
# {"text": "What do these images depict?"},
# {"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"},
# {"image": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png"}
# ]
# }
# ],
# enable_thinking=True
# )
#
# # Print the thinking process and complete response
# if hasattr(response.output.choices[0].message, 'reasoning_content') and response.output.choices[0].message.reasoning_content:
# print("\nThinking Process:\n" + response.output.choices[0].message.reasoning_content)
# print("\nComplete Response:\n" + response.output.choices[0].message.content[0]["text"])
// Requires DashScope SDK v2.22.24 or later.
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.JsonUtils;
import com.alibaba.dashscope.utils.Constants;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class KimiK26MultiModalExample {
public static void main(String[] args) {
// China (Beijing) region configuration. Replace {WorkspaceId} with your actual workspace ID. For other regions, use the corresponding base URL.
Constants.baseHttpApiUrl = "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1";
try {
// Single-image input example (thinking mode enabled)
MultiModalConversation conv = new MultiModalConversation();
// Build the message content
Map<String, Object> textContent = new HashMap<>();
textContent.put("text", "What scene is depicted in the image?");
Map<String, Object> imageContent = new HashMap<>();
imageContent.put("image", "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg");
MultiModalMessage userMessage = MultiModalMessage.builder()
.role(Role.USER.getValue())
.content(Arrays.asList(textContent, imageContent))
.build();
// Build the request parameters
MultiModalConversationParam param = MultiModalConversationParam.builder()
// If the environment variable is not set, replace this with your API key from Model Studio.
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("kimi-k2.6")
.messages(Arrays.asList(userMessage))
.enableThinking(true) // Enable thinking mode
.build();
// Call the model
MultiModalConversationResult result = conv.call(param);
// Print the response
String content = (String) result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text");
System.out.println("Response: " + content);
// If thinking mode is enabled, print the thinking process
if (result.getOutput().getChoices().get(0).getMessage().getReasoningContent() != null) {
System.out.println("\nThinking Process: " +
result.getOutput().getChoices().get(0).getMessage().getReasoningContent());
}
// Multi-image input example (uncomment to use)
// Map<String, Object> imageContent1 = new HashMap<>();
// imageContent1.put("image", "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg");
// Map<String, Object> imageContent2 = new HashMap<>();
// imageContent2.put("image", "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png");
//
// Map<String, Object> textContent2 = new HashMap<>();
// textContent2.put("text", "What do these images depict?");
//
// MultiModalMessage multiImageMessage = MultiModalMessage.builder()
// .role(Role.USER.getValue())
// .content(Arrays.asList(textContent2, imageContent1, imageContent2))
// .build();
//
// MultiModalConversationParam multiParam = MultiModalConversationParam.builder()
// .apiKey(System.getenv("DASHSCOPE_API_KEY"))
// .model("kimi-k2.6")
// .messages(Arrays.asList(multiImageMessage))
// .enableThinking(true)
// .build();
//
// MultiModalConversationResult multiResult = conv.call(multiParam);
// System.out.println(multiResult.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.err.println("Call failed: " + e.getMessage());
}
}
}
# China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
curl -X POST "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation" \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kimi-k2.6",
"input": {
"messages": [
{
"role": "user",
"content": [
{
"text": "What scene is depicted in the image?"
},
{
"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"
}
]
}
]
},
"parameters": {
"enable_thinking": true
}
}'
# Multi-image input example (uncomment to use)
# China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
# curl -X POST "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation" \
# -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
# -H "Content-Type: application/json" \
# -d '{
# "model": "kimi-k2.6",
# "input": {
# "messages": [
# {
# "role": "user",
# "content": [
# {
# "text": "What do these images depict?"
# },
# {
# "image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"
# },
# {
# "image": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png"
# }
# ]
# }
# ]
# },
# "parameters": {
# "enable_thinking": true
# }
# }'
Compréhension vidéo
Remarquekimi-k3 ne prend pas actuellement en charge l'entrée vidéo (il accepte uniquement le texte et les images) ; les exemples de compréhension vidéo de cette section ne s'appliquent donc pas à kimi-k3.
Fichier vidéo
Les modèles kimi-k2,7-code, kimi-k2,6 et kimi-k2,5 analysent les vidéos en extrayant une séquence d'images. Vous pouvez contrôler la stratégie d'extraction des images à l'aide des paramètres suivants :
-
fps : contrôle la fréquence d'extraction des images. L'intervalle entre les images extraites est de
\frac 1 {fps}secondes. La valeur doit se situer dans la plage [0,1, 10]. La valeur par défaut est 2,0.- Pour les scènes à mouvement rapide : définissez une valeur fps plus élevée pour capturer davantage de détails.
- Pour les vidéos statiques ou longues : définissez une valeur fps plus faible pour améliorer l'efficacité du traitement.
-
max_frames : spécifie le nombre maximal d'images à extraire d'une vidéo. La valeur par défaut et maximale est 2000.
Si le nombre d'images calculé à partir de la valeur fps dépasse cette limite, le système extrait automatiquement les images de manière uniforme pour respecter la limite max_frames. Ce paramètre est disponible uniquement lorsque vous utilisez le SDK DashScope.
OpenAI compatible
Lors de la transmission d'un fichier vidéo au modèle à l'aide du SDK OpenAI ou d'une requête HTTP, définissez le paramètre
"type"dans le message utilisateur sur"video_url".
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
# China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="kimi-k2.6",
messages=[
{
"role": "user",
"content": [
# When passing a video file directly, set the "type" parameter to "video_url".
{
"type": "video_url",
"video_url": {
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4"
},
"fps": 2
},
{
"type": "text",
"text": "What is the content of this video?"
}
]
}
]
)
print(completion.choices[0].message.content)
import OpenAI from "openai";
const openai = new OpenAI({
apiKey: process.env.DASHSCOPE_API_KEY,
// China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
baseURL: "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1"
});
async function main() {
const response = await openai.chat.completions.create({
model: "kimi-k2.6",
messages: [
{
role: "user",
content: [
// When passing a video file directly, set the "type" parameter to "video_url".
{
type: "video_url",
video_url: {
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4"
},
"fps": 2
},
{
type: "text",
text: "What is the content of this video?"
}
]
}
]
});
console.log(response.choices[0].message.content);
}
main();
# China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
curl -X POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "kimi-k2.6",
"messages": [
{
"role": "user",
"content": [
{
"type": "video_url",
"video_url": {
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4"
},
"fps":2
},
{
"type": "text",
"text": "What is the content of this video?"
}
]
}
]
}'
DashScope
import dashscope
import os
# China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
dashscope.base_http_api_url = "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1"
messages = [
{"role": "user",
"content": [
# The fps parameter sets the frame extraction frequency; the interval between frames is 1/fps seconds.
{"video": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4","fps":2},
{"text": "What is the content of this video?"}
]
}
]
response = dashscope.MultiModalConversation.call(
# If the DASHSCOPE_API_KEY environment variable is not set, replace this line with your Model Studio API key: api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='kimi-k2.6',
messages=messages
)
print(response.output.choices[0].message.content[0]["text"])
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.JsonUtils;
import com.alibaba.dashscope.utils.Constants;
public class Main {
public static void simpleMultiModalConversationCall()
throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
// The fps parameter sets the frame extraction frequency; the interval between frames is 1/fps seconds.
Map<String, Object> params = new HashMap<>();
params.put("video", "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4");
params.put("fps", 2);
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
params,
Collections.singletonMap("text", "What is the content of this video?"))).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("kimi-k2.6")
.messages(Arrays.asList(userMessage))
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
}
public static void main(String[] args) {
// China (Beijing) region configuration. Replace {WorkspaceId} with your actual workspace ID. For other regions, use the corresponding base URL.
Constants.baseHttpApiUrl = "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1";
try {
simpleMultiModalConversationCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}
# China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
curl -X POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "kimi-k2.6",
"input":{
"messages":[
{"role": "user","content": [{"video": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4","fps":2},
{"text": "What is the content of this video?"}]}]}
}'
Liste d'images
Lorsque vous fournissez une vidéo sous forme de liste d'images (images pré-extraites), utilisez le paramètre fps pour spécifier le taux d'extraction d'images de la vidéo originale. Cette valeur indique que les images ont été extraites toutes les \frac 1 {fps} secondes, permettant au modèle de mieux comprendre la séquence des événements, la durée et les changements dynamiques.
OpenAI compatible
Lors de la transmission d'une vidéo sous forme de liste d'images à l'aide du SDK OpenAI ou d'une requête HTTP, définissez le paramètre
"type"dans le message utilisateur sur"video".
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
# China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="kimi-k2.6",
messages=[{"role": "user","content": [
# When passing an image list, set the "type" parameter in the user message to "video".
{"type": "video","video": [
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/xzsgiz/football1.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/tdescd/football2.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/zefdja/football3.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/aedbqh/football4.jpg"],
"fps":2},
{"type": "text","text": "Describe the action in this video."},
]}]
)
print(completion.choices[0].message.content)
import OpenAI from "openai";
const openai = new OpenAI({
apiKey: process.env.DASHSCOPE_API_KEY,
// China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
baseURL: "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1"
});
async function main() {
const response = await openai.chat.completions.create({
model: "kimi-k2.6",
messages: [{
role: "user",
content: [
{
// When passing an image list, set the "type" parameter in the user message to "video".
type: "video",
video: [
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/xzsgiz/football1.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/tdescd/football2.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/zefdja/football3.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/aedbqh/football4.jpg"],
"fps":2
},
{
type: "text",
text: "Describe the action in this video."
}
]
}]
});
console.log(response.choices[0].message.content);
}
main();
# China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
curl -X POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "kimi-k2.6",
"messages": [{"role": "user","content": [{"type": "video","video": [
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/xzsgiz/football1.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/tdescd/football2.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/zefdja/football3.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/aedbqh/football4.jpg"],
"fps":2},
{"type": "text","text": "Describe the action in this video."}]}]
}'
DashScope
import os
import dashscope
# China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
dashscope.base_http_api_url = "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1"
messages = [{"role": "user",
"content": [
{"video":["https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/xzsgiz/football1.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/tdescd/football2.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/zefdja/football3.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/aedbqh/football4.jpg"],
"fps":2},
{"text": "Describe the action in this video."}]}]
response = dashscope.MultiModalConversation.call(
# If the DASHSCOPE_API_KEY environment variable is not set, replace this line with your Model Studio API key: api_key="sk-xxx"
api_key=os.getenv("DASHSCOPE_API_KEY"),
model='kimi-k2.6',
messages=messages
)
print(response.output.choices[0].message.content[0]["text"])
// Requires DashScope SDK v2.21.10 or later.
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
public class Main {
// China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
static {Constants.baseHttpApiUrl="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1";}
private static final String MODEL_NAME = "kimi-k2.6";
public static void videoImageListSample() throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
Map<String, Object> params = new HashMap<>();
params.put("video", Arrays.asList("https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/xzsgiz/football1.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/tdescd/football2.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/zefdja/football3.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/aedbqh/football4.jpg"));
params.put("fps", 2);
MultiModalMessage userMessage = MultiModalMessage.builder()
.role(Role.USER.getValue())
.content(Arrays.asList(
params,
Collections.singletonMap("text", "Describe the action in this video.")))
.build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model(MODEL_NAME)
.messages(Arrays.asList(userMessage)).build();
MultiModalConversationResult result = conv.call(param);
System.out.print(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
}
public static void main(String[] args) {
try {
videoImageListSample();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}
# China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
curl -X POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "kimi-k2.6",
"input": {
"messages": [
{
"role": "user",
"content": [
{
"video": [
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/xzsgiz/football1.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/tdescd/football2.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/zefdja/football3.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/aedbqh/football4.jpg"
],
"fps":2
},
{
"text": "Describe the action in this video."
}
]
}
]
}
}'
Transmettre un fichier local
Les exemples suivants illustrent la transmission d'un fichier local. L'API compatible OpenAI prend uniquement en charge l'encodage Base64, tandis que DashScope accepte à la fois l'encodage Base64 et les chemins de fichiers.
Compatible OpenAI
Pour transmettre un fichier local via un encodage Base64, construisez une URL de données. Pour plus d'informations, reportez-vous à la section Construire une URL de données.
from openai import OpenAI
import os
import base64
# Encoding function: Converts a local file to a Base64-encoded string.
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
# Replace "xxx/eagle.png" with the absolute path to your local image.
base64_image = encode_image("xxx/eagle.png")
client = OpenAI(
api_key=os.getenv('DASHSCOPE_API_KEY'),
# China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="kimi-k2.6",
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {"url": f"data:image/png;base64,{base64_image}"},
},
{"type": "text", "text": "What scene is depicted in the image?"},
],
}
],
)
print(completion.choices[0].message.content)
# The following examples show how to pass a local video file and a local image list.
# [Local video file] Encode the local video as a Data URL and pass it to the video_url parameter:
# def encode_video_to_data_url(video_path):
# with open(video_path, "rb") as f:
# return "data:video/mp4;base64," + base64.b64encode(f.read()).decode("utf-8")
# video_data_url = encode_video_to_data_url("xxx/local.mp4")
# content = [{"type": "video_url", "video_url": {"url": video_data_url}, "fps": 2}, {"type": "text", "text": "What is the content of this video?"}]
# [Local image list] Encode multiple local images with Base64 and pass them as a list to the video parameter:
# image_data_urls = [f"data:image/jpeg;base64,{encode_image(p)}" for p in ["xxx/f1.jpg", "xxx/f2.jpg", "xxx/f3.jpg", "xxx/f4.jpg"]]
# content = [{"type": "video", "video": image_data_urls, "fps": 2}, {"type": "text", "text": "Describe the sequence of events in this video."}]
import OpenAI from "openai";
import { readFileSync } from 'fs';
const openai = new OpenAI(
{
apiKey: process.env.DASHSCOPE_API_KEY,
// China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
baseURL: "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1"
}
);
const encodeImage = (imagePath) => {
const imageFile = readFileSync(imagePath);
return imageFile.toString('base64');
};
// Replace "xxx/eagle.png" with the absolute path to your local image.
const base64Image = encodeImage("xxx/eagle.png")
async function main() {
const completion = await openai.chat.completions.create({
model: "kimi-k2.6",
messages: [
{"role": "user",
"content": [{"type": "image_url",
"image_url": {"url": `data:image/png;base64,${base64Image}`},},
{"type": "text", "text": "What scene is depicted in the image?"}]}]
});
console.log(completion.choices[0].message.content);
}
main();
// The following examples show how to pass a local video file and a local image list.
// [Local video file] Encode the local video as a Data URL and pass it to the video_url parameter:
// const encodeVideoToDataUrl = (videoPath) => "data:video/mp4;base64," + readFileSync(videoPath).toString("base64");
// const videoDataUrl = encodeVideoToDataUrl("xxx/local.mp4");
// content: [{ type: "video_url", video_url: { url: videoDataUrl }, fps: 2 }, { type: "text", text: "What is the content of this video?" }]
// [Local image list] Encode multiple local images with Base64 and pass them as a list to the video parameter:
// const imageDataUrls = ["xxx/f1.jpg","xxx/f2.jpg","xxx/f3.jpg","xxx/f4.jpg"].map(p => `data:image/jpeg;base64,${encodeImage(p)}`);
// content: [{ type: "video", video: imageDataUrls, fps: 2 }, { type: "text", text: "Describe the sequence of events in this video." }]
// messages: [{"role": "user", "content": content}]
// Then call openai.chat.completions.create({model: "kimi-k2.6", messages: messages})
DashScope
Encodage Base64
Pour transmettre un fichier local via un encodage Base64, construisez une URL de données. Pour plus d'informations, reportez-vous à la section Construire une URL de données.
import base64
import os
import dashscope
from dashscope import MultiModalConversation
# China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
dashscope.base_http_api_url = "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1"
# Encoding function: Converts a local file to a Base64-encoded string.
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
# Replace "xxx/eagle.png" with the absolute path to your local image.
base64_image = encode_image("xxx/eagle.png")
messages = [
{
"role": "user",
"content": [
{"image": f"data:image/png;base64,{base64_image}"},
{"text": "What scene is depicted in the image?"},
],
},
]
response = MultiModalConversation.call(
# If the DASHSCOPE_API_KEY environment variable is not set, pass your Model Studio API key directly, for example: api_key="sk-xxx"
api_key=os.getenv("DASHSCOPE_API_KEY"),
model="kimi-k2.6",
messages=messages,
)
print(response.output.choices[0].message.content[0]["text"])
# The following examples show how to pass a local video file and a local image list.
# [Local video file]
# video_data_url = "data:video/mp4;base64," + base64.b64encode(open("xxx/local.mp4","rb").read()).decode("utf-8")
# content: [{"video": video_data_url, "fps": 2}, {"text": "What is the content of this video?"}]
# [Local image list]
# image_data_urls = [f"data:image/jpeg;base64,{encode_image(p)}" for p in ["xxx/f1.jpg","xxx/f2.jpg","xxx/f3.jpg","xxx/f4.jpg"]]
# content: [{"video": image_data_urls, "fps": 2}, {"text": "Describe the sequence of events in this video."}]
import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Base64;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import com.alibaba.dashscope.aigc.multimodalconversation.*;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
public class Main {
// China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
static {Constants.baseHttpApiUrl="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1";}
private static String encodeToBase64(String imagePath) throws IOException {
Path path = Paths.get(imagePath);
byte[] imageBytes = Files.readAllBytes(path);
return Base64.getEncoder().encodeToString(imageBytes);
}
public static void callWithLocalFile(String localPath) throws ApiException, NoApiKeyException, UploadFileException, IOException {
String base64Image = encodeToBase64(localPath);
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
new HashMap<String, Object>() {{ put("image", "data:image/png;base64," + base64Image); }},
new HashMap<String, Object>() {{ put("text", "What scene is depicted in the image?"); }}
)).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("kimi-k2.6")
.messages(Arrays.asList(userMessage))
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
}
public static void main(String[] args) {
try {
// Replace "xxx/eagle.png" with the absolute path to your local image.
callWithLocalFile("xxx/eagle.png");
} catch (ApiException | NoApiKeyException | UploadFileException | IOException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
// The following examples show how to pass a local video file and a local image list.
// [Local video file]
// String base64Video = encodeToBase64(localPath);
// MultiModalConversation conv = new MultiModalConversation();
// MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
// .content(Arrays.asList(
// new HashMap<String, Object>() {{ put("video", "data:video/mp4;base64," + base64Video); }},
// new HashMap<String, Object>() {{ put("text", "What scene is depicted in this video?"); }}
// )).build();
// [Local image list]
// List<String> urls = Arrays.asList(
// "data:image/jpeg;base64,"+encodeToBase64("path/f1.jpg"),
// "data:image/jpeg;base64,"+encodeToBase64("path/f2.jpg"),
// "data:image/jpeg;base64,"+encodeToBase64("path/f3.jpg"),
// "data:image/jpeg;base64,"+encodeToBase64("path/f4.jpg"));
// MultiModalConversation conv = new MultiModalConversation();
// MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
// .content(Arrays.asList(
// new HashMap<String, Object>() {{ put("video", urls); }},
// new HashMap<String, Object>() {{ put("text", "What scene is depicted in this video?"); }}
// )).build();
}
Chemin de fichier
Vous pouvez transmettre directement le chemin d'un fichier local au modèle. Cette méthode est prise en charge uniquement par les SDK Python et Java de DashScope ; elle n'est pas disponible pour l'API HTTP DashScope ni pour l'API compatible OpenAI. Le tableau ci-dessous indique le format de chemin de fichier requis pour chaque langage de programmation et système d'exploitation.
Spécifier un chemin de fichier (exemple d'image)
Système | SDK | Format du chemin | Exemple |
|---|---|---|---|
Linux ou macOS | SDK Python | file://{chemin absolu du fichier} | file:///home/images/test.png |
SDK Java | |||
Windows | SDK Python | file://{chemin absolu du fichier} | file://D:/images/test.png |
SDK Java | file:///{chemin absolu du fichier} | file:///D:/images/test.png |
import os
from dashscope import MultiModalConversation
import dashscope
# China (Beijing) region. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region.
dashscope.base_http_api_url = "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1"
# Replace "xxx/eagle.png" with the absolute path to your local image.
local_path = "xxx/eagle.png"
image_path = f"file://{local_path}"
messages = [
{'role':'user',
'content': [{'image': image_path},
{'text': 'What scene is depicted in the image?'}]}]
response = MultiModalConversation.call(
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='kimi-k2.6',
messages=messages)
print(response.output.choices[0].message.content[0]["text"])
# The following examples show how to pass a local video and a list of local images using file paths.
# [Local video file]
# video_path = "file:///path/to/local.mp4"
# content: [{"video": video_path, "fps": 2}, {"text": "What is the content of this video?"}]
# [Local image list]
# image_paths = ["file:///path/f1.jpg", "file:///path/f2.jpg", "file:///path/f3.jpg", "file:///path/f4.jpg"]
# content: [{"video": image_paths, "fps": 2}, {"text": "Describe the sequence of events in this video."}]
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
public class Main {
public static void callWithLocalFile(String localPath)
throws ApiException, NoApiKeyException, UploadFileException {
String filePath = "file://"+localPath;
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(new HashMap<String, Object>(){{put("image", filePath);}},
new HashMap<String, Object>(){{put("text", "What scene is depicted in the image?");}})).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("kimi-k2.6")
.messages(Arrays.asList(userMessage))
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));}
public static void main(String[] args) {
// China (Beijing) region configuration. Replace {WorkspaceId} with your actual workspace ID. For other regions, use the corresponding base URL.
Constants.baseHttpApiUrl = "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1";
try {
// Replace "xxx/eagle.png" with the absolute path to your local image.
callWithLocalFile("xxx/eagle.png");
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
// The following examples show how to pass a local video and a list of local images using file paths.
// [Local video file]
// String filePath = "file://"+localPath;
// MultiModalConversation conv = new MultiModalConversation();
// MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
// .content(Arrays.asList(new HashMap<String, Object>(){{put("video", filePath);}},
// new HashMap<String, Object>(){{put("text", "What scene is depicted in the video?");}})).build();
// [Local image list]
// MultiModalConversation conv = new MultiModalConversation();
// List<String> filePath = Arrays.asList("file:///path/f1.jpg", "file:///path/f2.jpg", "file:///path/f3.jpg", "file:///path/f4.jpg")
// MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
// .content(Arrays.asList(new HashMap<String, Object>(){{put("video", filePath);}},
// new HashMap<String, Object>(){{put("text", "What scene is depicted in the video?");}})).build();
}
Limitations des fichiers
Limitations des images
-
Résolution de l'image :
- Taille minimale : la largeur et la hauteur doivent chacune dépasser
10pixels. - Ratio d'aspect : le rapport entre le côté le plus long et le côté le plus court ne doit pas dépasser
200:1. - Résolution maximale : la résolution maximale recommandée est de
8K(7680x4320). Des résolutions supérieures peuvent entraîner des délais d'expiration des appels API en raison de la taille importante des fichiers ou de la lenteur des transferts réseau.
- Taille minimale : la largeur et la hauteur doivent chacune dépasser
-
Formats d'image pris en charge
-
Les formats suivants sont pris en charge pour les résolutions inférieures à 4K
(3840x2160):Format d'image
Extension de fichier
Type MIME
BMP
.bmp
image/bmp
JPEG
.jpe, .jpeg, .jpg
image/jpeg
PNG
.png
image/png
TIFF
.tif, .tiff
image/tiff
WEBP
.webp
image/webp
HEIC
.heic
image/heic
-
Pour les résolutions comprises entre
4K(3840x2160)et8K(7680x4320), seuls les formats JPEG, JPG et PNG sont pris en charge.
-
-
Taille de l'image :
- Lorsque vous fournissez une image via une URL publique ou un chemin local, sa taille ne doit pas dépasser
10 Mo. - Lors de l'utilisation de l'encodage Base64, la chaîne encodée ne doit pas dépasser
10 Mo.
Pour compresser un fichier, consultez la rubrique Comment compresser une image ou une vidéo pour respecter la limite de taille .
- Lorsque vous fournissez une image via une URL publique ou un chemin local, sa taille ne doit pas dépasser
-
Nombre d'images prises en charge : Lorsque vous fournissez plusieurs images, le nombre total de jetons pour toutes les images et le texte ne doit pas dépasser la limite d'entrée maximale du modèle.
Limitations des vidéos
-
Sous forme de liste d'images : de 4 à 2 000 images.
-
Sous forme de fichier vidéo :
-
Taille de la vidéo :
- Via une URL publique : jusqu'à 2 Go.
- Via un encodage Base64 : la chaîne encodée doit être inférieure à 10 Mo.
- Via un chemin de fichier local : jusqu'à 100 Mo.
-
Durée de la vidéo : de 2 secondes à 1 heure.
-
Taille de la vidéo :
-
Format vidéo : Les formats pris en charge incluent MP4, AVI, MKV, MOV, FLV et WMV.
-
Résolution vidéo : Bien qu'il n'y ait pas de limite stricte de résolution, utilisez une résolution 2K ou inférieure pour obtenir les meilleurs résultats. Des résolutions plus élevées augmentent le temps de traitement sans améliorer la compréhension du modèle.
-
Compréhension audio : Le modèle ne traite pas la piste audio des fichiers vidéo.
Autres fonctionnalités
Modèle | |||||||
|---|---|---|---|---|---|---|---|
kimi-k3 | Pris en charge | Pris en charge | Pris en charge | Pris en charge | Pris en charge | Pris en charge | Pris en charge |
kimi-k2,7-code | Pris en charge | Pris en charge | Pris en charge | Non pris en charge | Non pris en charge | Non pris en charge | Pris en charge |
kimi-k2,6 | Pris en charge | Pris en charge | Pris en charge | Non pris en charge | Non pris en charge | Non pris en charge | Pris en charge |
kimi-k2,5 | Pris en charge | Pris en charge | Pris en charge | Non pris en charge | Non pris en charge | Non pris en charge | Pris en charge |
Outils chargés dynamiquement (Kimi K3)
Lorsqu'une application doit monter un grand nombre d'outils, l'inclusion de toutes les déclarations d'outils dans le champ tools de premier niveau de la requête entraîne une inflation des définitions d'outils. Chaque requête doit transporter la description et le schéma de paramètres de tous les outils, ce qui augmente considérablement la consommation de jetons. De plus, plus le nombre d'outils candidats est élevé, plus le risque que le modèle sélectionne le mauvais outil et construise des arguments d'appel incorrects est important.
Les outils chargés dynamiquement vous permettent d'injecter des outils à la demande au cours d'une conversation : montez d'abord quelques outils principaux, puis insérez dynamiquement les outils spécifiques nécessaires lorsque la conversation l'exige directement dans le champ messages. Cette approche réduit la consommation de jetons et améliore la précision de la sélection des outils.
RemarqueLes outils chargés dynamiquement sont actuellement pris en charge uniquement par kimi-k3. Toute tentative d'utilisation sur d'autres modèles (tels que kimi-k2,6) renvoie une erreur tokenization failed.
Injecter des déclarations d'outils dans les messages
Insérez un message avec le champ role défini sur system dans le tableau messages, et déclarez les outils à charger via le champ tools de ce message. Le format est identique à celui du champ tools de premier niveau de la requête, et vous devez fournir les informations complètes de l'outil (name, description, parameters).
-
Un message
systemcontenant un champtoolspossède le même statut qu'un message ordinaire : les outils deviennent visibles pour le modèle à partir de la position où ce message apparaît dans la listemessages. -
Les outils chargés dynamiquement coexistent avec les outils globaux déclarés dans le champ
toolsde premier niveau de la requête ; le modèle peut voir simultanément ces deux types d'outils. -
Une déclaration d'outil injectée dynamiquement doit être une définition d'outil complète ; vous ne pouvez pas transmettre uniquement le nom de l'outil ni faire référence à un outil déclaré globalement.
-
Un message
enable_thinking temperature top_p presence_penalty fps max_framessystemcontenant un champtoolsne doit pas inclure de champcontentkimi-k3
true (mode réflexion uniquement, ne peut pas être désactivé)
1,0
0,95
0,0
kimi-k2,7-code
true (mode réflexion uniquement)
1,0
0,95
0,0
2
2000
kimi-k2,6
false
mode réflexion : 1,0
mode sans réflexion : 0,6
Les deux modes : 0,95
Les deux modes : 0,0
2
2000
kimi-k2,5
false
mode réflexion : 1,0
mode sans réflexion : 0,6
Les deux modes : 0,95
Les deux modes : 0,0
2
2000
Un tiret (-) indique que le paramètre ne s'applique pas.
Modèles et facturation
La série Kimi regroupe des grands modèles de langage développés par Moonshot AI.
- kimi-k3 : le modèle phare le plus performant de Kimi à ce jour. Il raisonne systématiquement et utilise la réflexion préservée (mode réflexion uniquement). Il prend en charge les entrées textuelles et imagées (les entrées vidéo ne sont pas prises en charge), les tâches de conversation et d'agent, ainsi que le chargement dynamique d'outils.
- kimi-k2,7-code : le modèle Kimi le plus performant pour le codage. Il suit plus fiablement les instructions dans des contextes longs et obtient des taux de réussite plus élevés sur les tâches de programmation. Il prend en charge les entrées textuelles, imagées et vidéo, le mode réflexion, ainsi que les tâches de conversation et d'agent.
- kimi-k2,6 : le modèle le plus récent et le plus performant de la série Kimi. Il offre des performances améliorées en matière de codage sur le long terme, de suivi des instructions et d'auto-correction. Il prend en charge les entrées textuelles, imagées et vidéo, les modes avec et sans réflexion, ainsi que les tâches de conversation et d'agent.
- kimi-k2,5 : il atteint des performances de pointe (SOTA) sur les benchmarks open source pour les tâches d'agent, la génération de code, la compréhension visuelle et d'autres tâches d'intelligence générale. Il prend en charge les entrées imagées, vidéo et textuelles, les modes avec et sans réflexion, ainsi que les tâches de conversation et d'agent.
Remarquekimi-k3 ne prend pas en charge le paramètre thinking_budget. Vous ne pouvez pas utiliser ce paramètre pour limiter la longueur de la réflexion.
kimi-k3 ne prend pas encore en charge l'API Responses compatible OpenAI (disponible prochainement). Utilisez plutôt l'API Chat Completions compatible OpenAI.
Pour les tarifs, consultez facturation des appels de modèle .
Pour les détails sur les tarifs et la fenêtre de contexte, consultez la console Model Studio.
La facturation est basée sur le nombre de jetons d'entrée et de sortie.
En mode réflexion, la chaîne de pensée compte comme des jetons de sortie.
Codes d'erreur
Si un appel de modèle échoue et renvoie un message d'erreur, consultez Codes d'erreur.