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绕过, 逆向工具