让 Java AI 再伟大些!Solon AI & MCP v3.5.1 发布

Solon AI & MCP

是 Solon 官方推出的 Java 智能体应用开发框架。旨在为 Java 开发者提供统一的接口抽象层,简化与 OpenAI、DeepSeek、QWen 等主流 AI 模型的集成流程,简化 RAG 的开发体验,简化 Mcp 的开发体验,简化 AI-Flow 的开发体验,简化 A2A 的开发体验。主要特点有:

  • 同时支持 Java 8 到 Java 24
  • 一套接口支持不同提供者、不同大模型调用(通过方言适配)
  • 支持图片生成模型(ImageModel)
  • 支持聊天生成模型(ChatModel)
  • 支持嵌入模型(EmbeddingModel)
  • 支持排序模型(RankingModel)
  • 支持 RAG 应用开发
  • 支持 MCP 协议应用开发,支持 MCP_2025-03-26 版本协议(支持 mcp streamable)
  • 支持 AI-Flow 应用开发
  • 支持 A2A 协议预览(可简化混合智能体应用的开发)
  • 支持 jFinal、Spring、Vert.x 等 Solon 之外的框架
  • 等......更多内容,参考官网介绍

最近更新了什么?

  • 新增 solon-ai-a2a 插件
  • 新增 solon-ai-core GenerateModel 接口,可替代 ImageModel
  • 新增 solon-ai-core ChatModel 增加多媒体内容输出(增强感知型模型的兼容,比如输出图片或视频)
  • 新增 solon-ai-core ImageModel 增加结构体提示语输入(比如图片编辑模型)
  • 添加 solon-ai-core AbstractChatDialect 对多媒体内容输出的支持
  • 添加 solon-ai-core AssistantMessage:contentRaw 原生内容(可能是 String、Map、List、null)
  • 添加 solon-ai-dialect-dashscope 通过接口地址识别方言
  • 添加 solon-ai-mcp McpServerEndpointProvider:Builder 添加 context-path 配置
  • 优化 solon-ai-mcp McpClientProvider 配置向 McpServers json 格式上靠
  • 修复 solon-ai-core think-> tool -> think 时,工具调用的内容无法加入到对话的问题
  • 修复 solon-ai-mcp 服务端传输层的会话长连会超时的问题
  • 修复 solon-ai-mcp 客户端提供者心跳失效的问题
  • 修复 solon-ai-mcp SSE 传输时 message 端点未附加 context-path 的问题
  • mcp McpSchema:*Capabilities 添加 @JsonIgnoreProperties(ignoreUnknown = true) 增强跨协议版本兼容性

技术预览

  • 构建聊天模型(统一方式,支持不同的模型构建)
java 复制代码
ChatModel chatModel = ChatModel.of(apiUrl).provider(provider).model(model);

//同步请求
chatModel.prompt("hello").call();

//流式请求
chatModel.prompt("hello").stream();
  • 使用 MCP
java 复制代码
//MCP 服务端
@McpServerEndpoint(channel = McpChannel.STREAMABLE, mcpEndpoint = "/mcp")
public class McpServerTool {
    //工具
    @ToolMapping(description = "查询天气预报")
    public String getWeather(@Param(description = "城市位置") String location) {
        return "晴,14度";
    }
    
    //资源
    @ResourceMapping(uri = "config://app-version", description = "获取应用版本号", mimeType = "text/config")
    public String getAppVersion() {
        return "v3.2.0";
    }
    
    //提示语
    @PromptMapping(description = "生成关于某个主题的提问")
    public Collection<ChatMessage> askQuestion(@Param(description = "主题") String topic) {
        return Arrays.asList(
                ChatMessage.ofUser("请解释一下'" + topic + "'的概念?")
        );
    }
}


//MCP 客户端
McpClientProvider clientProvider = McpClientProvider.builder()
                .channel(McpChannel.STREAMABLE)
                .apiUrl("http://localhost:8080/mcp")
                .build();

//客户端与聊天模型集成

//::构建时集成(全局)
ChatModel chatModel = ChatModel.of(apiUrl).provider(provider) .model(model)
                .defaultToolsAdd(clientProvider); 
                
//::聊天时集成(单次)
chatModel.prompt("hello").options(o -> o.toolsAdd(clientProvider)).call();

项目仓库地址?

官网?

相关推荐
d***95629 分钟前
springboot接入deepseek深度求索 java
java·spring boot·后端
CoderYanger28 分钟前
C.滑动窗口-越短越合法/求最长/最大——2958. 最多 K 个重复元素的最长子数组
java·数据结构·算法·leetcode·哈希算法·1024程序员节
洞窝技术37 分钟前
Redis 4.0 升级至 5.0 实施手册
java·redis
无代码专家1 小时前
设备巡检数字化解决方案:构建高效闭环管理体系
java·大数据·人工智能
tanxiaomi1 小时前
Redisson分布式锁 和 乐观锁的使用场景
java·分布式·mysql·面试
零匠学堂20251 小时前
移动学习系统,如何提升企业培训效果?
java·开发语言·spring boot·学习·音视频
小杨快跑~1 小时前
从装饰者到桥接再到工厂:模式组合的艺术
java·开发语言·设计模式
饕餮争锋1 小时前
Spring内置的Bean作用域介绍
java·后端·spring
却话巴山夜雨时i1 小时前
394. 字符串解码【中等】
java·数据结构·算法·leetcode
张人大 Renda Zhang2 小时前
Java 虚拟线程 Virtual Thread:让“每请求一线程”在高并发时代复活
java·jvm·后端·spring·架构·web·虚拟线程