AI 应用如何实现局域网访问?一篇文章带你理解 127.0.0.1、0.0.0.0 与 Gradio 部署
前言
最近在开发一个基于 Gradio + LangChain + DeepSeek API 的 AI Web 应用时,我遇到了一个问题:
为什么我自己电脑可以访问,但同一个 WiFi 下的其他设备打不开?
后来才发现,这里面涉及到了:
- localhost
- 127.0.0.1
- 0.0.0.0
- 局域网 IP
- 端口监听
- Windows 防火墙
等一系列 Web 服务部署知识。
这篇文章就来完整总结一下:
如何让自己开发的 AI 应用支持局域网访问。
一、默认情况下为什么别人访问不了?
很多 AI 应用都会这样启动:
demo.launch()或者:
demo.launch(server_port=7860)此时 Gradio 默认监听的是:
127.0.0.1也就是:
localhost它表示:
只允许当前电脑自己访问。
因此:
http://127.0.0.1:7860只能本机打开。
即使别人和你连接同一个 WiFi,也无法访问。
二、127.0.0.1 到底是什么?
127.0.0.1 是一个特殊 IP:
回环地址(Loopback Address)它永远表示:
“当前电脑自己”例如:
你的电脑访问 127.0.0.1 → 实际上是在访问自己所以别人电脑上的:
127.0.0.1并不是你的电脑。
而是:
他们自己的电脑三、如何允许局域网访问?
核心就是:
server_name="0.0.0.0"修改代码:
demo.launch(server_name="0.0.0.0",server_port=7860)这里:
0.0.0.0表示:
监听当前机器所有网络接口包括:
- localhost
- WiFi 网卡
- 有线网卡
- 虚拟网卡
此时:
局域网内其他设备也可以访问你的 AI 服务。
四、如何查看自己的局域网 IP?
Windows:
打开 CMD:
ipconfig找到:
IPv4 地址 . . . . . . . . . : 192.168.1.23这个:
192.168.1.23就是你电脑在局域网中的地址。
五、别人如何访问?
例如你的:
IPv4 = 192.168.1.23 端口 = 7860那么:
同一局域网下的其他设备访问:
http://192.168.1.23:7860即可打开你的 AI Web 应用。
六、什么是端口(Port)?
例如:
:7860这个数字叫:
端口(Port)可以理解为:
电脑内部不同服务的窗口号例如:
| 服务 | 端口 |
|---|---|
| Gradio | 7860 |
| Redis | 6379 |
| MySQL | 3306 |
| FastAPI | 8000 |
不同服务通过不同端口通信。
七、为什么会出现端口冲突?
有时会出现:
Cannot find empty port或者:
Address already in use原因是:
这个端口已经被其他程序占用例如:
- 之前的 Gradio 没关闭
- 另一个 Python 程序正在运行
八、如何查看端口占用?
Windows CMD:
netstat-ano|findstr :7860会看到:
TCP 0.0.0.0:7860 LISTENING 12345最后那个:
12345是进程 PID。
关闭:
taskkill /PID12345/F即可释放端口。
九、Windows 防火墙问题
即使代码没问题:
server_name="0.0.0.0"别人依然可能打不开。
这是因为:
Windows 防火墙阻止了 Python 网络访问第一次运行 Gradio 时通常会弹窗:
是否允许 Python 通过防火墙?必须点击:
允许访问否则局域网无法通信。
十、推荐的 Gradio 启动方式
推荐这样写:
demo.launch(server_name="0.0.0.0",server_port=8888,inbrowser=True,prevent_thread_lock=True)参数说明:
| 参数 | 作用 |
|---|---|
| server_name=“0.0.0.0” | 允许局域网访问 |
| server_port=8888 | 指定端口 |
| inbrowser=True | 自动打开浏览器 |
| prevent_thread_lock=True | 防止 Notebook 卡死 |
十一、我在项目中学到了什么?
这次实践不仅仅是“让别人访问网页”。
实际上已经接触到了:
- Web 服务监听
- TCP/IP
- 局域网通信
- 端口机制
- 服务部署
- Redis 会话持久化
- 环境变量管理
- AI Web 应用工程化
例如:
RedisChatMessageHistory已经属于:
AI 应用 Memory 系统而:
server_name="0.0.0.0"则属于:
Web 服务部署知识总结
很多人学习 AI 应用时,只关注:
- Prompt
- 模型调用
但实际上:
真正的 AI 应用开发,还包括部署、网络、会话、服务管理等工程化能力。
而:
server_name="0.0.0.0"正是从“本地 Demo”迈向“真实 AI 应用”的第一步。