Kimi K2.5 API 为开发者提供了程序化访问月之暗面(Moonshot AI)旗舰模型的能力。本指南涵盖从身份认证到高级集成模式的所有内容,帮助您使用 Kimi K2.5 构建强大的AI应用。
Kimi K2.5 API 简介
Kimi K2.5 API 是一个RESTful接口,允许开发者将 Kimi K2.5 的能力集成到应用中。基于OpenAI兼容的API格式,它可与现有工具和框架无缝集成,同时支持 Kimi K2.5 的独特功能,如256K上下文窗口和多模态输入。
核心功能
| 功能 | 描述 |
|---|---|
| 256K上下文窗口 | 处理约200页文档 |
| 多模态支持 | 文本、图像和文档输入 |
| 流式响应 | 实时token生成 |
| 函数调用 | 工具使用和智能体工作流 |
| OpenAI兼容 | 可直接替换OpenAI SDK |
| 上下文缓存 | 重复上下文降低成本 |
开始使用 Kimi K2.5 API
1. 获取API凭证
在 月之暗面AI平台 注册获取API密钥:
- 在月之暗面开发者门户创建账户
- 导航到API密钥管理页面
- 生成新的API密钥
- 安全存储(建议使用环境变量)
2. API基础地址
https://api.moonshot.cn/v13. 身份认证
所有API请求都需要通过Bearer令牌认证:
Authorization: Bearer YOUR_API_KEYKimi K2.5 API 代码示例
Python 集成
基础对话完成
import openai
# 配置客户端
client = openai.OpenAI(
api_key="your-kimi-api-key",
base_url="https://api.moonshot.cn/v1"
)
# 简单对话
response = client.chat.completions.create(
model="kimi-k2.5",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "用简单的语言解释机器学习。"}
],
temperature=0.7,
max_tokens=1000
)
print(response.choices[0].message.content)流式响应
import openai
client = openai.OpenAI(
api_key="your-kimi-api-key",
base_url="https://api.moonshot.cn/v1"
)
stream = client.chat.completions.create(
model="kimi-k2.5",
messages=[
{"role": "user", "content": "写一个计算斐波那契数的Python函数。"}
],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")带图像的多模态请求
import openai
import base64
client = openai.OpenAI(
api_key="your-kimi-api-key",
base_url="https://api.moonshot.cn/v1"
)
# 读取并编码图像
with open("chart.png", "rb") as f:
image_data = base64.b64encode(f.read()).decode()
response = client.chat.completions.create(
model="kimi-k2.5",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "分析这张图表并总结关键趋势。"},
{
"type": "image_url",
"image_url": {
"url": f"data:image/png;base64,{image_data}"
}
}
]
}
]
)
print(response.choices[0].message.content)JavaScript/Node.js 集成
基础Fetch请求
const response = await fetch('https://api.moonshot.cn/v1/chat/completions', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({
model: 'kimi-k2.5',
messages: [
{ role: 'system', content: 'You are a coding assistant.' },
{ role: 'user', content: '生成一个待办事项列表的React组件。' }
],
temperature: 0.7,
max_tokens: 2000
})
});
const data = await response.json();
console.log(data.choices[0].message.content);使用OpenAI SDK
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'your-kimi-api-key',
baseURL: 'https://api.moonshot.cn/v1'
});
async function generateCode() {
const stream = await client.chat.completions.create({
model: 'kimi-k2.5',
messages: [
{ role: 'user', content: '用FastAPI创建Python API' }
],
stream: true
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content || '');
}
}
generateCode();cURL 示例
# 基础对话完成
curl https://api.moonshot.cn/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "kimi-k2.5",
"messages": [
{"role": "user", "content": "你好,Kimi!"}
]
}'
# 带系统提示和参数
curl https://api.moonshot.cn/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "kimi-k2.5",
"messages": [
{"role": "system", "content": "你是Python专家。"},
{"role": "user", "content": "解释装饰器。"}
],
"temperature": 0.3,
"max_tokens": 1500
}'Kimi K2.5 API 高级功能
函数调用 / 工具使用
import openai
client = openai.OpenAI(
api_key="your-kimi-api-key",
base_url="https://api.moonshot.cn/v1"
)
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取某地的天气",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "城市名称"
}
},
"required": ["location"]
}
}
}
]
response = client.chat.completions.create(
model="kimi-k2.5",
messages=[
{"role": "user", "content": "北京天气怎么样?"}
],
tools=tools
)
# 检查模型是否想调用函数
if response.choices[0].message.tool_calls:
tool_call = response.choices[0].message.tool_calls[0]
print(f"要调用的函数: {tool_call.function.name}")
print(f"参数: {tool_call.function.arguments}")长上下文文档处理
import openai
client = openai.OpenAI(
api_key="your-kimi-api-key",
base_url="https://api.moonshot.cn/v1"
)
# 读取长文档
document = open("annual_report.txt", "r", encoding="utf-8").read()
response = client.chat.completions.create(
model="kimi-k2.5",
messages=[
{
"role": "user",
"content": f"总结这份报告中的关键财务指标:\n\n{document}"
}
],
max_tokens=2000
)
print(response.choices[0].message.content)Kimi K2.5 API 定价
| 类型 | 价格 | 单位 |
|---|---|---|
| 上下文缓存命中 | ¥0.70 | / 1M tokens |
| 上下文缓存未命中 | ¥4.00 | / 1M tokens |
| 输出tokens | ¥21.00 | / 1M tokens |
成本优化建议
- 使用上下文缓存:对于重复上下文,缓存可显著降低成本
- 流式响应:对于实时应用,流式改善用户体验
- 优化提示词:清晰简洁的提示词减少token使用
- 批量请求:可能时将多个项目批量处理
错误处理
常见HTTP状态码
| 状态码 | 含义 | 解决方案 |
|---|---|---|
| 200 | 成功 | 请求成功完成 |
| 400 | 请求格式错误 | 检查请求格式和参数 |
| 401 | 未授权 | 验证API密钥 |
| 429 | 速率限制 | 降低请求频率 |
| 500 | 服务器错误 | 指数退避后重试 |
Python错误处理示例
import openai
from openai import RateLimitError, APIError
client = openai.OpenAI(
api_key="your-kimi-api-key",
base_url="https://api.moonshot.cn/v1"
)
try:
response = client.chat.completions.create(
model="kimi-k2.5",
messages=[{"role": "user", "content": "你好"}]
)
except RateLimitError:
print("超出速率限制。请等待后重试。")
except APIError as e:
print(f"API错误: {e}")
except Exception as e:
print(f"意外错误: {e}")Kimi K2.5 API 最佳实践
1. 安全的API密钥管理
import os
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv("KIMI_API_KEY")
client = openai.OpenAI(
api_key=api_key,
base_url="https://api.moonshot.cn/v1"
)2. 实现重试逻辑
import time
from functools import wraps
def retry_with_backoff(max_retries=3):
def decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
for i in range(max_retries):
try:
return func(*args, **kwargs)
except Exception as e:
if i == max_retries - 1:
raise
time.sleep(2 ** i) # 指数退避
return None
return wrapper
return decorator
@retry_with_backoff(max_retries=3)
def call_kimi_api(messages):
return client.chat.completions.create(
model="kimi-k2.5",
messages=messages
)3. 请求批处理
# 替代多个单独请求
requests = [
"总结段落1",
"总结段落2",
"总结段落3"
]
# 批处理为单个请求
batch_prompt = "总结以下每个段落:\n\n" + "\n\n".join(
f"{i+1}. {req}" for i, req in enumerate(requests)
)
response = client.chat.completions.create(
model="kimi-k2.5",
messages=[{"role": "user", "content": batch_prompt}]
)集成示例
FastAPI后端
from fastapi import FastAPI
from pydantic import BaseModel
import openai
app = FastAPI()
client = openai.OpenAI(
api_key="your-kimi-api-key",
base_url="https://api.moonshot.cn/v1"
)
class ChatRequest(BaseModel):
message: str
temperature: float = 0.7
@app.post("/chat")
async def chat(request: ChatRequest):
response = client.chat.completions.create(
model="kimi-k2.5",
messages=[{"role": "user", "content": request.message}],
temperature=request.temperature
)
return {"response": response.choices[0].message.content}常见问题
如何获取 Kimi K2.5 API 密钥?
访问 月之暗面AI平台,创建账户,从开发者控制台生成API密钥。
Kimi K2.5 API 与 OpenAI 兼容吗?
是的,Kimi K2.5 API 使用OpenAI兼容格式。只需将 base_url 改为 https://api.moonshot.cn/v1 即可使用OpenAI SDK。
Kimi K2.5 API 的速率限制是多少?
速率限制基于账户累计充值金额分层(Tier0-Tier5),而不是 Free/Pro/Enterprise 套餐。以 Tier0(累计充值 ¥0)为例:并发 1、RPM 3、TPM 500,000、TPD 1,500,000。请以官方限速页面最新表格为准。
Kimi K2.5 API 支持流式响应吗?
是的,在请求中设置 stream=True 即可在生成时接收token,实现实时响应。
我可以使用 Kimi K2.5 API 进行图像分析吗?
是的,Kimi K2.5 API 支持多模态输入,包括图像。在消息中使用base64编码的图像。
Kimi K2.5 API 的价格是多少?
定价从缓存命中每百万tokens ¥0.70起,缓存未命中¥4.00,输出tokens¥21.00。