内容
# 代理式预约调度系统
## 概述
**代理式预约调度系统** 使用代理式框架自动完成与医生预约、重新安排和管理预约的过程。
该系统集成了 **MCP(多能力协议)** 接口、基于API的通信和可选的仪表板进行可视化。
## 目标
* 设计一个能够处理预约相关任务的基于AI的代理。
* 通过API和MCP服务器演示多组件交互。
* 实现预约的程序化和可视化监控。
## 系统功能
代理可以执行以下操作:
* **新增预约** – 创建新的预约。
* **取消预约** – 取消现有的预约。
* **重新安排预约** – 修改预约的时间或日期。
* **获取医生列表** – 检索可用医生的列表。
* **获取所有预约** – 显示所有已安排的预约。
## 项目结构
```
appointment_scheduling_agent/
│
├── as_2/
│ ├── api.py # 核心FastAPI服务器,处理API请求
│ ├── dashboard.py # 可选的Streamlit仪表板,用于可视化
│ ├── core/ # 核心模块和辅助函数
│ ├── data/ # 预约和医生数据存储
│ ├── server/ # MCP服务器实现
│ ├── requirements.txt # Python依赖项
│ └── __pycache__/ # 编译缓存文件
```
## 安装
### 步骤 1:克隆仓库
```bash
git clone https://github.com/<your-username>/appointment_scheduling_agent.git
cd appointment_scheduling_agent/as_2
```
### 步骤 2:创建虚拟环境
```bash
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
```
### 步骤 3:安装依赖项
```bash
pip install -r requirements.txt
```
## 如何运行系统
该系统需要 **至少两个(可选三个)** 单独的终端来运行所有组件。
### **终端 1:运行核心API(FastAPI)**
此操作必须运行,其他组件才能工作。
```bash
uvicorn api:app --reload --port 8000
```
**它执行的操作:**
在 [http://127.0.0.1:8000](http://127.0.0.1:8000) 启动中央API中心。
处理所有预约和医生数据。
### **终端 2:运行AI代理桥接器(MCP)**
此操作将AI代理连接到后端API。
```bash
uvicorn server.main:mcp --reload --port 8001
```
**它执行的操作:**
在 [http://127.0.0.1:8001](http://127.0.0.1:8001) 启动MCP服务器。
AI代理(例如Claude或其他兼容代理)连接到此处以访问调度工具。
### **终端 3:运行仪表板(可选)**
此视觉仪表板有助于监控和管理预约。
```bash
streamlit run dashboard.py
```
**它执行的操作:**
在浏览器中启动仪表板视图,以便更轻松地交互和可视化。
## 📋 API 端点
一旦API服务器运行,您就可以通过Swagger界面在
👉 [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs)
进行交互。
| 方法 | 端点 | 描述 |
| ---------- | -------------------- | ------------------------------------ |
| **POST** | `/appointments` | 预订新的预约 |
| **GET** | `/appointments` | 检索所有已安排的预约 |
| **DELETE** | `/appointments/{id}` | 通过ID取消特定预约 |
| **GET** | `/doctors` | 检索可用医生的列表 |
## 示例提示
您可以使用以下自然语言提示测试系统:
* “预约明天上午11点与Ramesh Gupta医生的预约。”
* “取消与Sushma Desai医生的预约。”
* “将与Sunita Sharma医生的预约重新安排到星期五下午3点。”
* “显示我的所有预约。”
* “列出可用医生。”
## 使用的技术
* **Python 3.10+**
* **FastAPI**
* **FastMCP 框架**
* **Streamlit(仪表板)**
* **JSON 数据存储**