这是一个网页端盲人视觉辅助系统 Demo,用于展示“前端交互 + 后端大模型响应处理 + 多模态大模型 API + 语音/日志等扩展能力”的最小可演示实现。
系统提供两种使用模式:
图片导航模式:上传单张图片,适合调试模型、prompt 和图片输入质量。视频导航模式:调用浏览器摄像头,前端定时截取视频帧并通过 HTTP 发给后端分析;寻路任务可持续轮询,场景描述和综合辅助默认单次分析。
NavAgent/
├── backend/
│ ├── __init__.py
│ ├── api_interface.py
│ ├── config.py
│ ├── file_tools.py
│ ├── llm_client.py
│ └── text_utils.py
├── docs/
│ └── api-contract.md
├── frontend/
│ ├── app.js
│ ├── index.html
│ └── styles.css
├── cli.py
├── file_utils.py
├── main.py
├── output/
├── pyproject.toml
├── requirements.txt
├── README.md
├── 使用方法.md
└── 盲人辅助系统架构计划.md
- 图片导航模式上传图片并展示结构化分析结果。
- 视频导航模式调用摄像头、截帧、压缩为 JPEG 后提交分析。
- 支持任务切换:
scene_description、navigation_guidance、general_assistance。 - 支持 provider 切换,并在页面标记未配置的 provider。
- 支持浏览器
speechSynthesis播报结果。 - 支持浏览器语音输入,将语音识别内容写入问题文本框。
- 视频导航模式支持盲操作快捷键:空格、
S、X、-、+。
- 接收 multipart 图片或 JSON base64 图片帧。
- 按任务构造盲人辅助场景 prompt。
- 调用视觉大模型并提取 JSON。
- 规范化
summary、guidance、hazards、riskLevel、confidence。 - 为语音播报生成
ttsPayload。 - 视频导航模式根据风险、变化和上一轮状态返回
shouldSpeak、eventType、nextIntervalMs。 - 保存调试图片、结果 JSON 和正式模式 JSONL 日志。
backend/llm_client.py 当前支持:
openai:OpenAI SDKernie:OpenAI 兼容接口qwen:OpenAI 兼容接口kimi:OpenAI 兼容接口zhipu:OpenAI 兼容接口gemini:Gemini REST APImock:后端模拟结果,主要用于接口调试
注意:前端 provider 下拉框默认展示真实 provider;mock 可通过 API 或代码配置测试后端链路。
- Python
3.11+,与pyproject.toml保持一致。 - 依赖见
requirements.txt。
安装依赖:
pip install -r requirements.txt项目启动时会先加载 .env.example,再加载 .env。后加载的 .env 会覆盖默认值,所以本地密钥应写在 .env 中。
可从 .env.example 复制一份:
cp .env.example .envWindows PowerShell 可使用:
Copy-Item .env.example .env关键配置项:
APP_HOST=127.0.0.1
APP_PORT=8000
APP_DEBUG=true
DEFAULT_PROVIDER=qwen
FORMAL_INTERVAL_MS=1500
OUTPUT_DIR=output
QWEN_API_KEY=
QWEN_BASE_URL=
QWEN_MODEL=Qwen3.6-Plus完整 provider 配置请看 .env.example 或 使用方法.md。
直接启动:
python main.py或使用 CLI:
python cli.py runserver指定地址:
python cli.py runserver --host 127.0.0.1 --port 8000查看配置:
python cli.py show-config默认页面地址:
http://127.0.0.1:8000/
GET /GET /assets/<filename>GET /api/healthGET /api/providersPOST /api/debug/analyzePOST /api/formal/analyzePOST /api/tts/payload
详细请求和响应字段见 docs/api-contract.md。
output/debug/:保存图片导航模式上传的图片和响应 JSON。output/formal/:按sessionId保存视频导航模式 JSONL 日志。
- 当前不是 WebSocket 视频流,而是“浏览器截帧 + HTTP 请求”。
- 尚未接入独立 TTS 合成服务,网页端使用浏览器原生播报。
- 视频导航依赖浏览器摄像头权限。
- 长时间运行时仅维护轻量会话状态,没有复杂的多轮记忆压缩。