Gradio 本地 AI Demo 做完怎么给别人试?用 cpolar 临时分享交互页面和测试样例

📅 发布时间:2026/7/13 8:39:48
Gradio 本地 AI Demo 做完怎么给别人试?用 cpolar 临时分享交互页面和测试样例 Gradio 本地 AI Demo 做完怎么给别人试用 cpolar 临时分享交互页面和测试样例做 AI Demo 最尴尬的时刻不是模型没跑起来而是你跑起来了别人看不到。我遇到过好几次本机 Gradio 页面已经能输入、上传、返回结果想让同事或客户验收一下交互流程却卡在“你把代码发我”“我本地没环境”“能不能直接点开看看”这类问题上。我的做法很简单Gradio 继续跑在本机用 cpolar 临时映射出一个 HTTPS 地址把页面和测试样例一起发出去。验收结束关掉隧道公网入口就收回。这篇不讲大模型训练也不讲复杂部署只写一个能复制的本地 AI Demo 远程验收流程。适合谁这套流程适合下面几类场景你用 Gradio 做了一个本地 AI 原型需要给产品、测试、客户快速试用Demo 还没到正式部署阶段不想上云服务器、配域名、折腾 Nginx你希望对方直接打开网页按准备好的样例测试输入、输出和异常提示验收窗口很短只需要开放半小时、一小时而不是长期公网运行说白了它适合“Demo 已经能跑需要让别人临时点开验收”的阶段。最终效果跑完后你会得到两个东西本机 Gradio 页面http://127.0.0.1:7860cpolar 临时 HTTPS 地址类似https://xxxx.cpolar.top你把 HTTPS 地址和测试样例发给同事或客户对方在浏览器里就能完成验收输入文本、点击按钮、查看输出、尝试异常输入、反馈问题。验收结束后在终端按CtrlC停掉 cpolar再停掉 Gradio。页面不再暴露到公网。环境准备本文用一个最小文本分类 Demo 做例子。它不依赖真实客户数据也不依赖 GPU适合拿来跑通完整流程。准备 Python 环境mkdir gradio-cpolar-demo cd gradio-cpolar-demo python3 -m venv .venv source .venv/bin/activate pip install --upgrade pip pip install gradio pandas检查 Gradio 是否安装成功python -c import gradio as gr; print(gr.__version__)安装 cpolar 后把账号里的 authtoken 配到本机。macOS 可以用 Homebrew 安装brew tap probezy/core brew install cpolar cpolar authtoken YOUR_TOKENLinux 可以用官方安装脚本curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash cpolar authtoken YOUR_TOKENYOUR_TOKEN换成你自己账号后台里的 token。配置完成后后面只需要执行cpolar http 7860就能创建临时入口。最小 Gradio Demo新建app.pyimport gradio as gr LABEL_RULES { 退款: [退款, 退钱, 不想要, 取消订单], 物流: [物流, 快递, 没收到, 到哪里], 技术支持: [报错, 打不开, 失败, 无法登录], } def classify_message(text: str): text text.strip() if not text: return 异常输入, 请输入一段需要识别的文本。 for label, keywords in LABEL_RULES.items(): if any(keyword in text for keyword in keywords): return label, f命中关键词{, .join(keywords)} return 其他, 没有命中预设关键词进入人工复核。 with gr.Blocks(title本地 AI Demo 验收页) as demo: gr.Markdown(# 本地 AI Demo 验收页) gr.Markdown(输入一段用户反馈查看分类结果和命中说明。) input_text gr.Textbox( label用户反馈, lines4, placeholder例我申请退款两天了还没有到账, ) label gr.Textbox(label分类结果) reason gr.Textbox(label判断说明) submit gr.Button(开始识别) submit.click(classify_message, inputsinput_text, outputs[label, reason]) gr.Examples( examples[ 我申请退款两天了还没有到账, 快递三天没有更新现在到哪里了, 登录页面一直报错打不开后台, 这个功能我看不懂需要人工看一下, , ], inputsinput_text, ) if __name__ __main__: demo.queue() demo.launch(server_name0.0.0.0, server_port7860)启动 Demopython app.py看到类似下面的输出就说明本地页面已经跑起来了Running on local URL: http://0.0.0.0:7860浏览器打开http://127.0.0.1:7860这里特意用了server_name0.0.0.0。这一步很关键后面 cpolar 才能稳定转发到本机端口。准备测试样例不要只发一个链接给别人让对方自己乱试。验收 Demo 的关键是“样例明确、反馈好收集”。我一般会随链接一起发一段这样的验收说明Gradio Demo 验收地址 https://xxxx.cpolar.top 请按下面样例测试 1. 我申请退款两天了还没有到账 预期分类结果为“退款” 2. 快递三天没有更新现在到哪里了 预期分类结果为“物流” 3. 登录页面一直报错打不开后台 预期分类结果为“技术支持” 4. 这个功能我看不懂需要人工看一下 预期分类结果为“其他” 5. 输入空内容后点击按钮 预期提示“请输入一段需要识别的文本” 反馈时请带上输入内容、页面输出、浏览器、操作时间。这样做有两个好处。一是对方不用猜怎么测打开页面就能按清单走。二是你收到反馈时能快速复现不会只得到一句“好像不太对”。用 cpolar 临时 HTTPS 分享 Gradio 页面确认 Gradio 本地能访问后另开一个终端执行cpolar http 7860终端会显示一个公网访问地址找到https://开头的那条Forwarding https://xxxx.cpolar.top - http://localhost:7860把这个 HTTPS 地址复制出来和上面的测试样例一起发给验收人员。对方访问的是 cpolar 提供的临时 HTTPS 入口请求会转发到你本机的7860端口。你的 Gradio 页面、按钮、输入框、样例和输出结果都会正常展示。这一步的价值在于你不用把代码打包给别人也不用让对方装 Python 环境更不用为了一个临时 Demo 上云部署。验收时我会盯哪些点页面能打开只是第一步验收时建议重点看这些首页是否加载完整标题、输入框、按钮、样例都能显示正常输入是否有结果每个样例都能返回分类和说明异常输入是否有提示空内容、超长文本、特殊符号不应该让页面崩掉多人点击是否卡住Gradio 已经开启queue()连续请求会排队处理反馈是否可复现每条反馈都带输入内容和页面输出如果你的 Demo 涉及文件上传也要额外准备 2 到 3 个脱敏文件样例。不要让验收人员上传真实客户合同、身份证、病历、财务表格这类敏感材料。安全边界要提前说清楚cpolar 很适合临时分享但临时分享不等于随便暴露。我会给验收人员明确几条边界只用准备好的脱敏样例不上传真实客户数据地址只发给参与验收的人不转发到群外验收窗口结束后入口关闭不保留长期访问Demo 页面不放数据库密码、内部接口 token、服务器路径日志里如果记录输入内容验收结束后及时清理还有一点很重要本地 Demo 不要顺手挂载整个工作目录。只暴露当前 Gradio 服务需要的功能不要把管理后台、SSH、数据库、NAS 面板一起映射出去。常见问题和排错cpolar 地址能打开但页面一直转圈先确认 Gradio 本地页面能访问curl http://127.0.0.1:7860如果本地都访问不了问题在 Gradio不在 cpolar。重新执行python app.py看终端报错常见原因是依赖没装、端口被占用、代码缩进错误。cpolar 提示连接失败确认 Gradio 监听端口是7860并且启动代码里有demo.launch(server_name0.0.0.0, server_port7860)然后重新开隧道cpolar http 7860如果你改成了其他端口比如7861cpolar 命令也要同步改成cpolar http 7861页面能打开点击按钮没有反应看运行python app.py的终端输出。Gradio 的 Python 异常会直接打印在那里。也可以先用最短输入测一下退款如果短文本能跑长文本卡住就检查模型推理时间、队列长度和依赖资源。这个示例 Demo 很轻正常点击会马上返回。文件上传 Demo 远程失败文件上传类 Demo 要注意三件事文件大小、临时目录、后端读取路径。建议先用小文件测通比如 50KB 的.txt或.csv再逐步换成正式样例。代码里不要写死本机绝对路径优先读取 Gradio 传入的临时文件路径。同事说访问慢临时隧道的速度受本机网络、对方网络、Demo 推理耗时影响。排查顺序是先本机访问再同网络访问最后看 cpolar 地址访问。如果本机也慢优化 Demo 逻辑。如果只有公网慢就减少上传文件大小缩短输出内容控制同一时间参与验收的人数。验收结束后记得关闭公网入口验收完成后不要把终端窗口丢在那儿不管。关闭顺序很简单在运行cpolar http 7860的终端按CtrlC在运行python app.py的终端按CtrlC浏览器刷新 cpolar 地址确认入口已经不可访问如果只是今天下午临时验收就不要把它做成长期入口。真要长期给外部访问再去补登录鉴权、访问控制、固定域名、日志审计和正式部署方案。写在最后Gradio 负责把本地 AI 能力做成一个可交互页面cpolar 负责把这个页面短时间、安全地送到别人浏览器里。两者放在一起很适合 Demo 验收这个阶段。我的建议是Demo 阶段别急着上复杂架构先把“别人能打开、能按样例测、能反馈问题、验收完能收口”这条链路跑顺。能被别人顺利试用的 Demo才算真的往前走了一步。