# smartagent **Repository Path**: arieszhao/smartagent ## Basic Information - **Project Name**: smartagent - **Description**: SmartAgent - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-21 - **Last Updated**: 2025-10-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: llm, Agent, Java ## README # SmartAgent - 智能代理系统 ## 📖 项目概述 SmartAgent是一个基于Spring Boot和Spring AI构建的智能代理系统,集成了大语言模型工具,支持智能对话和任务处理。系统分为两大核心功能模块: ### 智能对话模块 支持与多种大语言模型进行交互,提供RESTful API接口,可用于简单聊天、流式对话、自定义参数对话等功能。同时提供与OpenAI API完全兼容的接口,方便集成现有系统。 ### 智能代理模块 具备规划、执行和总结工具,能够接收用户的自然语言任务描述,自动分解为可执行的子任务,调用相应的工具组件执行任务,并最终生成任务总结报告。支持任务挂起与恢复、并行执行等高级特性。 ## 🚀 快速开始 ### 环境要求 - Java 17+ - Maven 3.6+ - Spring Boot 3.2.5 - Spring AI 1.0.0 - MongoDB 4.0+ (用于智能代理模块的数据存储) ### 安装和运行 1. **克隆项目** ```bash git clone <项目地址> cd smartagent ``` 2. **配置MongoDB** - 安装MongoDB并启动服务 - 默认连接配置为:mongodb://root:19840413@localhost:27017/smartagent?authSource=admin - 可在application.yml中修改连接配置 3. **配置API密钥** 编辑 `src/main/resources/application.yml` 文件,配置您的 OpenAI 兼容 API 密钥和端点: ```yaml spring: ai: openai: api-key: your-api-key-here base-url: https://your-openai-compatible-endpoint.com chat: options: model: your-model-name ``` 4. **编译和运行** ```bash mvn clean package mvn spring-boot:run ``` 4. **访问服务** 服务将在 http://localhost:8080 启动 ## 📡 API 接口 ### 1. 智能对话模块接口 #### 健康检查 ```http GET http://127.0.0.1:8080/smart-agent/chat/health ``` **响应**: 返回服务运行状态 #### 简单聊天 ```http GET http://127.0.0.1:8080/smart-agent/chat/simple ``` **功能**: 使用默认提示词进行聊天 #### 自定义消息聊天 ```http GET http://127.0.0.1:8080/smart-agent/chat/custom?message=你好,介绍一下Spring AI ``` **参数**: - `message`: 用户输入的消息内容 #### 流式聊天 ```http GET http://127.0.0.1:8080/smart-agent/chat/stream ``` **功能**: 支持流式输出的聊天接口 #### 自定义参数聊天 ```http GET http://127.0.0.1:8080/smart-agent/chat/custom-options?message=用中文解释一下机器学习 ``` **参数**: - `message`: 用户输入的消息内容 **特性**: 支持自定义模型参数(temperature, topP, maxTokens等) #### OpenAI 标准接口 ##### 聊天完成接口 ```http POST http://127.0.0.1:8080/v1/chat/completions Content-Type: application/json Authorization: Bearer your-api-key { "model": "gpt-3.5-turbo", "messages": [ {"role": "user", "content": "你好,介绍一下Spring AI"} ], "temperature": 0.7, "max_tokens": 1000, "stream": false } ``` **功能**: 提供与OpenAI API完全兼容的聊天完成功能 ### 2. 智能代理模块接口 #### 创建任务 ```http POST http://127.0.0.1:8080/api/agent/tasks Content-Type: application/json { "description": "分析2023年销售额数据并生成报告" } ``` **功能**: 创建新的智能代理任务 **参数**: - `description`: 任务描述 #### 获取任务详情 ```http GET http://127.0.0.1:8080/api/agent/tasks/{taskId} ``` **功能**: 获取指定任务的详细信息 #### 获取任务结果 ```http GET http://127.0.0.1:8080/api/agent/tasks/{taskId}/result ``` **功能**: 获取指定任务的执行结果 #### 提供用户信息 ```http POST http://127.0.0.1:8080/api/agent/tasks/{taskId}/userinfo Content-Type: application/json { "startDate": "2023-01-01", "endDate": "2023-12-31" } ``` **功能**: 向指定任务提供所需的用户信息 **参数**: - `userinfo`: 任务所需的用户信息 **特性**: - 支持标准OpenAI请求格式 - 支持流式输出 (`stream: true`) - 支持所有标准参数 (temperature, top_p, max_tokens等) - 兼容OpenAI官方客户端和SDK #### 模型列表接口 ```http GET http://127.0.0.1:8080/v1/models ``` **响应**: 返回支持的模型列表 ```json { "object": "list", "data": [ { "id": "gpt-3.5-turbo", "object": "model", "created": 1687882411, "owned_by": "openai" } ] } ``` **兼容性**: 这些接口完全兼容OpenAI API v1规范,可以直接使用OpenAI官方客户端、SDK或任何兼容OpenAI的工具进行调用。 ### 智能体代理接口 #### 创建任务 ```http POST http://127.0.0.1:8080/api/agent/tasks Content-Type: application/json { "description": "请帮我分析Spring AI框架的优势" } ``` #### 获取任务状态 ```http GET http://127.0.0.1:8080/api/agent/tasks/{taskId} ``` #### 获取任务结果 ```http GET http://127.0.0.1:8080/api/agent/tasks/{taskId}/result ``` ## ⚙️ 配置说明 ### 支持的模型提供商 - 任何兼容 OpenAI API 的模型服务 - 七牛云 OpenAI 兼容服务 - 字节跳动火山引擎方舟大模型 - 其他 OpenAI 格式兼容的大模型 ### 存储配置(可选) 系统支持两种存储方式,可根据需要选择: #### 1. 内存存储(默认) 无需额外配置,任务数据存储在内存中,应用重启后数据丢失。 ```yaml agent: storage-type: memory ``` #### 2. MongoDB持久化存储(可选) 如需启用MongoDB持久化,请配置MongoDB连接信息: ```yaml spring: data: mongodb: uri: mongodb://localhost:27017/smartagent database: smartagent agent: storage-type: mongodb ``` ### 配置文件示例 ```yaml spring: ai: openai: api-key: sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx base-url: https://openai.qiniu.com chat: options: model: qwen3-30b-a3b ``` ## 🛠️ 技术栈 - **Spring Boot 3.2.5**: 企业级Java应用框架 - **Spring AI 1.0.0**: 人工智能应用框架 - **OpenAI API**: 大语言模型接口 - **Maven**: 项目构建和依赖管理 - **Java 17**: 编程语言 ## 📁 项目结构 ``` src/main/java/com/alibaba/cloud/ai/example/chat/simple/ ├── SimpleChatApplication.java # 主应用类 ├── agent/ # 智能体代理系统 │ ├── README.md # 智能体系统文档 │ ├── capability/ # 工具接口和实现 │ │ ├── Capability.java │ │ ├── CapabilityRegistry.java │ │ └── SimpleCapability.java │ ├── config/ # 配置类 │ │ └── CapabilityConfig.java │ ├── controller/ # 智能体控制器 │ │ └── AgentController.java │ ├── executor/ # 任务执行引擎 │ │ └── ExecutionEngine.java │ ├── model/ # 数据模型 │ │ ├── CapabilityContext.java │ │ ├── CapabilityResult.java │ │ ├── ParameterDefinition.java │ │ ├── PlanNode.java │ │ ├── PlanNodeStatus.java │ │ ├── Task.java │ │ ├── TaskStatus.java │ ├── planner/ # 任务规划器 │ │ └── Planner.java │ ├── repository/ # 数据存储 │ │ ├── MongoTaskRepository.java │ │ └── TaskRepository.java │ ├── service/ # 核心服务 │ │ └── AgentService.java │ └── summarizer/ # 任务总结器 │ └── Summarizer.java └── controller/ ├── SimpleChatController.java # REST控制器 └── OpenAiApiController.java # OpenAI标准接口控制器 └── dto/ ├── OpenAiChatRequest.java # OpenAI聊天请求DTO ├── OpenAiChatResponse.java # OpenAI聊天响应DTO └── OpenAiModelResponse.java # OpenAI模型响应DTO src/main/resources/ └── application.yml # 应用配置文件 ``` ## 🔧 开发指南 ### 添加新的API接口 1. 在 `SimpleChatController` 中添加新的 `@GetMapping` 方法 2. 使用 `ChatModel` 进行模型调用 3. 配置相应的请求参数和返回类型 ### 自定义模型参数 通过 `OpenAiChatOptions` 可以自定义模型参数: - `temperature`: 生成文本的随机性 - `topP`: 核采样概率 - `maxTokens`: 最大生成token数 - `model`: 指定使用的模型 ## 🤝 贡献指南 1. Fork 本项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启 Pull Request ## 📄 许可证 本项目基于 Apache 2.0 许可证开源。详情请参阅 [LICENSE](LICENSE) 文件。 ## 🙏 致谢 - Spring AI 团队提供的优秀AI框架 - OpenAI 提供的强大语言模型API - 七牛云提供的模型服务支持