Navyachhoker/smart-task-assistant
GitHub: Navyachhoker/smart-task-assistant
基于 LangGraph 和 FastAPI 构建的 AI 工作流应用,通过多节点图编排实现任务分类、个性化计划生成与审查重试的迭代推理流程。
Stars: 2 | Forks: 0
# 智能任务助手
## 概述
智能任务助手是一个由 AI 驱动的工作流应用程序,使用 LangGraph、LangChain、ChatGroq、FastAPI 和 Pydantic 构建。该项目展示了如何将 Large Language Models 集成到结构化工作流中,而不是依赖于单一的 prompt-response 交互。
该应用程序分析用户的请求,将其分类到预定义的类别中,生成个性化计划,审查生成的输出,并返回最终响应。如果生成的计划不满足审查标准,工作流将自动重试,直到产生可接受的结果或达到最大重试次数限制。
该项目遵循模块化架构,其中每个组件都有单一职责,使其易于维护、可扩展且易于扩展。
# 目标
该项目的主要目标是:
- 学习使用 LangGraph 进行工作流编排。
- 理解跨多个节点的状态管理。
- 在 AI 工作流中实现条件路由。
- 集成 ChatGroq 作为语言模型。
- 使用 Pydantic 结构化输出以获得可靠的 LLM 响应。
- 使用 LangChain 构建可重用的 prompt 模板。
- 通过 FastAPI REST API 公开工作流。
- 遵循行业实践设计干净且可维护的项目架构。
# 使用的技术
- Python
- LangGraph
- LangChain
- ChatGroq
- FastAPI
- Pydantic
- python-dotenv
- Uvicorn
# 项目架构
```
User
│
▼
FastAPI Endpoint
│
▼
LangGraph Workflow
│
▼
Greeting Node
│
▼
Analyzer Node
│
┌────────────┼────────────┐
│ │ │
▼ ▼ ▼
Study Fitness General
│ │ │
└────────────┼────────────┘
▼
Reviewer Node
│
┌────────────┴────────────┐
│ │
Approved Needs Revision
│ │
▼ │
END ◄──────────────────────┘
Retry Planner
```
该工作流使用 LangGraph 的 StateGraph 进行管理,其中每个节点执行特定任务并更新共享的应用程序状态。
# 文件夹结构
```
smart-task-assistant/
│
├── api/
│ └── routes.py
│
├── graph/
│ ├── builder.py
│ ├── router.py
│ ├── review_router.py
│ └── state.py
│
├── nodes/
│ ├── greeting.py
│ ├── analyzer.py
│ ├── study.py
│ ├── fitness.py
│ ├── general.py
│ └── reviewer.py
│
├── prompts/
│ ├── analyzer.py
│ ├── planner.py
│ └── reviewer.py
│
├── schemas/
│ ├── request.py
│ └── output.py
│
├── services/
│ ├── llm.py
│ └── planner_service.py
│
├── app.py
├── config.py
├── requirements.txt
├── .env.example
└── README.md
```
# 项目工作原理
该项目遵循基于工作流的执行模型,而不是传统的聊天机器人架构。
## 步骤 1:用户请求
用户通过 FastAPI endpoint 提交请求。
示例:
```
Help me prepare for my Java interview.
```
## 步骤 2:问候节点
工作流从问候节点开始,该节点初始化交互并准备工作流状态。
## 步骤 3:分析节点
分析器检查用户的请求,并将其分类到支持的类别之一。
当前支持的类别:
- 学习
- 健身
- 综合
分类结果存储在共享的图状态中。
## 步骤 4:规划节点
根据检测到的类别,LangGraph 将工作流路由到相应的规划节点。
学习节点
生成学习时间表和学习计划。
健身节点
生成锻炼计划和健康计划。
综合节点
生成一般生产力和杂项任务的计划。
每个规划器使用 ChatGroq 和 LangChain Prompt Templates 来生成结构化响应。
## 步骤 5:审查节点
生成的计划由审查节点进行评估。
审查器决定是否:
- 生成的响应是可接受的。
- 需要进一步改进。
审查结果也存储在图状态中。
## 步骤 6:重试逻辑
如果审查未获批准,工作流将自动路由回规划节点。
此重试循环将持续进行,直到:
- 计划获得批准,或
- 达到最大重试次数。
## 步骤 7:最终响应
最终审查过的计划通过 FastAPI endpoint 返回。
# 实现的 LangGraph 概念
该项目演示了以下 LangGraph 概念:
- StateGraph
- 共享状态
- 节点
- 有向边
- 条件边
- 图编译
- 图调用
- 状态更新
- 工作流路由
- 重试循环
- 模块化工作流设计
# 实现的 LangChain 概念
该项目还演示了几个 LangChain 概念:
- Chat Models
- ChatPromptTemplate
- Prompt 变量
- LCEL 链
- 结构化输出
- Pydantic 集成
- 服务层设计
# API 接口
## 健康检查
```
GET /health
```
返回应用程序状态。
## 任务分类
```
POST /classify
```
请求
```
{
"query":"Help me prepare for Java."
}
```
响应
```
{
"category":"study"
}
```
## 生成计划
```
POST /plan
```
请求
```
{
"query":"Create a Java study plan."
}
```
响应
```
{
"title":"Java Study Plan",
"steps":[
"...",
"...",
"..."
],
"tips":[
"...",
"..."
],
"approved":true,
"feedback":"Looks good."
}
```
# 设计原则
该项目遵循多项软件工程原则。
单一职责原则
每个模块仅执行一项特定任务。
示例:
- 节点包含工作流逻辑。
- 服务包含 LLM 交互。
- Prompts 包含 prompt 模板。
- Schemas 定义结构化输出。
关注点分离
业务逻辑、prompts、图编排、API 路由和配置独立维护。
可重用组件
Prompt 模板和 LLM 服务跨多个节点重用。
结构化数据
Pydantic 模型确保 LLM 和应用程序之间的一致通信。
配置管理
敏感值(如 API 密钥)通过环境变量进行管理。
# 功能
- 基于工作流的 AI 应用程序
- 模块化架构
- FastAPI REST API
- LangGraph 编排
- 条件路由
- 重试机制
- Prompt 抽象
- 共享工作流状态
- 结构化 LLM 输出
- Pydantic 验证
- ChatGroq 集成
- 可配置的环境变量
# 学习成果
该项目有助于理解工作流驱动的 AI 系统的实际实现。
探索了以下概念:
- 设计模块化 AI 应用程序。
- 使用 LangGraph 构建工作流。
- 跨多个节点管理应用程序状态。
- 创建可重用的 prompt 模板。
- 使用 Pydantic 的结构化输出。
- 将 ChatGroq 与 LangChain 集成。
- 实现条件路由。
- 设计基于重试的 AI 工作流。
- 通过 FastAPI 公开 AI 工作流。
- 组织生产级 Python 项目。
# 未来改进
可能的改进包括:
- 跨对话的持久化记忆。
- 人类在环工作流。
- 多代理协作。
- 数据库集成。
- 身份验证和用户管理。
- 对话历史。
- 流式响应。
- 使用 Docker 和云平台进行部署。
- 支持额外的计划类别。
# 结论
智能任务助手演示了如何使用工作流编排而不是简单的 prompt-response 交互来构建现代 AI 应用程序。
该项目结合了用于工作流管理的 LangGraph、用于 prompt 工程的 LangChain、用于语言模型推理的 ChatGroq、用于结构化输出的 Pydantic 以及用于 API 开发的 FastAPI。
模块化架构允许轻松扩展应用程序,同时在流程编排、业务逻辑、prompt 工程和 API 通信之间保持清晰的分离。
标签:AI工作流, AV绕过, FastAPI, LangGraph, 人工智能, 任务规划, 用户模式Hook绕过, 逆向工具