PythonAI算法
Kimi K2.5 开源部署、API 接入、Agent 集群与多模态实战
Kimi K2.5 模型的本地开源部署方案,包括 Docker 和源码两种方式。详细说明了通过 API 接入兼容 OpenAI SDK 进行文本交互、多模态视觉识别及批量调用的方法。此外,还讲解了单节点与多节点 Agent 集群的部署配置、负载均衡优化策略,以及推理速度优化和数据持久化备份等进阶技巧。内容包含环境配置、代码示例及常见问题排查指南。

Kimi K2.5 模型的本地开源部署方案,包括 Docker 和源码两种方式。详细说明了通过 API 接入兼容 OpenAI SDK 进行文本交互、多模态视觉识别及批量调用的方法。此外,还讲解了单节点与多节点 Agent 集群的部署配置、负载均衡优化策略,以及推理速度优化和数据持久化备份等进阶技巧。内容包含环境配置、代码示例及常见问题排查指南。

# 1. Docker 国内镜像(全系统通用)
mkdir -p /etc/docker
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn", "https://hub-mirror.c.163.com"]
}
EOF
systemctl daemon-reload && systemctl restart docker
# 2. Python 清华源(全系统通用)
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 3. Git 国内加速(拉取源码用)
git config --global url."https://ghproxy.com/https://github.com/".insteadOf "https://github.com/"
# Ubuntu/WSL2
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
sudo apt install git -y
# Windows(管理员 PowerShell)
wget https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe -O DockerInstaller.exe
./DockerInstaller.exe /silent
# Git 下载:https://git-scm.com/download/win(默认安装)
# 克隆 Kimi K2.5 中文开源版(适配国内环境)
git clone https://ghproxy.com/https://github.com/moonshot-ai/Kimi-K2.5.git
cd Kimi-K2.5
# 构建 Docker 镜像(指定量化版,降低硬件门槛)
docker build -t kimi-k2.5:unsloth-1.8bit .
# 创建数据持久化卷(防止配置/模型数据丢失)
docker volume create kimi-k2.5-data
# 启动容器(映射 8080 端口,后台运行,开机自启)
docker run -d \
--name kimi-k2.5-local \
--gpus all \
-p 8080:8080 \
-v kimi-k2.5-data:/root/.kimi \
--restart unless-stopped \
kimi-k2.5:unsloth-1.8bit \
--model-path /root/models/kimi-k2.5 \
--port 8080 \
--num-gpus 1
# 查看容器运行状态
docker ps | grep kimi-k2.5-local
# 浏览器访问(本地/局域网通用)
http://本机 IP:8080
# 出现 Kimi K2.5 交互界面,输入任意问题能正常响应即成功
# 升级 pip+ 安装基础依赖
pip install --upgrade pip
pip install torch==2.1.2 torchvision==0.16.2 transformers==4.38.2 accelerate==0.27.2
pip install unsloth==2024.5 postgresql sentencepiece protobuf==4.25.3 gradio==4.21.0
# 安装推理引擎(vLLM,提升 3-5 倍推理速度)
pip install vllm==0.4.2
# 安装 Hugging Face CLI
pip install huggingface-hub
# 登录(需注册 Hugging Face 账号,获取 token)
huggingface-cli login
# 下载 1.8-bit 量化版(230GB,GPU≥24G,推荐)
huggingface-cli download moonshot/Kimi-K2.5 \
--local-dir ./kimi-k2.5-model \
--local-dir-use-symlinks False \
--revision unsloth-1.8bit
kimi_local_gradio.py,复制完整代码:from unsloth import FastLanguageModel
import gradio as gr
# 加载模型(指定本地权重目录)
model, tokenizer = FastLanguageModel.from_pretrained(
model_name_or_path="./kimi-k2.5-model",
max_seq_length=128000, # 支持 128K 长上下文
dtype=None, # 自动匹配量化类型
load_in_4bit=False # 1.8-bit 量化版无需开启
)
# 开启推理优化
model = FastLanguageModel.get_peft_model(
model, r=16, lora_alpha=32, lora_dropout=0.05,
target_modules=("q_proj", "v_proj"), bias="none",
use_gradient_checkpointing="unsloth", random_state=42,
)
# 推理函数
def kimi_infer(prompt, mode="快速模式"):
temperature = 0.6 if mode == "快速模式" else (1.0 if mode == "思考模式" else 0.8)
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
outputs = model.generate(
**inputs, temperature=temperature, top_p=0.95, min_p=0.01, max_new_tokens=4096, repetition_penalty=1.0
)
return tokenizer.decode(outputs[0], skip_special_tokens=True)[len(prompt):]
# 启动可视化界面
with gr.Blocks(title=) demo:
gr.Markdown()
gr.Row():
gr.Column(width=):
prompt = gr.Textbox(label=, lines=, placeholder=)
mode = gr.Dropdown((, , ), label=, value=)
submit_btn = gr.Button(, variant=, size=)
gr.Column(width=):
output = gr.Textbox(label=, lines=, interactive=)
submit_btn.click(kimi_infer, [prompt, mode], output)
__name__ == :
demo.launch(server_name=, server_port=, share=)
# 启动服务
python kimi_local_gradio.py
# 浏览器访问 http://本机 IP:8080,输入问题响应正常即成功
# 安装核心依赖(兼容 OpenAI SDK,支持多模态调用)
pip install --upgrade openai python-dotenv
import os
from openai import OpenAI
# 初始化客户端(替换为你的 API-Key)
client = OpenAI(
api_key="sk-your-api-key", # 必改:替换成自己的 Kimi API-Key
base_url="https://yibuapi.com/v1" # 固定地址,无需修改
)
# 调用 Kimi K2.5(支持 128K 长上下文)
completion = client.chat.completions.create(
model="kimi-k2.5",
messages=[{"role": "user", "content": "用 Python 实现快速排序算法,添加详细注释,适配任意整数列表"}],
temperature=0.6, # 0-1,数值越低结果越稳定
max_tokens=2048 # 最大输出长度,按需调整
)
# 输出结果
print("【文本交互结果】")
print(completion.choices[0].message.content)
import os
import base64
from openai import OpenAI
client = OpenAI(
api_key="sk-your-api-key", # 必改:替换成自己的 API-Key
base_url="https://yibuapi.com/v1"
)
# 读取本地图片并进行 base64 编码(视觉任务必需)
image_path = "test.png" # 必改:替换为你的图片路径(绝对路径优先)
with open(image_path, "rb") as f:
image_data = f.read()
# 构建图片 URL(base64 格式)
image_ext = os.path.splitext(image_path)[1].strip('.')
image_url = f"data:image/{image_ext};base64,{base64.b64encode(image_data).decode('utf-8')}"
# 调用多模态识别(详细解析图片内容)
completion = client.chat.completions.create(
model="kimi-k2.5",
messages=[
{"role": "system", "content": "精准识别图片中的文字、物体、布局,给出详细描述"},
{"role": "user", "content": [
{"type": "image_url", "image_url": {"url": image_url}},
{"type": "text", "text": "详细描述这张图片的所有可见元素和布局结构"}
]}
],
temperature=0.7, max_tokens=2048
)
print("【多模态视觉识别结果】")
print(completion.choices[0].message.content)
import os
from openai import OpenAI
client = OpenAI(
api_key="sk-your-api-key", # 必改:替换成自己的 API-Key
base_url="https://yibuapi.com/v1"
)
# 批量文本任务(示例:批量解析 3 个技术问题)
batch_prompts = [
"解释什么是大模型量化,有哪些常用方法",
"对比 vLLM 和 SGLang 两种推理引擎的优劣",
"Kimi K2.5 的多模态能力和其他模型有什么区别"
]
# 批量调用并输出结果
for i, prompt in enumerate(batch_prompts, 1):
completion = client.chat.completions.create(
model="kimi-k2.5",
messages=[{"role": "user", "content": prompt}],
temperature=0.5, max_tokens=1024
)
print(f"【批量任务{i}结果】")
print(completion.choices[0].message.content)
print("-" * 50)
# 进入 Kimi K2.5 部署目录(Docker 部署进入容器,源码部署进入源码目录)
# Docker 部署进入容器
docker exec -it kimi-k2.5-local bash
# 启动 Agent 集群(单节点,支持 10 个子 Agent,动态调度)
kimi agent cluster start \
--cluster-name kimi-cluster-01 \
--agent-num 10 \
--port 8081 \
--model-path /root/models/kimi-k2.5 \
--max-concurrent 50 # 最大并发任务数
# 验证集群启动成功
kimi agent cluster status
# 输出'Cluster running,Agent count: 10'即为成功
# 节点 1(主节点,IP:192.168.1.100)启动集群主服务
kimi agent cluster start \
--cluster-name kimi-cluster-main \
--agent-num 20 \
--port 8081 \
--role master \
--model-path /root/models/kimi-k2.5
# 节点 2(从节点,IP:192.168.1.101)加入集群
kimi agent cluster join \
--master-ip 192.168.1.100 \
--master-port 8081 \
--agent-num 15 \
--role slave
# 查看集群节点状态(主节点执行)
kimi agent cluster node list
# 输出两个节点信息,Agent 总数 35 即为成功
# 发送集群任务指令(主节点执行/API 调用均可)
kimi agent cluster task submit \
--task "整理 GitHub Stars 排名前十的 Claude Code Skills 项目,含名称、链接、功能、语言分类" \
--agent-assign auto # 自动分配 Agent 分工(搜索 + 验证 + 聚合)
# 查看任务进度
kimi agent cluster task status --task-id 1
# 查看任务结果(生成结构化表格)
kimi agent cluster task result --task-id 1 --output ./github_projects.xlsx
# 提交并行任务(同时处理 3 个办公任务)
kimi agent cluster task submit \
--task "[任务 1] 统计今日飞书群消息数量,按部门分类;[任务 2] 解析 3 份 PDF 文档,提取核心要点;[任务 3] 生成今日工作报表,汇总任务 1 和 2 的结果" \
--agent-assign parallel # 并行分配 Agent,提升效率
# 调整集群并发数(根据 CPU/GPU 资源调整)
kimi agent cluster config set --max-concurrent 80
# 动态扩容 Agent 数量(无需停止集群)
kimi agent cluster agent add --agent-num 10
# 动态缩容 Agent 数量
kimi agent cluster agent remove --agent-num 5
# Docker 部署(进入容器执行)
docker exec -it kimi-k2.5-local bash
kimi config set multimodal.enable true
kimi gateway restart
# 源码部署(直接执行)
kimi config set multimodal.enable true
python kimi_local_gradio.py restart
# 重启服务生效
import os
import base64
from openai import OpenAI
client = OpenAI(
api_key="sk-your-api-key", # 必改:替换成自己的 API-Key
base_url="https://yibuapi.com/v1"
)
# 读取图片(PDF 截图/扫描件均可)
image_path = "ocr-test.png"
with open(image_path, "rb") as f:
image_data = f.read()
image_ext = os.path.splitext(image_path)[1].strip('.')
image_url = f"data:image/{image_ext};base64,{base64.b64encode(image_data).decode('utf-8')}"
# 调用 OCR 识别(提取所有文字,保留排版)
completion = client.chat.completions.create(
model="kimi-k2.5",
messages=[
{"role": "user", "content": [
{"type": "image_url", "image_url": {"url": image_url}},
{"type": "text", "text": "提取图片中的所有文字,保留原始排版,不遗漏任何内容"}
]}
],
temperature=0.3, max_tokens=4096
)
print("【OCR 识别结果】")
print(completion.choices[0].message.content)
from openai import OpenAI
client = OpenAI(
api_key="sk-your-api-key",
base_url="https://yibuapi.com/v1"
)
# 文本描述生成图片提示词(适配 MidJourney/Stable Diffusion)
completion = client.chat.completions.create(
model="kimi-k2.5",
messages=[
{"role": "user", "content": "生成一张科技感十足的 AI 大模型集群可视化图片提示词,要求:深蓝色背景、发光的节点网络、未来感 UI,细节丰富,适合高清打印"}
],
temperature=0.8, max_tokens=1024
)
print("【图文生成提示词】")
print(completion.choices[0].message.content)
import os
import base64
from openai import OpenAI
client = OpenAI(
api_key="sk-your-api-key",
base_url="https://yibuapi.com/v1"
)
# 读取两张对比图片
image1_path = "before.png"
image2_path = "after.png"
with open(image1_path, "rb") as f1, open(image2_path, "rb") as f2:
img1_data = f1.read()
img2_data = f2.read()
# 编码两张图片
img1_url = f"data:image/png;base64,{base64.b64encode(img1_data).decode('utf-8')}"
img2_url = f"data:image/png;base64,{base64.b64encode(img2_data).decode('utf-8')}"
# 对比分析
completion = client.chat.completions.create(
model="kimi-k2.5",
messages=[
{"role": "user", "content": [
{"type": "image_url", "image_url": {"url": img1_url}},
{"type": "image_url", "image_url": {"url": img2_url}},
{"type": "text", "text": "详细对比这两张图片的差异,包括颜色、布局、元素变化,生成结构化对比报告,重点标注所有不同点"}
]}
],
temperature=0.5, max_tokens=2048
)
print("【图片对比分析报告】")
print(completion.choices[0].message.content)
# 1. 提取视频帧(需安装 ffmpeg)
sudo apt install ffmpeg -y
ffmpeg -i test.mp4 -r 1 -f image2 frame_%d.png
# 每秒提取 1 帧,保存为 frame_1.png、frame_2.png...
# 2. 调用多模态识别视频帧(复用图片识别代码,替换图片路径即可)
# 参考场景 1 的 OCR 代码,将 image_path 替换为提取的视频帧路径(如 frame_1.png)
# Ubuntu/WSL2
sudo lsof -i:8080 | grep -v PID | awk '{print $2}' | xargs sudo kill -9
# Windows(管理员 PowerShell)
netstat -ano | findstr 8080
taskkill /f /pid 对应 PID
# 重新配置 Hugging Face 国内加速
huggingface-cli download moonshot/Kimi-K2.5 \
--local-dir ./kimi-k2.5-model \
--local-dir-use-symlinks False \
--revision unsloth-1.8bit \
--proxy http://你的代理地址:端口(可选)
# 启用 vLLM 推理引擎(源码部署)
python kimi_local_gradio.py --inference-engine vllm
# Docker 部署启用 vLLM
docker run -d \
--name kimi-k2.5-local \
--gpus all \
-p 8080:8080 \
-v kimi-k2.5-data:/root/.kimi \
--restart unless-stopped \
kimi-k2.5:unsloth-1.8bit \
--model-path /root/models/kimi-k2.5 \
--port 8080 \
--num-gpus 1 \
--inference-engine vllm
# 备份 Docker 数据卷
docker run --rm -v kimi-k2.5-data:/source -v /本地备份路径:/target alpine cp -r /source/* /target/
# 备份源码部署模型/配置
cp -r ./kimi-k2.5-model /本地备份路径
cp -r ~/.kimi /本地备份路径
# Docker 容器开机自启
docker update --restart unless-stopped kimi-k2.5-local
# 源码部署开机自启(Ubuntu)
echo "python /root/Kimi-K2.5/kimi_local_gradio.py" >> /etc/rc.local
chmod +x /etc/rc.local
# 切换至 Kimi 云端模型(无需本地部署,需 API-Key)
kimi config set model.type cloud
kimi config set model.api_key sk-your-api-key
# 切换回本地模型
kimi config set model.type local
kimi config set model.path /root/models/kimi-k2.5

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online