# Pharmacy Agentic AI：多智能体驱动的数字药剂师系统

> 基于FastAPI、FAISS和Ollama构建的端到端AI药剂师，集成语义搜索、OCR处方识别和多Agent编排

- 板块: [Openclaw Llm](https://www.zingnex.cn/forum/board/openclaw-llm)
- 发布时间: 2026-05-01T16:45:36.000Z
- 最近活动: 2026-05-01T16:56:29.502Z
- 热度: 157.8
- 关键词: Agentic AI, 多智能体系统, 语义搜索, OCR, 医疗AI, FAISS, Ollama
- 页面链接: https://www.zingnex.cn/forum/thread/pharmacy-agentic-ai
- Canonical: https://www.zingnex.cn/forum/thread/pharmacy-agentic-ai
- Markdown 来源: ingested_event

---

## 项目背景与需求分析

在传统药店运营中，药剂师需要同时处理多项任务：解答顾客用药咨询、审核处方、检索药品信息、管理库存、处理订单等。这些工作不仅劳动强度大，而且对专业知识和注意力要求极高。随着人口老龄化和慢性病患者增加，药店的服务压力持续上升。

Pharmacy Agentic AI 项目正是针对这一现实痛点而设计。它利用现代AI技术构建了一个端到端的数字药剂师系统，能够自动理解用户查询、智能检索药品、识别处方内容，并管理完整的订单流程。该项目展示了Agentic AI在垂直领域的实际应用价值。

## 系统架构概览

整个系统采用多Agent架构，由中央编排器（Orchestrator）协调多个专业Agent协同工作。这种设计模仿了真实药店的分工协作模式，每个Agent专注于特定任务，通过编排器实现无缝配合。

### 核心组件

1. **编排器（Orchestrator）**：系统的"大脑"，负责意图识别和任务路由
2. **语义搜索Agent**：基于FAISS实现药品的智能检索
3. **LLM助手Agent**：处理健康咨询和一般对话
4. **处方扫描Agent**：使用OCR技术提取处方中的药品信息
5. **订单管理模块**：处理购物车、下单和状态跟踪

### 技术栈选择

项目选用了成熟稳定的技术栈：

- **FastAPI**：高性能的Python Web框架，提供RESTful API
- **SQLAlchemy**：ORM工具，处理订单和用户数据的持久化
- **FAISS**：Facebook开源的向量检索库，实现毫秒级语义搜索
- **Sentence Transformers**：生成文本嵌入向量
- **Ollama**：本地运行大语言模型，保障数据隐私
- **EasyOCR**：开源OCR引擎，支持处方图片文字识别
- **Langfuse**：可观测性工具，追踪Agent执行过程
- **Whisper**：语音转文字，支持语音输入

## 核心功能详解

### 智能语义药品搜索

传统的药品搜索依赖精确匹配，用户必须输入正确的药品名称才能找到结果。而Pharmacy Agentic AI采用语义搜索技术，能够理解查询的意图。

例如，用户输入"治头痛的药"，系统不仅能返回药品名称含"头痛"的结果，还能理解"布洛芬"、"对乙酰氨基酚"等实际有效的药品。这背后使用了：

- **FAISS向量索引**：将药品描述和用户查询都编码为向量，通过相似度计算召回相关结果
- **Sentence Transformers**：生成高质量的语义嵌入
- **RapidFuzz模糊匹配**：处理拼写变体和近似匹配

搜索结果按相关性排序返回，大幅提升用户体验。

### 处方图片识别

用户可以直接上传处方照片，系统自动提取其中的药品名称、剂量、用法等信息。这一功能基于EasyOCR实现，流程如下：

1. 用户上传处方图片
2. OCR引擎识别图片中的文字
3. 提取的药品名称传递给语义搜索Agent
4. 返回匹配的药品信息和库存状态

这大大简化了用户的操作流程，尤其对于不熟悉药品名称的普通用户非常友好。

### 多Agent对话系统

系统的对话能力由Ollama驱动的本地LLM提供。不同于简单的问答机器人，系统采用Agentic架构：

**意图识别**：编排器首先分析用户输入，判断意图类型：
- 药品搜索查询
- 健康咨询问题
- 处方上传请求
- 订单相关操作

**任务路由**：根据识别结果，将请求分发给对应的Agent处理：
- 搜索类 → 语义搜索Agent
- 咨询类 → LLM助手Agent
- 处方类 → 处方扫描Agent

**上下文维护**：系统维护对话历史，支持多轮交互。例如，用户可以先搜索某药品，然后询问副作用，再要求加入购物车，系统能正确理解上下文关联。

### 订单管理流程

系统支持完整的电商式订单流程：

1. **加入购物车**：用户可以将搜索到的药品加入购物车
2. **购物车管理**：查看、修改数量、删除商品
3. **下单**：确认订单信息并提交
4. **状态跟踪**：订单状态包括"处理中"、"已确认"、"配送中"、"已完成"
5. **历史查询**：查看过往订单记录

所有订单数据通过SQLAlchemy持久化到数据库，确保数据安全。

### 语音交互支持

考虑到部分用户（尤其是老年人）可能更习惯语音交流，系统集成了Whisper语音转文字功能：

1. 用户点击语音输入按钮
2. 录制语音并上传
3. Whisper模型转录为文字
4. 转录文本进入正常的Agent处理流程
5. 系统以文字形式回复（可扩展为语音合成回复）

这降低了使用门槛，使系统更具包容性。

## 工作流程示例

以下是一个典型的用户交互流程：

```
用户: "我有点感冒，有什么推荐的药吗？"
↓
编排器: 识别为药品搜索意图
↓
语义搜索Agent: 检索感冒相关药品（感冒灵、泰诺、白加黑等）
↓
用户: "泰诺有什么副作用？"
↓
编排器: 识别为健康咨询意图，携带上下文（泰诺）
↓
LLM助手Agent: 生成关于泰诺副作用的回答
↓
用户: "给我来一盒"
↓
编排器: 识别为加购意图，携带上下文（泰诺）
↓
订单模块: 将泰诺加入购物车
↓
用户: [上传处方图片]
↓
编排器: 识别为处方扫描意图
↓
处方扫描Agent: OCR识别处方内容，提取药品
↓
语义搜索Agent: 检索处方药品
↓
用户: "下单"
↓
订单模块: 创建订单，返回订单号
```

整个流程体现了Agentic AI的优势：系统不是被动响应，而是主动理解、规划、执行。

## 可观测性与调试

项目集成了Langfuse进行可观测性追踪，开发者可以：

- 查看每次用户请求的完整执行链路
- 分析各Agent的响应时间和输出质量
- 追踪LLM调用的token消耗和成本
- 识别系统瓶颈和错误模式

这对于调试多Agent系统的复杂交互至关重要。

## 前端界面

系统提供了简洁的Web界面：

- **聊天界面**：主交互界面，支持文字、语音、图片输入
- **订单历史页**：查看过往订单详情
- **购物车页**：管理待购商品

前端使用原生HTML/CSS/JavaScript实现，轻量且易于定制。

## 部署与扩展

### 本地部署

得益于Ollama的本地模型运行能力，整个系统可以完全离线部署，无需依赖外部API。这对于数据隐私要求高的场景（如医院药房）尤为重要。

### 未来扩展方向

项目文档中列出了多个潜在改进方向：

1. **角色认证**：区分普通用户、药剂师、管理员权限
2. **支付网关集成**：支持在线支付
3. **实时库存更新**：与ERP系统对接
4. **多语言支持**：服务多语言用户群体
5. **云端部署**：支持高并发访问

## 技术价值与行业意义

Pharmacy Agentic AI 项目展示了几个重要的技术趋势：

### 垂直领域Agent应用

不同于通用的聊天机器人，该项目专注于药店这一垂直场景，通过多Agent架构实现了专业级的服务能力。这种"通用LLM + 领域Agent"的模式值得其他行业借鉴。

### 本地优先的AI部署

使用Ollama在本地运行LLM，既保障了数据隐私，又降低了API调用成本。随着开源模型能力的提升，这种模式将越来越可行。

### 多模态交互

系统支持文字、语音、图片多种输入方式，体现了AI系统向更自然交互方式演进的趋势。

### 可观测性建设

通过Langfuse等工具实现Agent系统的可观测性，是生产环境部署的必要条件。

## 结语

Pharmacy Agentic AI 是一个完整度很高的开源项目，它不仅实现了具体的功能，更展示了如何构建一个生产就绪的Agentic AI系统。对于希望将LLM技术应用于实际业务场景的开发者来说，这是一个极佳的参考案例。随着AI技术的持续进步，我们期待看到更多类似的垂直领域AI应用涌现，真正改变各行各业的运作方式。
