中华药典 AI Agent — Pharmacopoeia AI
服务于药店医师、营业员和医生的 AI 药典查询系统
项目结构
pharmacopoeia-ai/
├── backend-java/ # Java Spring Boot 后端(生产推荐)
│ ├── pom.xml
│ └── src/main/java/com/pharmacopoeia/
│ ├── config/ # 配置属性
│ ├── entity/ # JPA 实体
│ ├── security/ # Spring Security + JWT
│ ├── service/ # LLM / RAG / 持久化
│ └── controller/ # REST + SSE 控制器
│
├── backend-python/ # Python FastAPI 后端(开发原型)
│ ├── app/
│ │ ├── api/ # chat / auth / drug / admin / exam
│ │ ├── core/ # config / security / llm_client
│ │ ├── rag/ # retriever / reranker / prompt / intent
│ │ └── models/ # ORM 模型
│ └── requirements.txt
│
├── data-pipeline/ # 数据采集与入库管道(Python)
│ ├── crawlers/ # PDF 提取 / 维基采集 / NMPA 爬虫
│ ├── processors/ # 文本清洗 / 切片 / 向量化
│ ├── schemas/ # JSON Schema(drug / knowledge_point / question)
│ ├── data/ # 药典目录 / 示例数据 / Wiki 采集
│ └── ingest.py # 向量化入库脚本
│
├── frontend-web/ # HTML5 Web 测试前端
│ └── index.html
│
├── miniprogram/ # 微信小程序 AI 模块(uni-app 增量)
│ ├── api/ai.js # API 封装(SSE多事件)
│ ├── utils/sse.js # SSE 工具
│ ├── pages/ai-yaodian/ # AI 药典查询页面
│ └── components/ai-chat/ # 浮动对话面板
│
├── deploy/ # 部署配置
│ ├── docker-compose.yml # PG + Redis
│ ├── nginx.conf
│ └── supervisord.conf
│
├── docs/ # 文档
│ ├── SCHEME.md # 整体方案设计
│ ├── DATA_GUIDE.md # 数据准备操作指南
│ ├── CRAWLER_ASSESSMENT.md # 爬虫能力评估
│ └── MINIPROGRAM_INTEGRATION.md # 小程序联调手册
│
├── .env.example # 环境变量模板
└── .gitignore
快速开始
1. 环境准备
docker compose -f deploy/docker-compose.yml up -d
# 启动 PostgreSQL(pgvector) + Redis
2. Java 后端(推荐)
cd backend-java
# 编辑 src/main/resources/application.yml 填入 qwen.api-key
mvn spring-boot:run
3. Python 后端(原型验证)
cd backend-python
pip install -r requirements.txt
cp ../.env.example ../.env # 编辑填入 QWEN_API_KEY
uvicorn app.main:app --host 0.0.0.0 --port 8000
4. 导入数据
cd data-pipeline
pip install -r requirements.txt
python ingest.py # 需要先在 data/ 下准备 drug JSON 文件
5. 前端测试
打开浏览器访问 http://localhost:8000(Python)或 http://localhost:8080(Java)
技术栈
| 层级 |
Python版 |
Java版 |
| 后端框架 |
FastAPI + Uvicorn |
Spring Boot 3.3 |
| 鉴权 |
python-jose + passlib |
Spring Security + JJWT |
| 向量检索 |
pgvector (raw SQL) |
pgvector (JdbcTemplate) |
| LLM API |
OpenAI SDK → Qwen |
WebFlux → Qwen |
| ORM |
SQLAlchemy |
Spring Data JPA |
| 数据库 |
PostgreSQL + Redis |
PostgreSQL + Redis |
API 清单
| 方法 |
路径 |
说明 |
| POST |
/api/v1/chat/stream |
SSE 流式对话 |
| POST |
/api/v1/chat/ask |
非流式对话 |
| GET |
/api/v1/chat/history |
对话历史 |
| POST |
/api/v1/auth/login/wechat |
微信登录 |
| GET |
/health |
健康检查 |