当前位置: 首页 > news >正文

LangChain + Gradio 项目部署到 Hugging Face Spaces 踩坑实录(附完整解决方案)

LangChain + Gradio 项目部署到 Hugging Face Spaces 踩坑实录(附完整解决方案)

前言

最近把一个基于:

  • LangChain
  • LangGraph
  • ChromaDB
  • Gradio

的智能客服项目部署到了 Hugging Face Spaces。

原本以为部署会很简单,结果从依赖冲突到 Runtime Error,连续踩了不少坑。

这篇文章就把整个部署流程,以及我遇到的问题和解决方案完整记录一下,后面再部署 AI Web 应用时应该还能用得到。


一、什么是 Hugging Face Spaces

Hugging Face Spaces 本质上是一个:

在线 AI 应用托管平台

你可以直接把:

  • Gradio
  • Streamlit
  • Docker
  • FastAPI

等项目部署上去。

部署完成后会自动生成一个公网地址。

非常适合:

  • AI Demo 展示
  • Agent 项目演示
  • 毕设展示
  • 简历项目
  • 开源项目体验页

而且:

  • 免费 CPU
  • 支持 GPU
  • 自动 HTTPS
  • 自动构建

对于个人开发者来说非常方便。


二、创建 Space

进入:

https://huggingface.co/spaces

点击:

Create new Space

然后:

配置推荐
SDKGradio
HardwareCPU basic
VisibilityPublic

创建完成后会得到一个 Git 仓库。


三、上传项目

初始化 Git:

gitinit

关联远程仓库:

gitremoteaddorigin https://huggingface.co/spaces/你的用户名/你的Space名

提交代码:

gitadd.gitcommit-m"init project"gitpush origin main

上传后 Hugging Face 会自动开始构建。


四、项目结构建议

我最终采用的结构:

project/ │ ├── app.py ├── requirements.txt ├── web/ │ └── app.py ├── rag/ ├── agent/ └── data/

其中:

  • 根目录 app.py 作为 Spaces 启动入口
  • web/app.py 负责 Gradio 页面

五、最关键的 app.py

很多人第一次部署会忽略这一点。

我的启动文件:

""" Hugging Face Spaces 入口文件 """importosimportsys# 添加项目路径sys.path.insert(0,os.path.dirname(os.path.abspath(__file__)))# 导入 Gradio 页面fromweb.appimportdemo# 启动服务if__name__=="__main__":demo.launch(server_name="0.0.0.0",server_port=7860)

这里一定要:

demo.launch()

否则容器会直接退出。


六、第一个坑:依赖冲突

刚开始构建直接报错:

ERROR: Cannotinstallgradio and huggingface_hub<0.25.0

原因:

我 requirements.txt 写的是:

huggingface_hub<0.25.0

但:

gradio==5.0.0

要求:

huggingface_hub>=0.25.1

于是 pip 无法解析依赖。


七、第二个坑:HfFolder 导入失败

修改依赖后又报错:

ImportError:cannotimportname'HfFolder'

原因是:

最新版 huggingface_hub 已经删除了:

HfFolder

但:

gradio==5.0.0

内部还在使用。


八、最终稳定依赖版本

最后测试稳定的 requirements:

gradio==5.0.0 huggingface_hub==0.25.2 langchain-core>=0.3.0 langchain-openai>=0.2.0 langgraph>=0.2.0 chromadb==0.5.5 fastapi uvicorn pypdf loguru python-dotenv openai requests dashscope audioop-lts

重点:

huggingface_hub==0.25.2

这个版本兼容最好。


九、第三个坑:Container 自动退出

日志显示:

Exit code: 0

没有任何报错。

但应用就是打不开。

原因:

程序执行完直接结束了。

因为:

fromweb.appimportdemo

只是导入页面。

并不会真正启动服务。

必须:

demo.launch()

Gradio 服务才会持续运行。


十、最终效果

部署完成后:

  • 自动生成公网链接
  • 支持 HTTPS
  • 可以直接在线访问 Agent
  • 可以作为项目演示页

对于:

  • AI 应用
  • LangChain 项目
  • RAG 系统
  • Agent Demo

来说非常方便。


总结

这次部署最大的感受:

AI 项目真正难的不是“写功能”,而是“环境兼容”。

尤其:

  • Python 版本
  • huggingface_hub
  • Gradio
  • LangChain
  • chromadb

这些库更新非常快。

一旦版本组合不对,就会出现各种奇怪问题。

目前我测试下来最稳的组合:

组件推荐版本
Python3.10
Gradio5.0.0
huggingface_hub0.25.2
chromadb0.5.5

后面如果继续完善,我准备把:

  • MCP
  • 多 Agent
  • 工具调用
  • RAG
  • 长期记忆

这些功能也逐步整合进去。

毕竟 Hugging Face Spaces 确实很适合做 AI Demo 展示。

http://www.jsqmd.com/news/905053/

相关文章:

  • 如何5分钟搞定黑苹果配置?OpCore-Simplify智能配置生成工具终极指南
  • 告别黑屏和拉伸!保姆级教程:在Ubuntu上为老旧或特殊显示器自定义分辨率
  • 2026卫生高级职称考试名师选择指南,优质名师授课风格实力对比! - 医考机构品牌测评专家
  • 如何快速掌握浏览器资源捕获:猫抓(cat-catch)专业工具完整实战指南
  • 【实机飞行!】在Jetson Orin NX上部署Fast-Drone-250进行实机飞行
  • 观察使用 Taotoken 后月度账单的明细构成与成本变化趋势
  • 2026大数据实测3款主流医考APP,适配不同备考人群的良心推荐! - 医考机构品牌测评专家
  • llama.cpp-tq3编译指南:运行Qwen3.6-35B-A3B-TQ3_4S的必备环境
  • 精准客户成本归因:告别代理分摊,实现SaaS/云服务真实利润分析
  • 终极Wand增强教程:三步免费解锁专业版,开启游戏修改新时代
  • 用Python和Pandas复现Lending Club数据分析:从数据清洗到可视化洞察的完整流程
  • Drawio桌面版终极指南:三步解决文件损坏问题,快速恢复宝贵图表数据
  • 从城市白领到农场主:我是如何用一台MacBook和一台3马力耕耘机,实现写作与务农双线作战的
  • 手把手教你用OSX-KVM项目搞定macOS虚拟机:从下载镜像到配置XML的完整避坑指南
  • 性能碾压同类!PaddleOCR-VL在OmniDocBench benchmark上的SOTA表现解析
  • 哪个执医课程性价比高?请看这份选择指南 - 医考机构品牌测评专家
  • 全球化资产配置平台排行:合规与服务实力对比 - 互联网科技品牌测评
  • 13703黄大年茶思屋榜文137期·第三题:Decoding生成长度预测
  • Claude生成单元测试靠谱吗?深度评测12类边界场景下的通过率与可维护性数据
  • 实战踩坑:在Ubuntu 24.04上用mdadm组RAID 0,性能翻倍后我遇到了这些问题
  • 手把手教你:Windows 10开机卡在grub?不用EasyUEFI,用Diskpart三步搞定启动项
  • Ascend-SACT/Mineru-Optimization环境变量配置:解锁NPU性能的10个关键参数 [特殊字符]
  • Ynoi 乱做
  • 洛谷P1048 [NOIP 2005 普及组] 采药
  • CICC/gtr-t5-xl与sentence-transformers集成:版本兼容性终极指南
  • 【独家首发】Gemini 2.5 Pro东南亚语言基准测试报告:对比Llama-3-70B与Claude-3.5-Sonnet在柬埔寨语法律文本生成任务中BLEU+42.6%领先优势
  • 基于MJD112晶体管的12V LED背光驱动电路设计与PCB实战
  • Linux服务器内存被‘吃’光了?手把手教你用/proc/meminfo和slabinfo定位内核内存泄露
  • 鸣潮自动化终极指南:如何用ok-ww轻松解放双手,快速完成日常任务
  • 微信小程序定位失败?别慌,手把手教你用uni.getSystemInfo和uni.authorize搞定权限检测与引导