使用说明
🧠 Agent工具--自然语言→ Jupyter笔记本自动化
一个以生产为导向、受MCP启发的系统,使用本地LLM将自然语言指令转换为安全、确定的Jupyter笔记本操作。
🚀 为什么这个项目存在
Jupyter笔记本功能强大,但程序控制脆弱且不安全:
- 手动编辑容易出错
- LLMs产生幻觉的API
- 笔记本损坏很常见
- 自动化缺乏护栏
AgentTool通过引入一个严格的、仅支持JSON的代理层来解决这个问题,该代理层将自然语言转换为经过验证的、可执行的笔记本操作。
该项目展示了:
- 代理设计
- LLM安全约束
- 确定执行
- 现实世界系统集成
🧩 这个项目做什么
✅ 接受自然语言命令 ✅ 将它们转换为严格的JSON行动计划 ✅ 验证针对允许的MCP端点的操作 ✅ 以原子和安全的方式执行笔记本操作 ✅ 完全在本地工作(不依赖于云)
例子:
"Create a notebook and add a markdown title called Analysis"
➡️ 自动创建:
# Analysis
内部a .ipynb 文件——安全。
🏗️ 高级体系结构
┌───────────────┐
│ User / CLI │
└───────┬───────┘
│ Natural Language
▼
┌────────────────────────┐
│ MCP Agent Server │
│ (FastAPI) │
│ - LLM prompt control │
│ - JSON enforcement │
│ - Action validation │
└────────┬───────────────┘
│ JSON Action Plan
▼
┌────────────────────────┐
│ MCP Jupyter Server │
│ (Flask) │
│ - Notebook CRUD │
│ - Atomic writes │
│ - File safety │
└────────────────────────┘
📁 项目结构
AgentTool/
├── mcp-agent-server/ # LLM-powered agent
│ ├── agent_server.py
│ ├── requirements.txt
│ └── ui.html
│
└── mcp-jupyter-server/ # Deterministic execution layer
├── server.py
├── requirements.txt
├── openai.yaml
├── README.md
🧠 关键工程决策(招聘信号)
1.️⃣ 严格的JSON强制
- 代理拒绝markdown、散文或无效的JSON
- 防止产生幻觉的原料药
- 保证机器可读的计划
2.️⃣ 行动白名单
仅允许的端点:
"/create_cell"
没有发明端点。这并不奇怪。
3.️⃣ 原子笔记本写入
通过以下方式避免笔记本损坏:
- 写入临时文件
- 原子性地替换原始
这反映了生产级文件系统的安全性。
4.️⃣ 当地第一法学硕士(Ollama)
- 将Ollama与本地托管模型结合使用(例如。
phi3:mini,qwen2.5:7b) - 无外部API
- 可复制且隐私安全
5.️⃣ 框架分离
| 层 | 技术 | 原因 |
|---|---|---|
| 代理 | FastAPI | 类型安全,异步就绪 |
| Executor | Flask | 简单、稳定的文件操作 |
🔌 MCP代理服务器(FastAPI)
职责
- 接受用户输入
- 致电当地LLM
- 强制只输出JSON
- 验证MCP操作
- 对连接的MCP服务器执行
跑
cd mcp-agent-server
pip install -r requirements.txt
uvicorn agent_server:app --reload
📓 MCP Jupyter服务器(Flask)
职责
- 创建/编辑/删除/移动笔记本单元格
- 自动创建笔记本
- 防止文件损坏
- 为代理提供REST API
跑
cd mcp-jupyter-server
pip install -r requirements.txt
python server.py
运行时间: http://localhost:5001
🧪 端到端流程示例
curl -X POST http://127.0.0.1:8000/chat \
-H "Content-Type: application/json" \
-d '{ "message": "Create a notebook and add a markdown title called Analysis" }'
结果:
- 自动创建笔记本
- 已添加Markdown标题
- 无幻觉
- 没有腐败
🛡️ 故障处理
| 故障 | 处理 |
|---|---|
| JSON无效 | 已拒绝 |
| 未知端点 | 已删除 |
| LLM超时 | 安全错误 |
| 笔记本丢失 | 自动创建 |
| 文件已损坏 | 已重新初始化 |
📌 这个项目展示了什么
✔ 代理设计原则 ✔ 安全的LLM编排 ✔ MCP式工具 ✔ 真正的文件系统保证 ✔ 生产思维,而非演示
📈 将来的扩展
- 多步骤计划
- 通过代理编辑/删除/移动
- 笔记本差异预览
- 实时代理执行UI
- 流式传输LLM响应
👩💻 作者
迪沙 Holmukhe AI系统|代理AI |机器学习工程|开源贡献者