RabiyaMalik242/health-query-chatbot-llm
GitHub: RabiyaMalik242/health-query-chatbot-llm
基于 LLaMA 3.3 70B 的健康咨询聊天机器人,结合 prompt engineering 与双层安全过滤器,以安全友好的方式回答常规健康问题。
Stars: 0 | Forks: 0
# 🤖 通用健康咨询聊天机器人
这是一款基于大语言模型 (LLM)、结合 prompt engineering 和双层安全过滤器的对话式 AI 聊天机器人,可以回答常规的健康问题。该应用具有精美的 Streamlit Web 界面,是作为 AI/ML 实习项目开发的。
## 📌 目标
使用 Groq API (LLaMA 3.3 70B) 构建一个健康咨询聊天机器人,利用 prompt engineering 技术,以友好、清晰且安全的方式回答常规健康问题。
## 📂 项目结构
```
health-query-chatbot-llm/
│
├── health_chatbot.ipynb # Full project notebook — pipeline, demos, analysis
├── chatbot.py # Core logic — single source of truth
├── app.py # Streamlit web interface
├── requirements.txt
└── README.md
```
**文件之间的关联方式:**
- `chatbot.py` 包含所有核心逻辑 — API 设置、system prompt、安全过滤器和聊天功能
- `health_chatbot.ipynb` 从 `chatbot.py` 导入,用于演示和解释 pipeline
- `app.py` 从 `chatbot.py` 导入,为 Web 界面提供支持
- 只需在 `chatbot.py` 中修改一次,notebook 和应用都会立即同步更改
## 🛠️ 工具与库
- Python 3
- [Groq API](https://console.groq.com) — LLaMA 3.3 70B (免费版)
- Streamlit — Web 界面
- Jupyter Notebook — 项目文档与 pipeline 演示
## ⚙️ 项目 Pipeline (Notebook)
1. **API 设置** — 使用 LLaMA 3.3 70B 初始化 Groq 客户端
2. **Prompt Engineering** — 设计了详细的 system prompt,赋予模型医疗助手的角色,并设定了严格的规则
3. **安全过滤器** — 双层安全系统:
- 前置过滤器:基于关键词的黑名单,用于拦截有害查询
- LLM 层级:system prompt 护栏
4. **单次查询演示** — 4 个测试健康问题
5. **Prompt Engineering 对比** — 使用 3 种不同的 system prompt 回答同一个问题,展示 prompt 设计的影响
6. **安全过滤器演示** — 常规、紧急及被拦截查询的处理方式
7. **多轮对话** — 聊天机器人能够在多轮交互中保持上下文
8. **交互式聊天循环** — notebook 内的实时聊天界面
9. **Token 使用追踪** — 监控每次 API 调用的 prompt/completion/total token 数量
## 🖥️ Streamlit 界面特性
- 深色医疗主题 UI
- 带有 **👤 You** 和 **🤖 MediBot** 标签的聊天气泡
- 快捷问题标签 — 点击即可立即提出常见问题
- 每次回复后自动滚动至最新消息
- 发送后输入框自动清空
- 按 Enter 键或发送按钮均可提交消息
- 针对危及生命的查询显示紧急横幅(红色),提供巴基斯坦及国际救援电话
- 针对不安全查询显示拦截横幅(黄色)
- 会话统计 — 查询次数和使用的总 token 数
- 清除对话按钮
- 侧边栏的安全过滤器状态徽章
## 🛡️ 安全设计
| 层级 | 方法 |
|---|---|
| 前置过滤器 | 关键词黑名单 — 在请求到达 API 前拦截有害及紧急查询 |
| LLM 层级 | System prompt 规则 — 控制语气、范围及拒绝行为 |
| 紧急情况 | 检测到相关关键词会立即触发跳转,提供紧急服务及具体号码 |
| 心理健康 | 检测到自杀/自残关键词会触发共情回复,并提供巴基斯坦及国际危机干预热线 |
**应用中显示的紧急号码:**
- 🇵🇰 巴基斯坦:**115** (Rescue),**1122** (Edhi),Umang 热线 **0317-4288665**
- 🌍 国际:**112**
## 🧠 Prompt Engineering
本项目的一个核心重点是展示 system prompt 设计如何改变模型行为。Notebook 中对比了三种 prompt 风格:
| Prompt 风格 | 结果 |
|---|---|
| ❌ 通用型 (`You are a helpful assistant`) | 缺乏结构,无医疗安全机制 |
| ⚠️ 过于模糊 (`Answer health questions briefly`) | 回答不完整,无免责声明 |
| ✅ 优化后的 MediBot prompt | 结构清晰、安全、具有同理心,并建议就医 |
## 💬 查询示例
```
"What causes a sore throat?"
"Is paracetamol safe for children?"
"What are common symptoms of dehydration?"
"How can I improve my sleep quality?"
"What is hypertension?"
```
## 🚀 如何运行
1. 克隆代码仓库
```
git clone https://github.com/RabiyaMalik242/health-query-chatbot-llm.git
```
2. 安装依赖项
```
pip install -r requirements.txt
```
3. 在 [console.groq.com](https://console.groq.com) 获取免费的 Groq API 密钥
4. 打开 `chatbot.py`,并在第 20 行粘贴您的 API 密钥:
```
GROQ_API_KEY = "your_groq_api_key_here"
```
5. 运行 Streamlit 界面
```
streamlit run app.py
```
6. 或者打开 `health_chatbot.ipynb` 以探索完整的项目 pipeline
## ⚠️ 局限性
- 基于关键词的安全过滤器可能会被巧妙的话术绕过 — 生产级应用应使用基于 LLM 的内容审核层
- 模型可能会产生虚假的医学事实 — 请务必由专业医生进行核实
- 会话间没有持久记忆 — 应用重启时对话历史会重置
- token 使用量会随着对话长度的增加而增长 — 在长会话中应适当修剪历史记录
## ⚕️ 免责声明
MediBot 是一个仅供教育目的使用的演示项目。它不提供医疗建议,也不能替代专业的医疗服务。如有医疗问题,请务必咨询合格的医疗保健专业人士。
## 👩💻 作者
Rabiya Malik BS Software Engineering — AI/ML 实习项目
标签:AI, DLL 劫持, Groq API, Kubernetes, NoSQL, Rego, Streamlit, Sysdig, 医疗健康, 大语言模型, 自动化代码审查, 访问控制, 逆向工具