NARUDESIGNS/Medic-AI-Agent
GitHub: NARUDESIGNS/Medic-AI-Agent
一款基于 LangChain 的医疗 AI 助手应用,用于研究和对比 Agentic LLM 系统中针对间接提示注入攻击的不同 Guardrail 防御策略。
Stars: 0 | Forks: 0
# Medic AI
一款具有 React UI 和 LangChain agent 后端的医疗助手聊天应用。该 agent 可以读取上传的文档、获取网页内容,并从 Postgres 中查询患者记录。它还包含可选择的 guardrails,用于探索 prompt 注入防御。
## 功能
- **聊天 UI** — Medic AI 界面,支持消息历史记录和文件上传(PDF、TXT、MD)
- **Agent 工具**
- `process_document` — 从上传的文件中提取内容并回答问题
- `retrieve_web_data` — 抓取并总结 URL 内容
- `manage_patients_data` — 只读患者查询(Postgres)
- **Guardrails**(可在 UI 中选择)
- **Off** — 无额外 guardrail
- **Instruction Hierarchy** — 更强的 system prompt 规则(医疗、隐私、抗越狱)
- **Prompt Shield** — 在用户 prompt、上传文件和外部工具内容上应用 Azure AI Content Safety Prompt Shields
## 前置条件
- Node.js 18+
- OpenAI API key
- (可选)用于患者查询的 PostgreSQL
- (可选)用于 Prompt Shield guardrail 的 Azure Content Safety Prompt Shield endpoint 和 key
## 设置
```
npm install
npm install --prefix server
```
在**项目根目录**下创建一个 `.env` 文件(服务器会从 `server/` 目录加载 `../.env`):
```
cp server/.env.example .env
```
至少需要填写以下内容:
| 变量 | 用途 |
| --- | --- |
| `OPENAI_API_KEY` | agent 必需 |
| `PORT` | 服务器端口(默认为 `3001`) |
| `DATABASE_URL` | Postgres 连接字符串(患者工具) |
| `PATIENTS_TABLE` / `PATIENT_ID_COLUMN` / `PATIENT_NAME_COLUMN` | 患者表映射 |
| `CURRENTLY_LOGGED_IN_ID` | 模拟登录的患者诊所 ID |
| `PROMPT_SHIELD_API_ENDPOINT` | Azure Prompt Shield API URL |
| `PROMPT_SHIELD_API_KEY` | Azure 订阅密钥 |
只有在您使用相关功能时,才需要配置 Patient DB 和 Prompt Shield 变量。
## 运行
启动两个进程(使用两个终端):
```
# UI — http://localhost:5173
npm run dev
# API — http://localhost:3001
npm run dev:server
```
Vite 开发服务器会将 `/api` 代理到端口 `3001` 上的后端。
打开 http://localhost:5173 即可与 Medic AI 聊天。使用 UI 中的 guardrail 下拉菜单可以切换模式。
标签:DLL 劫持, MITM代理, Petitpotam, React, Syscalls, 医疗助手, 大语言模型, 测试用例, 自动化攻击, 间接提示词注入