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, 医疗健康, 大语言模型, 自动化代码审查, 访问控制, 逆向工具