Skip to content

huboyang040911/MedChatAI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

医疗智能对话系统

一个基于大语言模型的医疗领域智能对话系统,支持知识库检索、图片OCR识别、流式响应、智能体联网搜索、个性化用户档案以及管理员后台等功能。

功能特性

核心功能

  • 智能对话:基于大语言模型的医疗问答,支持流式响应
  • 知识库检索:集成 Dify 知识库,提供专业医疗知识支持
  • 智能体搜索:基于 ReAct 范式的智能体,支持联网搜索权威医疗资料
  • 图片OCR:支持上传图片并识别文字内容
  • 用户管理:完整的用户注册、登录、信息管理功能
  • 个性化档案:AI可根据用户年龄、性别、既往病史提供个性化建议
  • 隐私控制:用户可选择是否在本次对话中参考个人信息
  • 管理员后台:管理员可查看、编辑、删除所有用户信息

技术亮点

  • ReAct 智能体:实现 Thought-Action-Observation-Answer 推理范式
  • 流式响应:SSE (Server-Sent Events) 实现打字机效果
  • 知识融合:Dify 知识库与 SerpAPI 搜索结果智能融合
  • 图片识别:百度OCR API 识别图片中的文字
  • Markdown渲染:支持代码块、列表、加粗等格式
  • 响应式设计:适配不同屏幕尺寸
  • 医疗主题UI:专业医疗配色与交互设计
  • 权限管理:基于角色的访问控制(RBAC)

技术栈

后端 (llm-chat-backend)

  • 框架:FastAPI + Python 3.10+
  • 数据库:MySQL + SQLAlchemy (异步)
  • AI模型:OpenAI GPT-4 / 其他兼容OpenAI API的模型
  • 知识库:Dify API
  • 智能体:ReAct 范式实现,支持联网搜索
  • 搜索引擎:SerpAPI (Google搜索)
  • OCR识别:百度OCR API
  • 其他:Alembic(数据库迁移)、Pydantic(数据验证)

前端 (llm-chat-frontend)

  • 框架:Vue 3 + TypeScript
  • 构建工具:Vite
  • UI组件库:Element Plus
  • 状态管理:Pinia
  • Markdown渲染:marked
  • HTTP客户端:Axios
  • 设计系统:医疗专业主题 (医疗蓝 #0891B2 | 健康绿 #22C55E)

项目结构

.
├── llm-chat-backend/          # 后端项目
│   ├── app/
│   │   ├── api/              # API路由
│   │   │   ├── admin.py      # 管理员接口
│   │   │   ├── auth.py       # 认证接口
│   │   │   ├── conversations.py  # 对话管理
│   │   │   ├── messages_stream.py # 流式消息
│   │   │   └── upload.py     # 文件上传
│   │   ├── core/             # 核心配置
│   │   ├── models/           # 数据库模型
│   │   ├── schemas/          # Pydantic模型
│   │   ├── services/         # 业务逻辑
│   │   │   ├── agent/        # ReAct智能体
│   │   │   │   ├── react_agent.py      # ReAct主控制器
│   │   │   │   ├── tools/              # 工具集
│   │   │   │   │   └── search_tool.py  # SerpAPI搜索
│   │   │   │   └── fusion/             # 结果融合引擎
│   │   │   │       └── fusion_engine.py
│   │   │   └── agent_llm_service.py    # 智能体LLM服务
│   │   └── main.py           # 应用入口
│   ├── requirements.txt      # Python依赖
│   └── .env.example          # 环境变量示例
│
├── llm-chat-frontend/         # 前端项目
│   ├── src/
│   │   ├── views/            # 页面组件
│   │   │   ├── ChatView.vue  # 聊天界面
│   │   │   ├── ProfileView.vue # 用户信息界面
│   │   │   ├── AdminUsersView.vue # 管理员用户管理
│   │   │   ├── LoginView.vue # 登录界面
│   │   │   └── RegisterView.vue # 注册界面
│   │   ├── services/         # API服务
│   │   │   ├── admin.ts      # 管理员API
│   │   │   └── api.ts        # 通用API
│   │   ├── stores/           # Pinia状态管理
│   │   ├── router/           # 路由配置
│   │   └── main.ts           # 入口文件
│   ├── package.json          # Node依赖
│   └── .env.example          # 环境变量示例
│
└── README.md                 # 项目说明

快速开始

环境要求

  • Python 3.10+
  • Node.js 18+
  • MySQL 8.0+

1. 克隆项目

git clone <your-repo-url>
cd code1

2. 后端配置

cd llm-chat-backend

# 创建虚拟环境
python -m venv venv

# 激活虚拟环境
# Windows:
venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate

# 安装依赖
pip install -r requirements.txt

# 配置环境变量
cp .env.example .env
# 编辑 .env 文件,填写你的API密钥和数据库配置

# 初始化数据库
python init_db.py

# 启动服务
python run.py

后端服务将在 http://localhost:8000 启动

3. 前端配置

cd llm-chat-frontend

# 安装依赖
npm install

# 配置环境变量
cp .env.example .env
# 编辑 .env 文件(如有需要)

# 启动开发服务器
npm run dev

前端服务将在 http://localhost:5173 启动

4. 访问应用

打开浏览器访问 http://localhost:5173

默认测试账号:

  • 普通用户
    • 用户名:user
    • 密码:user123
  • 管理员
    • 用户名:admin
    • 密码:admin123

配置说明

后端环境变量 (.env)

# 数据库配置
DATABASE_URL=mysql+aiomysql://username:password@localhost:3306/llm_chat

# OpenAI API配置
OPENAI_API_KEY=your_openai_api_key
OPENAI_API_BASE=https://api.openai.com/v1
OPENAI_MODEL=gpt-4

# Dify 知识库配置
DIFY_API_KEY=your_dify_api_key
DIFY_DATASET_ID=your_dataset_id

# SerpAPI 搜索配置(智能体联网搜索)
SERPAPI_KEY=your_serpapi_key

# 百度OCR配置
BAIDU_OCR_API_KEY=your_baidu_ocr_api_key
BAIDU_OCR_SECRET_KEY=your_baidu_ocr_secret_key

# 其他配置
SECRET_KEY=your_secret_key_for_jwt

获取 API 密钥

1. SerpAPI 密钥(智能体搜索功能必需)

SerpAPI 用于智能体联网搜索权威医疗资料。

获取步骤:

  1. 访问 SerpAPI 官网
  2. 注册账号(支持邮箱注册或GitHub登录)
  3. 进入 Dashboard
  4. 复制 Your API Key
  5. 将密钥填入 .env 文件的 SERPAPI_KEY

注意事项:

  • 免费账户每月有 100 次搜索额度
  • 搜索范围限定在权威医疗网站(WHO、Mayo Clinic、WebMD等)
  • 如未配置或额度用尽,系统会自动降级为 LLM+Dify 模式

2. Dify API 密钥(知识库功能必需)

  1. 访问 Dify 官网
  2. 创建知识库并上传医疗文档
  3. 在知识库设置中获取 API Key 和 Dataset ID

3. 百度OCR API 密钥(图片识别功能必需)

  1. 访问 百度智能云
  2. 创建文字识别应用
  3. 获取 API Key 和 Secret Key

前端环境变量 (.env)

VITE_API_BASE_URL=http://localhost:8000/api/v1

ReAct 智能体工作原理

本系统实现了基于 ReAct (Reasoning + Acting) 范式的智能体,工作流程如下:

┌─────────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│   Thought   │ -> │   Action    │ -> │ Observation│ -> │   Answer    │
│   分析问题   │    │  执行搜索   │    │  整理信息   │    │  生成回答   │
└─────────────┘    └─────────────┘    └─────────────┘    └─────────────┘

智能体特性

  • 智能决策:自动分析用户问题,判断是否需要联网搜索
  • 并行检索:同时查询 Dify 知识库和 SerpAPI 搜索引擎
  • 结果融合:将搜索结果与知识库内容智能融合,生成综合回答
  • 来源标注:提供搜索来源,增强回答可信度

管理员功能

系统内置管理员功能,管理员账号(用户名:admin)拥有以下权限:

用户管理

  • 查看用户列表:分页展示所有注册用户基本信息
  • 搜索用户:按用户名关键词搜索用户
  • 编辑用户信息:修改用户昵称、年龄、性别、既往病史
  • 重置密码:为任意用户重置登录密码
  • 删除用户:删除用户账号及其所有对话记录

访问方式

  1. 使用管理员账号登录系统
  2. 点击侧边栏用户头像下拉菜单
  3. 选择"用户管理"进入管理员后台

权限控制

  • 仅用户名为 admin 的账号可访问管理功能
  • 后端 API 层面进行权限验证,防止越权访问
  • 管理员不能删除自己的账号

API文档

启动后端服务后,访问 http://localhost:8000/docs 查看自动生成的 Swagger API 文档。

主要 API 分组

分组 路径前缀 说明
Auth /api/v1/auth 认证相关(登录、注册、用户信息)
Conversations /api/v1/conversations 对话管理
Messages /api/v1/messages 消息发送与流式响应
Upload /api/v1/upload 文件上传
Admin /api/v1/admin 管理员功能(需管理员权限)

开发计划

  • 基础对话功能
  • 流式响应
  • 知识库检索
  • 图片OCR识别
  • 用户管理系统
  • 个人信息参考
  • ReAct 智能体联网搜索
  • UI/UX 医疗主题美化
  • 管理员后台功能
  • 多轮对话上下文优化
  • 语音输入输出
  • 移动端适配优化

更新日志

详见 CHANGELOG.md

贡献指南

  1. Fork 本仓库
  2. 创建你的特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交你的更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开一个 Pull Request

许可证

本项目仅供学习和研究使用。

免责声明

本系统提供的医疗建议仅供参考,不能替代专业医师的诊断和治疗。如有身体不适,请及时就医。

联系方式

如有问题或建议,欢迎提交 Issue 或联系开发者。


注意:使用本项目需要配置自己的 API 密钥(OpenAI、Dify、SerpAPI、百度OCR等),请确保遵守相关服务条款。

About

一个基于大语言模型的医疗领域智能对话系统,支持知识库检索、图片OCR识别、流式响应以及智能体集成等功能。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors