引言

大家好,我是 Wise 玩转 AI。今天开始,我们将开启一个全新的实战系列 —— 使用 CrewAI 框架构建医院智能体导诊系统。作为一名坚信 "AI 不是玩具,而是能 10 倍提升效率的助手和员工" 的开发者,我一直致力于将 AI 智能体技术落地到实际业务场景中。

医院导诊是一个非常适合智能体发挥作用的场景 —— 每天都有大量患者需要了解科室信息、医生专长、预约流程等基础服务,这些工作重复性高、规则相对明确,非常适合通过智能体来自动化处理,从而解放人力,提升服务效率。

在本系列文章中,我们将使用 Python 3.11 和最新版 CrewAI 框架,从零开始构建一个实用的医院导诊智能体。我会将之前分享的智能体核心理论 —— 包括五大模块架构、结构化 Prompt 设计、任务规划等 —— 融入到实际项目中,让大家看到这些理论如何指导实际开发。

CrewAI 框架核心解析

让我们先深入了解一下 CrewAI 这个强大的智能体协作框架。

CrewAI 的核心思想是 "团队协作",它将复杂任务分配给不同角色的智能体,通过明确的流程让它们协同工作。这种思想与我们之前提到的智能体架构不谋而合 —— 一个复杂的智能系统需要分工明确的组件,就像一个医院需要不同科室的医生一样。

最新版 CrewAI 的核心组件包括:

  1. Agent(智能体

Agent 是 CrewAI 的基本执行单元,每个 Agent 都有明确的角色和专业领域。在我们的导诊系统中,我们可能会有 "科室导诊 Agent"、"预约 Agent"、"症状分析 Agent" 等。

from crewai import Agent

# 定义一个科室导诊Agent
department_agent = Agent(
    role="医院科室导诊专家",
    goal="帮助患者准确找到需要就诊的科室,提供科室位置和出诊时间信息",
    backstory="你是一位有10年经验的医院导诊专家,熟悉医院所有科室的功能和位置,""能够根据患者描述推荐合适的科室。",
    verbose=True)

这个定义完美体现了我们在工程级 Prompt 中强调的 "角色 (Role)" 和 "目标 (Goal)" 要素,让智能体有清晰的定位和任务边界。

  1. Task(任务)

Task 代表需要完成的具体工作,每个任务都有明确的目标和预期输出。在导诊系统中,"查询心内科出诊时间"、"预约消化科专家号" 都是具体的 Task。

from crewai import Task

# 定义一个查询科室信息的任务
query_department_task = Task(
    description="查询{{department}}的出诊时间、位置和擅长治疗的疾病",
    expected_output="以清晰的格式列出{{department}}的出诊时间、具体位置和主治疾病",
    agent=department_agent
)

Task 的定义强调了我们之前提到的 "步骤 (Steps)" 和 "输出格式 (Output Format)",确保任务可执行、结果可预期。

  1. Tool(工具)

Tool 是智能体扩展能力的关键,让智能体能够与外部系统交互。在导诊系统中,我们会有查询医院数据库的工具、预约系统的工具等。

from crewai_tools import BaseTool

class HospitalDatabaseTool(BaseTool):
    name = "医院数据库查询工具"
    description = "用于查询医院科室、医生、出诊时间等信息"
    
    def _run(self, query: str) -> str:
    # 实际查询数据库的逻辑# ...
    return "查询结果:..."

这个工具定义完全符合我们之前提到的 Toolspec 规范,明确了工具名称、功能描述和使用方法。

  1. Crew(团队)

Crew 是由多个 Agent 组成的团队,负责协调整体任务的执行。在我们的导诊系统中,整个导诊服务就是一个 Crew。

from crewai import Crew, Process

# 创建导诊团队
diagnosis_crew = Crew(
    agents=[department_agent, appointment_agent, symptom_agent],
    tasks=[query_department_task, make_appointment_task, analyze_symptom_task],
    process=Process.sequential  # 顺序执行任务)
  1. Process(流程)

Process 定义了团队成员的协作方式,CrewAI 提供了多种流程模式,如顺序执行 (sequential)、层次执行 (hierarchical) 等,这对应了我们之前提到的智能体 "任务规划" 能力。

医院导诊智能体项目规划

基于 CrewAI 框架,我设计了一个分四期实现的医院导诊智能体项目:

第 1 期:基础导诊智能体

  • 实现科室查询和医生信息查询功能

  • 搭建基础的智能体框架

  • 重点:展示 CrewAI 的基本使用方法,体现智能体的输入解析和响应能力

第 2 期:增强型导诊与预约

  • 增加预约挂号功能

  • 实现简单的症状分析和科室推荐

  • 重点:展示工具调用能力,连接外部数据接口

第 3 期:智能问答与流程优化

  • 增加常见医疗问题的智能回答

  • 优化导诊流程,实现多步对话

  • 重点:引入记忆系统,展示智能体的上下文理解能力

第 4 期:全功能导诊系统

  • 整合前几期功能,实现完整流程

  • 增加异常处理和错误恢复机制

  • 重点:展示智能体的鲁棒性和工程化落地能力

这个渐进式的开发计划,从简单到复杂,确保每个阶段都有可运行、可验证的成果。

结语

在接下来的文章中,我们将开始第 1 期的实践,从零开始搭建基础的医院导诊智能体。我们会看到 CrewAI 如何帮助我们快速实现智能体的核心功能,以及如何将之前讨论的智能体工程化原则应用到实际代码中。

如果你也对智能体技术在企业中的落地感兴趣,欢迎持续关注这个系列。记住,AI 不是用来玩的,而是用来真正提升效率的工具。让我们一起将智能体技术从概念变为实用的产品。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐