one-api部署在docker中,一直都正常。项目上线正式服务器后,发现one-api容器无法启动,日志发现其无限重启,错误原因是failed to get gpt-3.5-turbo token encoder,看来它肯定是需要联网下载数据,我的正式服务器是无法上网的。
最后在github找到这么一个原因:
failed to get gpt-3.5-turbo token encoder: · Issue #609 · songquanpeng/one-api (github.com)
默认程序启动时会联网下载一些通用的词元的编码,如:gpt-3.5-turbo,在一些网络环境不稳定,或者离线情况,可能会导致启动有问题。
可通过配置TIKTOKEN_CACHE_DIR设置缓存目录,由于我用的是docker,那么干脆把文件映射到对应的目录即可。
解决办法很简单,先进入能正常运行的one-api docker容器中
docker exec -it oneapi sh
查看/tmp/data-gym-cache/目录下有没有一个叫9b5ad71b2ce5302211f9c61530b329a4922fc6a4的文件,不同版本可能对应的文件名不同。
把这个文件复制出来,然后放在离线服务器的docker-compose.yml文件旁边,然后修改docker-compose.yml,将这个文件映射进去就行
volumes:
- ./oneapi:/data
- ./9b5ad71b2ce5302211f9c61530b329a4922fc6a4:/tmp/data-gym-cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4
完美解决。