Windows+Docker+AI开发板打造智能终端助手
本文记录了一个完整的流程:
在 Windows 上使用 Docker 部署 Dify 平台 + Ollama 本地模型,
然后在 香橙派 上通过局域网访问 Dify 的 API,
实现一个可以终端聊天的智能助手。整个过程涵盖部署、端口暴露、防火墙设置、API 调试、Python 调用等完整细节。
一、环境准备
硬件环境
设备 | 功能 |
---|---|
Windows 11 主机 | 运行 Docker + Dify 平台 |
香橙派 5 Ultra | 作为客户端,通过局域网访问 Dify |
网线直连或同一 Wi-Fi 网段 | 保证 IP 能互相访问 |
软件环境
软件 | 版本/用途 |
---|---|
Docker Desktop | 用于部署 Dify |
Postman | 测试 Dify API(可选) |
Python 3.10+ | 运行客户端脚本 |
VSCode / PyCharm | 编写和调试脚本 |
二、在 Windows 上使用 Docker 部署 Dify
下载并启动 Dify
打开 PowerShell,进入想保存的位置(例如 E 盘):
E:git clone https://github.com/langgenius/dify.git cd dify/docker docker compose up -d
等待 Docker 自动拉取镜像并启动服务。
查看容器状态
docker ps
应看到类似输出:
CONTAINER ID IMAGE PORTS a12b3c4d5e6f langgenius/dify-api:1.9.1 0.0.0.0:5001->5001/tcp a12b3c4d5e7g langgenius/dify-web:1.9.1 0.0.0.0:3000->3000/tcp
✅ 表示 Dify 已经运行成功。
如果PORTS跟我的不一样,说明端口没有暴露,无法访问,可以问AI
打开 Web 管理界面
http://localhost
注册账号并进入管理后台。
绑定 Ollama 模型
如果你想使用本地模型(如 qwen
, deepseek
, llama
等):
在电脑上安装 Ollama
Ollama下载链接 直接点击下载即可
Ollama安装默认安装在C盘,而且安装界面不能调整安装位置,所以在下载完成之后,进入下载的文件夹里面,打开终端,运行
ollama-setup.exe /install /DIR="换成你想安装的位置"
下载完成之后,进入Ollama点击左上角,再点击设置,可以改变下载模型的位置
在命令行输入下面代码,下载qwen1.8b模型:
ollama pull qwen:1.8b-chat
在 Dify 设置 → 「模型提供商」中添加 Ollama 连接:
点击右上角的头像
再点击设置模型供应商,并搜索下载Ollama
点击添加模型,安装如图填写
其他模式都差不多,安装插件,去模型的官网获取API key
三、暴露 Dify API 端口(让开发板可访问)
修改 docker-compose.yml 文件
打开 dify/docker/docker-compose.yam
找到这段代码,并添加
ports:
- "5001:5001"
保存后重启容器:
docker compose down docker compose up -d
检查端口是否开放
docker ps
输出应包含:
0.0.0.0:5001->5001/tcp
打开防火墙端口(管理员执行)
以管理员身份打开 PowerShell
执行代码
netsh advfirewall firewall add rule name="Dify API 5001" dir=in action=allow protocol=TCP localport=5001
输出确定,表示成功
验证端口监听状态
netstat -ano | findstr 5001
TCP 0.0.0.0:5001 LISTENING
表示 5001 已开放,香橙派可以访问。
四、在dify平台上搭建一个简单的智能体
点击创建空白应用
选择Agent,并创建
右上角选择我们的Ollama模型
简单的测试
点击右上角的发布,并点击访问API
这里面是API接口的使用说明
五、在香橙派上访问 Dify API
确保网络互通(可以是局域网,也可以是网线连接两个设备,给开发板共享网络)
在香橙派终端:
ping 192.168.*.*
(替换为你电脑的 IP)
如果能通,继续下一步。
安装 Python 依赖
sudo apt update sudo apt install python3-pip -y pip install requests
在香橙派创建聊天脚本
nano dify_chat.py
粘贴以下完整代码
import requests import json# ========== 配置信息 ========== API_URL = "http://192.168.*.*:5001/v1/chat-messages" # Dify API 地址 API_KEY = "API Key" # 替换成你在 Dify 里复制的 App API Key# ========== 主函数 ========== def ask_dify(question):"""向 Dify 发送请求并返回回答"""headers = {"Authorization": f"Bearer {API_KEY}","Content-Type": "application/json"}data = {# inputs 的字段要和你 Dify 应用的输入参数匹配"inputs": {"question": question},"query": question,"response_mode": "blocking","user": "orangepi"}try:response = requests.post(API_URL, headers=headers, json=data, timeout=30)if response.status_code == 200:result = response.json()return result.get("answer", " Dify 没有返回 answer 字段。")else:return f"请求错误:{response.status_code}\n{response.text}"except Exception as e:return f" 出错: {e}"# ========== 循环交互 ========== def main():print("Dify 智能聊天已启动(输入 exit 或 quit 退出)")while True:question = input("你:").strip()if question.lower() in ["exit", "quit"]:print("👋 再见!")breakanswer = ask_dify(question)print(f"Dify:{answer}\n")if __name__ == "__main__":main()
保存退出:
Ctrl + O → 回车 → Ctrl + X
python3 dify_chat.py
效果示例:
Dify 智能助手已启动(输入 exit 或 quit 退出)
你:你好
Dify:你好,我是 Dify 智能助手。
你:介绍一下 iPhone 15
Dify:iPhone 15 使用 A17 Pro 芯片,支持 USB-C,具备更好的能效和图形性能。
六、常见问题排查
问题 | 原因 | 解决方法 |
---|---|---|
404 Not Found | 路径错误 | 使用 /v1/chat-messages |
405 Method Not Allowed | 用 GET 调用 | 改成 -X POST |
401 Unauthorized | API Key 错误 | 检查是否包含 Bearer 前缀 |
curl 报错 | 引号或 JSON 格式问题 | 使用英文引号 " " |
无响应 / 超时 | 防火墙未放行 | 执行 netsh 命令放行端口 |
Missing inputs | Dify 应用要求必填输入参数 | 在 "inputs": {"question": "xxx"} 中补齐 |
七、完整架构图
┌──────────────┐ ┌──────────────────────┐ ┌─────────────────────┐ │ 开发板 │──→ │ Dify API (Windows) │──→ │ Ollama / 本地模型 │ └──────────────┘ └──────────────────────┘ └─────────────────────┘ ↑ ↓ Python 调用 智能回答返回
八、可选:语音交互扩展(升级为智能语音助手)
安装依赖:
pip install vosk edge-tts sudo apt install mpg123
实现功能:
-
用 vosk 离线识别语音输入;
-
用 edge-tts 将回答合成为语音;
-
香橙派能听懂你的问题并朗读回答。
九、总结
通过本文,我们实现了完整流程:
阶段 | 内容 | 状态 |
---|---|---|
部署 Dify 平台 | Docker Compose 启动 | ✅ |
暴露 API | ports: "5001:5001" + 防火墙放行 | ✅ |
测试 API | Postman / curl | ✅ |
香橙派连接 | 局域网 + ping 测试 | ✅ |
Python 聊天助手 | 循环交互成功 | ✅ |
参考资料
-
Dify 官方文档
-
Ollama 本地模型
-
LangGenius GitHub
-
Vosk 语音识别
-
Edge-TTS 文档