废话不多说,直接开整kimi-free-api项目。
1、kimi-free-api服务安装启动
支持高速流式输出、支持多轮对话、支持联网搜索、支持智能体对话、支持长文档解读、支持图像OCR,零配置部署,多路token支持,自动清理会话痕迹。
与ChatGPT接口完全兼容。
还有以下八个free-api欢迎关注:
阶跃星辰 (跃问StepChat) 接口转API step-free-api
阿里通义 (Qwen) 接口转API qwen-free-api
智谱AI (智谱清言) 接口转API glm-free-api
秘塔AI (Metaso) 接口转API metaso-free-api
讯飞星火(Spark)接口转API spark-free-api
MiniMax(海螺AI)接口转API hailuo-free-api
深度求索(DeepSeek)接口转API deepseek-free-api
聆心智能 (Emohaa) 接口转API emohaa-free-api
github地址:https://gitcode.com/LLM-Red-Team/kimi-free-api/overview
1.1、安装前的准备
先从 https://kimi.moonshot.cn 获取refresh_token。进入kimi随便发起一个对话,然后按F12,打开开发者工具,从Application > Local Storage中找到refresh_token
的值(记得先记录下来),将作为Authorization的Bearer Token值:Authorization: Bearer TOKEN。如下图所示:
1.2、安装docker和docker-compose
找一台具有公网IP(可以连接互联网的机器),并且防火墙放开8000端口。
docker和docker-compose的具体安装方法,可以参照:安装Milvus向量数据库 中的第二小节Docker安装,这里就不在重复介绍了。
要求:Docker 19.03 or later Docker Compose 1.25.1 or later。
安装完成docker和docker-compose之后,就可以拉取kimi-free-api的镜像了。如下:
1.2.1、拉取镜像并启动
[root@Bert kimi]# docker run -it -d --init --name kimi-free-api -p 8000:8000 -e TZ=Asia/Shanghai vinlic/kimi-free-api:latest
1.2.2、查看kimi-free-api的运行日志
利用docker ps -a命令查看正在运行的容器,找到kimi-free-api这个容器,如下图:
[root@Bert kimi]# docker logs -f kimi-free-api
1.2.3、启动、重启、停止kimi-free-api服务
[root@Bert kimi]# docker start kimi-free-api
[root@Bert kimi]# docker restart kimi-free-api
[root@Bert kimi]# docker stop kimi-free-api
以上操作也可以用kimi-free-api服务的容器ID进行操作。除了直接用docker拉取镜像之外,还可以用docker-compose进行操作。如下方法:
[root@Bert kimi]# vi docker-compose.ymlversion: '3'services:kimi-free-api:container_name: kimi-free-apiimage: vinlic/kimi-free-api:latestrestart: alwaysports:- "8000:8000"environment:- TZ=Asia/Shanghai[root@Bert kimi]# docker-compose up -d
-d:代表后台启动的意思。也可以不使用-d。
docker-compose启动会有点慢,耐心等待即可。
启动成功后,可以使用curl命令检查接口是否能正常使用,也可以在浏览器中访问测试。
如下所示:
利用curl命令测试:
[root@Bert kimi]# curl -I http://192.168.20.4:8000/v1/chat/completions
[root@Bert kimi]# curl -I http://192.168.20.4:8000/v1/chat/completions
HTTP/1.1 200 OK
Vary: Origin
Access-Control-Allow-Origin: *
Accept-Ranges: bytes
Content-Type: application/json; charset=utf-8
Content-Length: 156
Date: Tue, 28 May 2024 08:47:39 GMT
Connection: keep-alive
Keep-Alive: timeout=5
利用浏览器测试:
因为接口需要用POST方法调用,直接从浏览器访问时是GET请求,所以会报出以上的错误问题。
查看kimi-free-api访问的日志:
[root@Bert kimi]# docker logs -f kimi-free-api
[2024-05-28 16:02:15.755][info][index<983,30>] <- POST /v1/chat/completions 427ms
[2024-05-28 16:02:22.192][success][index<1340,22>] Stream has completed transfer 6437ms
[2024-05-28 16:47:00.217][debug][index<992,22>] -> GET /v1/chat/completions request is not supported - 192.168.20.1
[2024-05-28 16:47:00.218][info][index<999,24>] <- GET /v1/chat/completions 1ms
[2024-05-28 16:47:00.218][warning][index<994,22>] [请求有误]: 正确请求为 POST -> /v1/chat/completions,当前请求为 GET -> /v1/chat/completions 请纠正
[2024-05-28 16:47:39.713][warning][index<994,22>] [请求有误]: 正确请求为 POST -> /v1/chat/completions,当前请求为 HEAD -> /v1/chat/completions 请纠正
[2024-05-28 16:47:39.713][debug][index<992,22>] -> HEAD /v1/chat/completions request is not supported - 192.168.20.4
[2024-05-28 16:47:39.714][info][index<999,24>] <- HEAD /v1/chat/completions 0ms
说明访问连通性可用。到此为止kimi-free-api的服务安装与启动、测试已经完成,下一步就可以用dify平台连接kimi-free-api进行对话了,如果不想用dify的话,也可以自己写接口去调用kimi-free-api的接口进行对话。
2、dify平台安装与配置
2.1、下载dify
将Dify代码从github下载至服务器,或者通过http的方式下载Dify的代码的zip文件后,上传至服务器解压缩。
Dify源码下载地址:https://github.com/langgenius/dify
2.2、安装dify
解压出下载的dify,然后进入到docker目录下,如下所示:
[root@Bert kimi]# cd /app/dify/dify-main/docker
[root@Bert kimi]# docker-compose up -d
耐心等待安装即可。
2.3、配置nginx
安装完成之后,会在nginx目录下生成conf.d/default.conf配置文件,内容如下:
server {listen 80;server_name _;location /console/api {proxy_pass http://api:5001;include proxy.conf;}location /api {proxy_pass http://api:5001;include proxy.conf;}location /v1 {proxy_pass http://api:5001;include proxy.conf;}location /files {proxy_pass http://api:5001;include proxy.conf;}location / {proxy_pass http://web:3000;include proxy.conf;}
}
此时需要把对应的server_name、proxy_pass改成对应的IP。
其中server_name后面可填写域名或是IP,此处的域名或是IP是指安装dify所在的机器。
proxy_pass后面所填的IP需要利用docker inspect <容器ID或容器运行的服务名称>查找到对应端口的IP,如下所示(以5001端口为例):
查看运行中的容器,并且找到对应的5001端容器。
[root@Bert kimi]# docker ps -a
利用docker inspect获取对应容器的元数据
[root@Bert kimi]# docker inspect docker-api-1
注:5001端口会有2个,使用docker-api-1对应的即可,如下图所示2个5001端口:
如下图所示:
3000端口的查找方法如上所示。
找到对应的IP之后,再回到conf.d目录下,修改其中的IP,如下所示:
[root@Bert kimi]# cd /app/dify/dify-main/docker/nginx/conf.d
[root@Bert kimi]# vi default.conf
server {listen 80;server_name 192.168.20.4;location /console/api {proxy_pass http://172.22.0.8:5001;include proxy.conf;}location /api {proxy_pass http://172.22.0.8:5001;include proxy.conf;}location /v1 {proxy_pass http://172.22.0.8:5001;include proxy.conf;}location /files {proxy_pass http://172.22.0.8:5001;include proxy.conf;}location / {proxy_pass http://172.22.0.5:3000;include proxy.conf;}# If you want to support HTTPS, please uncomment the code snippet below#listen 443 ssl;#ssl_certificate ./../ssl/your_cert_file.cer;#ssl_certificate_key ./../ssl/your_cert_key.key;#ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;#ssl_prefer_server_ciphers on;#ssl_session_cache shared:SSL:10m;#ssl_session_timeout 10m;
}
重启容器中的nginx,查找方法同上。
注:每次重启dify相关的容器,对应的IP都会发生变化,所以重启之后,一定要重新检查一下IP,再重新配置的conf.d/default.conf中proxy_pass的IP地址。
[root@Bert kimi]# docker restart docker-nginx-1
2.4、验证
用浏览器访问dify所在的主机地址,进行用户初使化:http://192.168.20.4/install,按要求注册用户即可,注册完利用注册好的用户登录dify平台,如下图:
点击右上角用户下拉,选择“设置”:
选择“模型供应商”,找到“OpenAI-API-compatible”点击:
因为我这里已经创建好了,所以大家可以在图中标蓝的区域查找“OpenAI-API-compatible”点击配置,如下图所示:
模型类型:选择LLM
模型名称:可以自定义,也可以填写成和kimi-free-api容器中运行的名字一样。
API KEY:填写1.1小节点获取的refresh_token。
API endpoint URL:填写kimi-free-api所部署的机器地址
Completion mode:选择对话
模型上下长度:填写4096
最大token上限:填写4096
Function calling:除了不选“不支持”外,其它的选项都可以
Stream function calling:选择支持
Vision支持:选择支持
流模式返回对结果的分隔符:填写\n\n
填好之后,点击保存即可,这会加载的时间有可能会长一点,此时大家可以用docker logs查看kimi-free-api的日志,检查有没有报错。
[root@Bert kimi]# docker logs -f kimi-free-api
如果发现日志中有访问kimi.moonshot.cn无法正常访问的情况,可以从以下方面解决:
如下图的报错:
1、先查看部署kimi-free-api的主机是否能正常访问互联网。
2、如果不能正常访问互联网,先解决该问题后,再重启docker和kimi-free-api。
这是因为ipv4转发被禁用造成,可以使用以下方法排查和解决:
1、重启kimi-free-api时不要使用docker restart kimi-free-api进行重启,有可能不会生效,使用docker-compose down停掉之后,再使用docker-compose up -d启动。
2、也可以vi /etc/sysctl.conf中添加一行配置net.ipv4.ip_forward=1,使用sysctl -p生效,重启network服务,其次再重启docker和kimi-free-api。
正常保存之后,再点击“创建空白应用”,如下图所示:
创建好之后,会在首页出现你创建的应用,如下图所示:
此时就可以点击所创建的应用进行问答了,也可以点击最上方的“探索”进行问答,如下图所示:
点击所创建的应用问答:
点击探索的问答:
到此为止Dify+Kimi-free-api成功完成本地部署与使用。