问题

使用初始镜像离线部署的Dify在知识库中,为文件进行索引时报错:

Repo id must be in the form 'repo_name' or 'namespace/repo_name': '/app/api/core/model_runtime/model_providers/__base/tokenizers/gpt2'. Use repo_type argument if needed.

问题图片如下:

原因

Dify初始镜像不带有分词器和嵌入模型,首次使用时,默认从hugging face下载并使用,离线环境无法下载则报错。

解决方案

镜像准备

  • 在联网环境部署Dify
  • 创建知识库
  • 上传并索引文件(让dify将所需的依赖下载到容器中)
  • 将容器Container docker-api-1打包成镜像并下载
    docker commit <容器id> docker-api-1:1.1.0 #将容器打包成镜像
    
    docker save -o docker-api.tar docker-api-1:1.1.0 #将打包的镜像下载为tar

镜像替换

  • 将下载的镜像tar包上传至离线服务器
  • 删除初始镜像
    docker rmi docker-api-1:1.1.0
  • 加载上传的镜像
    docker load -i docker-api-1.tar
  • 为加载的镜像重命名
    docker tag <容器id> docker-api-1:1.1.0

重启容器

在Dify源代码的docker目录下执行启动命令

docker-compose up -d

总结 

Dify离线部署后,一些需要联网的功能无法使用,例如代码执行依赖以及分词器模型等,但由于Docker迁移的便利性,可以直接将完整可以使用的容器全部打包成镜像,然后再迁移到离线服务器中运行即可解决。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐