基于 FastAPI 构建的 K2Think AI 模型代理服务,提供 OpenAI 兼容的 API 接口及简易管理页面。
pip install -r requirements.txt
cp .env.example .env
# 编辑 .env 文件,配置你的API密钥和其他选项
# 复制token示例文件并编辑
cp tokens.example.txt tokens.txt
# 编辑tokens.txt文件,添加你的实际K2Think tokens
python k2think_proxy.py
服务将在 http://localhost:8001 启动。
后台页面 http://localhost:8081/admin

# 构建镜像
docker build -t k2think-api .
# 先创建 .env 文件和tokens.txt,然后编辑配置
cp .env.example.env
cp tokens.example.txt tokens.txt
# 编辑tokens.txt添加实际的token
# 运行容器
docker run -d \
--name k2think-apis \
-p 8001:8001 \
-v $(pwd)/tokens.txt:/app/tokens.txt \
-v $(pwd)/.env:/app/.env:ro \
k2think-api
# 先创建 .env 文件和tokens.txt
cp .env.example.env
touch tokens_guest.txt
cp tokens.example.txt tokens.txt
# 编辑 .env 文件配置API密钥等
# 编辑 tokens.txt 添加实际的K2Think tokens
# 启动服务
docker-compose up -d
# 检查服务状态
docker-compose logs -f k2think-api
注意: 【游客模式】无需配置 tokens.txt
POST /v1/chat/completions
curl -X POST http://localhost:8001/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-k2think" \
-d '{
"model": "MBZUAI-IFM/K2-Think",
"messages": [
{"role": "user", "content": "你擅长什么?"}
],
"stream": false
}'
GET /v1/models
curl http://localhost:8001/v1/models \
-H "Authorization: Bearer sk-k2think"
查看token池状态:
curl http://localhost:8001/admin/tokens/stats
重置指定token:
curl -X POST http://localhost:8001/admin/tokens/reset/0
重置所有token:
curl -X POST http://localhost:8001/admin/tokens/reset-all
重新加载token文件:
curl -X POST http://localhost:8001/admin/tokens/reload
| 变量名 | 默认值 | 说明 |
|---|---|---|
VALID_API_KEY | 无默认值 | API 访问密钥(必需) |
| 变量名 | 默认值 | 说明 |
|---|---|---|
HOST | 0.0.0.0 | 服务监听地址 |
PORT | 8001 | 服务端口 |
TOOL_SUPPORT | true | 是否启用工具调用功能 |
详细配置说明请参考 .env.example 文件。
import openai
# 配置客户端
client = openai.OpenAI(
base_url="http://localhost:8001/v1",
api_key="sk-k2think"
)
# 发送聊天请求
response = client.chat.completions.create(
model="MBZUAI-IFM/K2-Think",
messages=[
{"role": "user", "content": "解释一下量子计算的基本原理"}
],
stream=False
)
print(response.choices[0].message.content)
# 流式聊天
stream = client.chat.completions.create(
model="MBZUAI-IFM/K2-Think",
messages=[
{"role": "user", "content": "写一首关于人工智能的诗"}
],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="")
K2-Think 模型具有以下特点:
<think></think> 和 <answer></answer> 标签结构化输出Token 相关问题
/admin/tokens/stats 查看token状态,使用 /admin/tokens/reset-all 重置所有tokentokens.txt 文件添加新token,然后访问 /admin/tokens/reload 重新加载/health 端点查看简要统计,或 /admin/tokens/stats 查看详细信息端口冲突
PORT 环境变量# Docker 容器日志
docker logs k2think-api
# docker-compose日志
docker-compose logs -f k2think-api
# 本地运行日志
# 日志会直接输出到控制台
Token文件映射
tokens.txt 通过volume映射到容器内,支持动态更新健康检查
docker ps 查看健康状态安全考虑
K2Think API 代理现在支持 OpenAI Function Calling 规范的工具调用功能。
tools 和 tool_choice 参数"auto": 让模型自动决定是否使用工具(推荐)"none": 禁用工具调用"required": 强制模型使用工具{"type": "function", "function": {"name": "tool_name"}}: 强制使用特定工具AGPL-3.0 License
Thanks zhaoxiaozhao07, oDaiSuno
欢迎提交 Issue 和 Pull Request!
Content type
Image
Digest
sha256:086e3d1cc…
Size
62.6 MB
Last updated
about 1 year ago
docker pull zsuroy/k2think2api