# smart-agent **Repository Path**: cod-energy/smart-agent ## Basic Information - **Project Name**: smart-agent - **Description**: 用fastgpt拖拽工作流实现业务数据库问答和界面导航及api调用,太死板了,学习学习大家的智能体开发,用高代码搞一个试试效果怎么样 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-08-27 - **Last Updated**: 2025-08-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 智能体编排器 (Agent Orchestrator) 一个可扩展的智能体后端服务框架,支持动态任务规划与多智能体协同。 ## 核心功能 1. 用户输入自然语言问题。 2. 系统启动时,自动收集所有注册智能体的"能力描述",通过大模型构建智能体能力知识图谱。 3. 接收用户问题后,采用 Think-Act 模式: - **Think 阶段**:结合知识图谱和用户问题,由大模型生成结构化执行计划。 - **Act 阶段**:按计划依次执行智能体任务,传递上下文,最终返回结果。 ## 项目结构 ``` smart-agent/ ├── agent/ # 智能体相关代码 │ ├── atomic/ # 原子智能体实现 │ │ ├── api_caller.py # API调用智能体 │ │ ├── database_qa.py # 数据库问答智能体 │ │ └── navigator.py # 页面导航智能体 │ ├── base.py # 智能体基类 │ ├── composite.py # 复合智能体(编排器) │ └── context.py # 上下文管理 ├── api/ # API服务相关代码 │ ├── __init__.py # API模块初始化文件 │ ├── app.py # API应用入口 │ ├── main.py # API主程序 │ └── routes.py # API路由定义 ├── config/ # 配置文件 │ └── llm.yaml # 大模型配置 ├── examples/ # 示例代码 │ ├── demo.py # 使用示例 │ └── test_sql_parser.py # SQL解析测试 ├── model/ # 大模型接口 │ └── llm.py # 大模型接口类 ├── prompt/ # 提示词相关代码 │ ├── api_caller.py # API调用提示词 │ ├── database_qa.py # 数据库问答提示词 │ └── navigator.py # 页面导航提示词 ├── services/ # 外部服务接口 │ ├── database/ # 数据库服务 │ │ └── service.py # 数据库服务接口 │ └── mcp/ # MCP协议客户端 │ └── client.py # MCP客户端实现 ├── support/ # 支持模块 │ ├── __init__.py # 支持模块初始化文件 │ ├── context.py # 全局上下文管理 │ ├── factories.py # 智能体工厂 │ └── manager.py # 智能体管理器 ├── util/ # 工具类 │ └── utility.py # 通用工具函数 ├── main.py # 主入口文件 └── requirements.txt # 依赖包 ``` ## 智能体类型 ### 1. 页面导航智能体 (NavigatorAgent) 根据自然语言指令导航到指定UI界面或弹窗。 ### 2. 数据库问答智能体 (DatabaseQAAgent) 连接数据库,将自然语言转为SQL并返回结果。 ### 3. API调用智能体 (APICallerAgent) 作为MCP Client调用外部MCP Server提供的API。 ## 设计特点 ### 统一的智能体基类 所有智能体都继承自 [BaseAgent](file://D:\workfuben\projectdir\smart-agent\agent\base.py#L10-L95) 基类,该基类提供: - 统一的构造函数,支持传入业务提示词 - [get_capability()](file://D:\workfuben\projectdir\smart-agent\agent\base.py#L53-L59) 方法获取能力描述 - [process()](file://D:\workfuben\projectdir\smart-agent\agent\base.py#L42-L48) 方法执行思考和行动阶段 - [get_full_prompt()](file://D:\workfuben\projectdir\smart-agent\agent\base.py#L30-L40) 方法组合基础提示词和业务提示词 ### 业务提示词机制 每个智能体都支持传入业务提示词,与基础提示词组合使用。业务提示词可以通过字符串形式提供。 ```python # 创建智能体时传入业务提示词字符串 agent = NavigatorAgent( name="PageNavigator", business_prompt="产品名称:能源监控系统\n页面映射:\n - \"设备总览\" -> \"/dashboard\"" ) ``` ### 上下文管理 通过 [AgentContext](file://D:\workfuben\projectdir\smart-agent\agent\context.py#L6-L316) 实现上下文管理: - 支持多个对话上下文隔离 - 可以在不同对话之间切换 - 记录对话历史和执行结果 ### 可扩展架构 - 所有智能体通过统一接口注册到 [CompositeAgent](file://D:\workfuben\projectdir\smart-agent\agent\composite.py#L12-L190) - 通过继承 [BaseAgent](file://D:\workfuben\projectdir\smart-agent\agent\base.py#L10-L95) 可以轻松创建新的智能体类型 - 业务提示词机制使得同一类型智能体可以适用于不同业务场景 ## 安装依赖 ```bash # 安装基础依赖 pip install -r requirements.txt # 或者分别安装各组件依赖 # Web框架 pip install fastapi>=0.68.0 uvicorn>=0.15.0 # 数据库相关 pip install PyMySQL>=1.0.2 # AI相关 pip install openai>=1.0.0 # YAML配置文件处理 pip install PyYAML>=6.0 # 工具库 pip install colorama>=0.4.6 termcolor>=2.3.0 # MCP相关 pip install langchain-mcp-adapters>=0.1.0 langchain-core>=0.1.0 ``` ## 运行方式 ### 命令行模式 ```bash # 运行主程序并提问 python main.py --question "请关闭设备'空调A01'" # 运行示例程序 python examples/demo.py ``` ### API服务模式 ```bash # 启动API服务(默认端口8000) python main.py --api # 启动API服务并指定端口 python main.py --api --port 8080 # 或者直接运行API应用 python -m api.app ``` API服务提供以下接口: - `GET /` - API根路径 - `GET /agent/ask` - 向智能体提问(非流式) - `GET /agent/ask/stream` - 向智能体提问(流式) - `GET /agent/pool/list` - 列出所有可用的智能体组合 API文档地址: - Swagger UI: http://localhost:8000/docs - ReDoc: http://localhost:8000/redoc