Wise 玩转 AI · 医院智能体工程实战系列文章第一篇总览
AI 不是用来玩的,AI 是用来提升效率的。
通过这个项目,你可以:
-
从 0 开始搭建一个基于
autogen 0.7+ DeepSeek 的医院智能体系统; -
理解从单智能体 → 多智能体 → 工作流编排的完整工程路径;
-
学会如何在代码中落地:
-
Planner(任务规划器)
-
Tools(工具)与 Tool Calling(函数调用)
-
Memory(记忆)与迷你 RAG(检索增强生成)
-
状态机与工作流
-
日志与可观测性、自检 / 自纠错机制
-
并行执行与 Pipeline(流水线)
-
-
把「Day1--Day16 智能体工程系列文章」中讲的架构思想,真正落实到一个可运行的 Python 工程里。
读者定位:
-
对 AI 有兴趣的小白;
-
希望系统学习"工程级智能体"的初级 / 中级工程师。
1. 项目背景与产品定位
1.1 业务背景:医院就诊流程
在真实医院里,一个患者通常会经历:
-
导诊:说明症状 → 推荐科室;
-
挂号:选择科室 / 医生 → 建档;
-
缴费:挂号费、检查费、药费等;
-
检查:抽血、B 超、CT 等;
-
医生:问诊、体检、开检查单、给建议;
-
取药:药房取药,了解用药注意事项。
本项目构建的是一个 "医院 智能体 系统",目标是:
-
用一组 AI 智能体覆盖上述关键环节;
-
从单个导诊 Agent 做起,逐步发展为一个多角色协同的"就诊工作流"。
1.2 技术背景:autogen 0.7 + DeepSeek
技术栈核心:
-
大模型:DeepSeek(通过 OpenAI 兼容接口调用)
-
智能体框架:
autogen 0.7系列库-
autogen-agentchat:Agent 对话与编排 -
autogen-ext.models.openai:OpenAI 兼容模型客户端
-
-
语言:Python 3.11
使用 autogen 0.7 的目的:
-
不只是"调一次大模型",而是:
-
把大模型封装成
AssistantAgent(智能体); -
把 Python 函数封装成
AgentTool(工具); -
再通过 Planner、Workflow 把多 Agent 串成一个可控系统。
-
2. 代码结构总览
与本实战直接相关的结构:
hospital_agent_course/
common/
config.py # DeepSeek 配置(.env -> llm_config)
logging_utils.py # 日志系统
stage0_setup/ # Stage 0:autogen 0.7 + DeepSeek 环境验证
hello_autogen.py
stage1_single_agent_triage/ # Stage 1:单智能体导诊助手
__init__.py
prompts.py
agent_single_triage.py
main.py
stage2_agent_tools_planner/ # Stage 2:Planner + Tools 的"会干活"导诊 Agent
__init__.py
planner/
__init__.py
task_planner.py
tools/
__init__.py
department_tools.py
registration_tools.py
main.py
stage3_memory_rag/ # Stage 3:记忆 + 迷你 RAG 的导诊 Agent
__init__.py
memory_store.py
rag_store.py
main.py
stage4_observability_and_quality/ # Stage 4:可观测 + 自纠错 + 人格风格
__init__.py
persona_style.py
observability.py
self_check.py
main.py
stage5_multi_agent_workflow/ # Stage 5:多智能体 + 工作流
__init__.py
agents/
__init__.py
# 多角色 Agent 构建函数
workflow/
__init__.py
state_machine.py
orchestrator.py
main.py
每个 Stage 都有一个可以单独运行的入口 main.py,方便按阶段逐步推进学习。
3. 环境准备与安装
3.1 Python 版本与 虚拟环境
-
推荐 Python 3.11+。
-
建议使用虚拟环境隔离依赖。
Windows(PowerShell)示例:
cd WiseAgent python -m venv .venv .\.venv\Scripts\activate
macOS / Linux 示例:
cd WiseAgent python -m venv .venv source .venv/bin/activate
3.2 安装依赖
在虚拟环境内执行:
pip install -U autogen-agentchat autogen-ext[openai] python-dotenv
后续如需增加 RAG 向量库、可观测平台等,再按需扩展依赖即可。
3.3 DeepSeek 环境变量 配置
在项目根目录创建 .env(不要提交到 Git):
DEEPSEEK_API_KEY=你的_DeepSeek_API_密钥
DEEPSEEK_MODEL=deepseek-chat # 可选,默认即为该值 DEEPSEEK_BASE_URL=https://api.deepseek.com # 可选,默认即为该值
# 可选:调整日志级别
LOG_LEVEL=INFO
项目内所有 Agent 都会通过这些变量构建 DeepSeek 模型客户端。
4. 各 Stage 快速运行与预期效果
在项目根目录(WiseAgent)执行
4.1 Stage 0:autogen入门
python -m hospital_agent_course.stage0_setup.hello_autogen
预期:
-
终端打印出"Stage 0:autogen 0.7 + DeepSeek Hello Agent 示例"相关日志;
-
屏幕上流式输出 3 句左右的中文自我介绍;
-
日志中能看到使用的 DeepSeek 模型名和 base_url。
4.2 Stage 1:单 智能体 导诊助手
python -m hospital_agent_course.stage1_single_agent_triage.main
预期:
-
程序提示你输入症状(例如:"我这两天一直咳嗽,还有点低烧。");
-
Agent 会:
-
询问必要信息(视模型发挥,可能会问年龄等);
-
推荐 1~2 个科室(如"呼吸内科 / 发热门诊");
-
给出简单流程建议和温馨提醒;
-
-
整体风格:结构化、分点输出,不做诊断、不推荐具体药物。
4.3 Stage 2:Planner + Tools 的"会干活"导诊 Agent
python -m hospital_agent_course.stage2_agent_tools_planner.main
预期:
-
你输入症状后,终端会先打印一段 JSON:
-
goal:本次任务的总体目标; -
steps:每一步的id / action / tool / input;
-
-
然后带工具的导诊 Agent 会:
-
按规划调用
recommend_department工具推荐科室; -
调用
registration_guide工具返回挂号流程; -
合并成一份结构化的导诊说明输出给你。
-
4.4 Stage 3:记忆 + 迷你 RAG 的导诊 Agent
python -m hospital_agent_course.stage3_memory_rag.main
预期:
-
多轮对话时,Agent 能"记住"你刚才说过的话,不会一问一答就忘;
-
当你问一些流程 / 费用 / 检查注意事项类问题时:
-
会从内置 FAQ 中检索相关条目;
-
回答中会明显引用这些知识点;
-
-
终端提示会说明:本阶段在使用会话记忆 + FAQ 知识库。
4.5 Stage 4:可观测 + 自纠错 + 人格风格
python -m hospital_agent_course.stage4_observability_and_quality.main
预期:
-
终端会显示 Planner 输出的 JSON 计划;
-
导诊 Agent 先生成一份"初稿";
-
Checker Agent 再基于用户问题 + 初稿生成"终稿";
-
日志中能看到:
-
Prompt 截断;
-
规划 JSON;
-
初稿与终稿的长度与部分内容。
-
4.6 Stage 5:多 智能体 + 工作流 就诊管线
python -m hospital_agent_course.stage5_multi_agent_workflow.main
预期:
-
你输入主诉(例如:"我这两天头痛,还伴有恶心,想挂号看一下。");
-
系统内部执行:
-
TRIAGE(导诊 Agent 推荐科室); -
REGISTRATION(挂号说明 Agent); -
PARALLEL_PAYMENT_EXAM(缴费说明 Agent + 检查注意事项 Agent 并行执行); -
DOCTOR(模拟医生总结 Agent------不做真实诊断); -
PHARMACY(药房与用药注意事项 Agent);
-
-
最后打印出一份结构化的"本次就诊流程总结",分块展示每个环节输出。