当前位置: 首页 > news >正文

Easy-agent介绍

介绍

目前,我的工作主要聚焦于 Agent 和 SKILL 相关领域。随着公司多个项目完成 Agent 化升级,我将项目集成 Agent 架构的经验进行总结和封装,最终开发出一个可复用组件——Easy-agent。

Easy-agent 是一款轻量级 Spring Boot AI 开发套件,通过简单的@EasyTool注解即可将业务方法快速转换为 AI 可调用的工具接口。该组件支持 MCP 协议,使 Claude Code、Codex 等能够直接调用你的代码。

主要特性包括:

  • 支持多 LLM 提供商(通义千问/DeepSeek/Ollama/OpenAI)
  • 提供 RAG 知识库检索功能(支持 PDF/Excel 一键导入)
  • 内置对话式 Skill 生成器,无需编写代码即可定义专属 AI 技能

Easy-agent 采用零侵入设计,仅需添加一个依赖和一行注解,就能为 Spring Boot 项目赋予完整的 AI 能力。它是企业内部 AI 助手、知识库问答系统以及 AI 驱动工具集的理想选择。

Easy-agent的核心优势包括

1. 零门槛接入:只需要引入依赖 + 一个注解,无需复杂配置,开发者零学习成本即可让代码拥有 AI 能力。

2. 无侵入设计:对现有业务代码零侵入,只需要在方法上添加 @EasyTool 注解,无需重构现有架构。

3.一站式方案:从工具注册 → LLM 集成 → RAG 知识库 → Skill 生成,完整覆盖 AI 开发全链路

4. MCP 协议原生支持:内置 MCP 协议,Claude Code 等 AI 助手可直接调用你的业务代码,无需额外适配。

5.多 LLM 提供商支持:通义千问/DeepSeek/Ollama/OpenAI 开箱即用,轻松切换,无需关心底层实现。

如何开始使用Easy-agent:

1.引入依赖

在你的 Spring Boot 项目中添加 Easy-Agent Starter:

<dependency> <groupId>io.github.songrongzhen</groupId> <artifactId>easy-agent-spring-boot-starter</artifactId> <version>0.1.6</version> </dependency>

2.基础配置

2.1 最简配置(LLM 对话能力)

easy-agent: llm: enabled: true model: qwen-plus # 自动识别为通义千问 api-key: ${DASHSCOPE_API_KEY}

2.2 完整配置(全功能)

easy-agent: # MCP 配置 mcp: enabled: true # LLM 配置 llm: enabled: true model: qwen-plus api-key: ${DASHSCOPE_API_KEY} # RAG 配置 rag: enabled: true storage-type: IN_MEMORY search: strategy: AUTO cosine: enabled: true tfidf: enabled: true pdf: enabled: true resource-path: classpath:knowledge/ excel: enabled: true resource-path: classpath:knowledge/ # Skill 配置(默认开启) skill: skill-output-path: ./skill

3.定义工具(@EasyTool)

3.1 创建工具类

@Service public class MyTools { @EasyTool(name = "getCurrentTime", description = "获取当前时间") public String getCurrentTime() { return LocalDateTime.now().toString(); } @EasyTool(name = "calculate", description = "计算两个数字的和") public int add( @ToolParam(name = "a", description = "第一个数字") int a, @ToolParam(name = "b", description = "第二个数字") int b) { return a + b; } @EasyTool(name = "queryUser", description = "查询用户信息") public UserInfo queryUser( @ToolParam(name = "userId", description = "用户ID") String userId) { // 调用业务逻辑查询用户 return userService.findById(userId); } }

3.2 工具自动注册

Easy-Agent 会自动扫描所有 @EasyTool 注解的方法并注册到 ToolRegistry ,无需手动配置

4.LLM 对话能力

4.1 基本对话

@RestController public class ChatController { @Autowired private LlmService llmService; @GetMapping("/chat") public ChatResponse chat(@RequestParam String message) { List<ChatMessage> messages = List.of( ChatMessage.system("你是一个AI领域专家"), ChatMessage.user(message) ); return llmService.chat(messages); } }

4.2 流式对话

@GetMapping("/chat/stream") public ResponseEntity<StreamingResponseBody> chatStream(@RequestParam String message) { StreamingResponseBody stream = outputStream -> { Writer writer = new OutputStreamWriter(outputStream); List<ChatMessage> messages = List.of(ChatMessage.user(message)); llmService.chatStream(messages, token -> { if (token != null) { writer.write(token); writer.flush(); } else { writer.write("\n[DONE]"); writer.flush(); } }); }; return ResponseEntity.ok() .contentType(MediaType.parseMediaType("text/event-stream;charset=UTF-8")) .header("Cache-Control", "no-cache") .body(stream); }

5.RAG 知识库

5.1 准备知识库文件

将 PDF 或 Excel 文件放到 src/main/resources/knowledge/ 目录:

src/main/resources/knowledge/
├── product-manual.pdf
├── faq.xlsx
└── user-guide.pdf

5.2 使用 RAG 增强

@RestController public class RagController { @Autowired private RagService ragService; @Autowired private LlmService llmService; @GetMapping("/rag/chat") public ChatResponse ragChat(@RequestParam String question) { // 1. 从知识库检索相关内容 String context = ragService.searchAndConcat(question, 5); // 2. 构建带上下文的对话 List<ChatMessage> messages = List.of( ChatMessage.system("基于以下知识回答问题,如果知识中没有相关信息,请诚实说明:\n" + context), ChatMessage.user(question) ); // 3. 调用 LLM return llmService.chat(messages); } }

6.MCP 协议(Claude Code 连接)

6.1 启动你的服务

6.2 连接 Claude Code

add claude mcp http://{your-project-address}/mcp

6.3 使用 Claude Code 调用工具

启动 Claude Code 后,直接对话即可:

用户:帮我计算 3 + 5 Claude:调用 add(3, 5) → 8 用户:查询用户 ID 为 123 的信息 Claude:调用 queryUser("123") → 返回用户信息

7.Skill 生成

7.1 生成流程

1. 启动服务并连接 Claude Code
2. 在 Claude Code 中说:"我想创建一个 skill"
3. 系统引导你输入:
- Skill 名称
- Skill 描述
- 使用边界
- 可调用的工具
- 使用示例
4. 生成 SKILL.md 文件到 skill/ 目录

创建属于自己的技能


💡 Java 零侵入让系统秒变 AI 应用!

还在为系统智能化改造发愁吗?Easy-Agent 来了!目前在GitHub 获得160+ Stars

不用重构代码,不用更换架构,只需引入一个 Starter,就能让你的 Spring Boot 应用瞬间拥有大模型、工具调用和知识库问答的超能力!

🔗 传送门:https://github.com/songrongzhen/easy-agent

开源不易,走过路过别忘了留下一颗 ⭐️ Star 哦!感谢大家的支持!

http://www.jsqmd.com/news/1128987/

相关文章:

  • 反反爬进阶:AI自动识别反爬策略并动态切换采集方案
  • 教师资格证认定
  • 存储芯片千问千答第3篇:存储芯片中test mode是什么意思?
  • 用optiland绘制光扇图
  • 小学期第二周记录
  • UVa 520 Append
  • 【Linux】十一.进程概念--进程的控制
  • 2025年能量回馈的变流器负载试验装置(A题)的软件部分实现(全国大学生电子设计竞赛)
  • 小学期第四周记录
  • 存储芯片千问千答第4问:存储芯片中常说的E2E是啥?
  • 新e选烤火罩pH值[主里料](C类)GB/T 7573—2009 判定符合
  • 流放之路2构建规划终极指南:用Path of Building PoE2告别盲目配装
  • Python之rnaglib包语法、参数和实际应用案例
  • Evaluating Multimodal Large Language Models on Core Music Perception Tasks
  • 2026毕业生降AIGC平台盘点: 学术打磨+逻辑优化哪家强?
  • AI 全栈开发实战(15):全系列总结——从零到一做一个真正的 AI 产品
  • Explainability of Large Language Models: Opportunities and Challenges toward Generating Trustwort...
  • Web安全从入门到实战:一份430页的系统学习路线与CTF渗透指南
  • UVa 521 Gossiping
  • AI模型版本控制与A/B测试:优化模型性能的有效策略
  • 如何永久保存微信聊天记录?WeChatMsg的完整数据资产化方案
  • tf1exodus_037-1
  • 新e选烤火罩异味[主里料] GB 18401—2010 6.7 判定符合检测标准与测试条件
  • 【Ansible】(十四)流程控制与异常处理
  • 星露谷物语自动化革命:5大必备模组彻底改变你的农场生活 [特殊字符]
  • oyunfor土区礼品卡购买教程及踩坑记录
  • Python之ya-market-api包语法、参数和实际应用案例
  • 亚马逊证实对外销售自研 AI 芯片 Trainium,英伟达的垄断要被打破了吗?
  • 向量数据库选型与实战 —— Milvus、Qdrant、Chroma 深度对比与最佳实践
  • 置信区间构建:5 大常见误区与 R/Stata/SPSS 软件实操验证