Solon AI 正试发布了(版号,随 Solon v3.3.1)。历时小半年。

1、简介

Solon AI 是一个 Java AI(智能体) 全场景应用开发框架,提供有丰富的接口能力。主要支持的的智能体开发场景有:Chat;RAG;MCP;AiFlow。

其中 ChatModel 是 Solon AI 的核心模型接口(其它暂略),通过方言的方式(ChatDialect)可适配各种环境(或平台)提供的大语言模型。

2、历时回顾

时间 回顾 备注
2025-01 中 Solon Flow 项目启动 将为 Solon AI 编排提供支持
2025-01 底 Solon AI 项目启动
2025-02 中 设计 Solon AI 开放接口,和适配机制
2025-03 中 Solon Expression 项目启动 为 Solon AI RAG 知识库,提供统一的过滤表达式支持
2025-04 初 Solon AI MCP 项目启动
2025-05 初 Solon Flow Designer 项目启动 (由 广东越洋科技有限公司 供献代码)
2025-05 中 Solon AI Flow 项目启动 使用 Solon Flow 编排 Solon AI 定制的任务组件

3、体验展示

  • ChatModel
public void call(ChatModel chatModel) throws IOException {
chatModel.prompt("hello").call();
} public void stream(ChatModel chatModel) throws IOException {
chatModel.prompt("hello").stream();
} public void toolCall(ChatModel chatModel) throws IOException {
chatModel.prompt("今天杭州的天气情况?")
.options(o -> o.toolsAdd(new WeatherTools())
.call();
} public void session(ChatModel chatModel) throws IOException {
ChatSession chatSession = new ChatSessionDefault("session-1"); chatSession.addMessage(ChatMessage.ofUser("今天杭州的天气情况?")); chatModel.prompt(chatSession)
.options(o -> o.toolsAdd(new WeatherTools())
.stream();
}
  • RAG
public void init(ChatModel chatModel, RepositoryStorable repository) throws IOException {
PdfLoader loader = new PdfLoader(new File("lzsite.pdf")).additionalMetadata("file", "lzsite.pdf"); List<Document> documents = new SplitterPipeline()
.next(new RegexTextSplitter("\n\n"))
.next(new TokenSizeTextSplitter(500))
.split(loader.load()); repository.insert(documents);
} public void search(ChatModel chatModel, RepositoryStorable repository) throws IOException {
String query = "良渚遗址公司有哪些景点?" //知识库检索
List<Document> context = repository.search(message); //消息增强
ChatMessage message = ChatMessage.augment(query, context) chatModel.prompt(message).call();
}
  • MCP-server
@McpServerEndpoint(sseEndpoint = "/mcp/sse")
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";
} @ResourceMapping(uri = "db://users/{user_id}/email", description = "根据用户ID查询邮箱")
public String getEmail(@Param(description = "用户Id") String user_id) {
return user_id + "@example.com";
} @PromptMapping(description = "生成关于某个主题的提问")
public Collection<ChatMessage> askQuestion(@Param(description = "主题") String topic) {
return Arrays.asList(ChatMessage.ofUser("请解释一下'" + topic + "'的概念?"));
}
}
  • MCP-client
public void client(ChatModel chatModel){
McpClientProvider clientProvider = McpClientProvider.builder()
.apiUrl("http://localhost:8080/mcp/sse")
.build(); String rst = clientProvider.callToolAsText("getWeather", Map.of("location", "杭州"))
.getContent(); chatModel.prompt("杭州今天的天气怎么样?")
.options(options -> { options.toolsAdd(clientProvider))
.call();
}
  • AiFlow
id: helloworld
layout:
- task: "@VarInput"
meta:
message: "你好"
- task: "@ChatModel"
meta:
chatConfig: # "@type": "org.noear.solon.ai.chat.ChatConfig"
provider: "ollama"
model: "qwen2.5:1.5b"
apiUrl: "http://127.0.0.1:11434/api/chat"
- task: "@ConsoleOutput" # flowEngine.eval("helloworld");

4、最近更新日志

  • 新增 solon-ai-flow 插件
  • 新增 solon-ai-load-ddl 插件
  • 添加 solon-ai-core ChatMessage:ofUser(media) 方法
  • 添加 solon-ai-core ChatSession:addMessage(ChatPrompt) 方法
  • 添加 solon-ai-core ChatSession:addMessage(Collection) 方法
  • 添加 solon-ai-core RerankingConfig,RerankingModel toString 方法
  • 添加 solon-ai-core 模型的网络代理支持(支持简单配置,和复杂构建)
  • 添加 solon-ai-mcp 客户端的网络代理简单配置支持
  • 添加 solon-ai-mcp messageEndpoint 端点配置支持(应对特殊需求,一般自动更好)
  • 添加 solon-ai-mcp ToolMapping,ResourceMapping 注解方法对 Produces 注解的支持(用它可指定结果转换处理)
  • 添加 solon-ai-mcp ToolCallResultConverter:matched 方法
  • 添加 solon-ai-mcp 资源模板的响应适配
  • 添加 solon-ai-mcp McpClientProvider:getResourceTemplates 方法
  • 添加 solon-ai-mcp 检查原语是否存在的方法(hasTool, hasPrompt, hasResource)
  • 添加 solon-ai-mcp 提示语支持 UserMessage 拆解成多条 mcp 内容(如果,同时有媒体和文本的话)
  • 优化 solon-ai-core tool 空参数时的不同大模型兼容性
  • 优化 solon-ai-core ChatSession 的作用,为限数提供支持
  • 优化 solon-ai-core MethodFunctionTool 移除对 Mapping 注解的支持(语意更清楚,之前 MethodToolProvider 已经移除,这个落了)
  • 优化 solon-ai-core EmbeddingRequest,ImageRequest,RerankingRequest 当 resp.getError() 非 null 时,直接出抛异常
  • 优化 solon-ai-mcp 取消 MethodFunctionResource 对反回类型的限制(增加了 resultConverter 转换处理)
  • 优化 solon-ai-mcp McpServerEndpointProvider 支持零添加原语,postStart 后,可添加原语
  • 修复 solon-ai ChatRequestDefault:stream 请求 r1 时,可能会产生两次 tink 消息发射

Solon AI 正试发布(支持 java8+,RAG,MCP)的更多相关文章

  1. Solon v1.11.0 发布,Hello Java

    一个更现代感的 Java 应用开发框架:更快.更小.更自由.没有 Spring,没有 Servlet,没有 JavaEE:独立的轻量生态.主框架仅 0.1 MB. @Controller public ...

  2. java8新特性系列:[1]让你的eclipse支持java8

    package com.anhui.jdk8; /** * 针对eclipse是否支持java8小测试 * MainClass * @author zhongzh * */ public class ...

  3. Java RPC 框架 Solon 1.3.7 发布,增强Cloud接口能力范围

    Solon 是一个微型的Java RPC开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC. ...

  4. Spring Boot 轻量替代框架 Solon 1.3.15 发布

    Solon 是一个微型的Java开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC.REST ...

  5. Spring Boot 轻量替代框架 Solon 1.3.18 发布

    Solon 是一个微型的Java开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC.REST ...

  6. Spring Boot & Cloud 轻量替代框架 Solon 1.3.37 发布

    Solon 是一个微型的Java开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Micro service.WebSocket. ...

  7. Solon 1.8.3 发布,云原生微服务开发框架

    相对于 Spring Boot 和 Spring Cloud 的项目 启动快 5 - 10 倍 qps 高 2- 3 倍 运行时内存节省 1/3 ~ 1/2 打包可以缩小到 1/2 ~ 1/10(比如 ...

  8. Solon v2.1.4 发布。支持 java、kotlin、groovy!

    本次发布,重点测试和验证了在 java.kotlin.groovy 三种 jvm 语言里,开箱即用的特性.并发布 Solon Initializr: https://solon.noear.org/s ...

  9. Java RPC 框架 Solon 1.3.9 发布,更便利的支持

    Solon 是一个微型的Java RPC开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC. ...

  10. Solon 1.5.67 发布,增加 GraalVm Native 支持

    Solon 已有120个生态扩展插件,此次更新主要为细节打磨: 添加 solon.extend.graalvm 插件,用于适配 graalvm native image 模式 从此,solon 进入 ...

随机推荐

  1. 玩转摄像头之MT9V034(最新打样,展示下,欢迎观摩,哈哈)低照度 红外透视应用

    分辨率:752*480  低照度 效果超好先上图 图像处理.物联网.fpga.stm32研究 我的店铺:ccjt.taobao.com 

  2. 【ABAQUS&Composite】composite layerup Manager从txt导入铺层信息

    ABAQUS 在复合材料建模方面自由度是比较高的.官方提供了两个工具: ABAQUS/CAE中的Composite Layup Manager ABAQUS/CAE的plugin:Composites ...

  3. 错误修正记录:synopsys license服务器激活报错-No valid hostids,exiting

    长久没用vcs,此次新装design compiler,再次用到lmgrd,报错 (snpslmd)No valid hostids,exiting (snpslmd)EXITING DUE TO S ...

  4. 依赖注入(DI)与控制反转(IoC)

    .wj_nav { display: inline-block; width: 100%; margin-bottom: 0.375rem } .wj_nav span { display: inli ...

  5. vue watch监听路由变化

    vue watch监听路由变化 // 监听 this.$route.path // watch监听非DOM元素的改变 watch:{ '$route.path':function(to,from){ ...

  6. OpnenHarmony 开源鸿蒙北向开发——2.第一个工程HelloWorld

    ​ 一.新建项目 我们打开IDE后,选择新建项目 选择这一个 设置参数 设置完成后选择Finish 项目创建后会自动下载一些东西,不用担心 二.运行 我们先什么都不用管,直接运行 先设置设备,我们这里 ...

  7. C++基础学习--随记

    博客地址:https://www.cnblogs.com/zylyehuo/ 参考"C++基础与深度解析" 一.预备知识 // c++常用工具 /usr/bin/time //查看 ...

  8. 区块链特辑——solidity语言基础(二)

    Solidity语法基础学习 四.函数类型: 函数 Function function FnName [V] [SM] [return (--)] {} ·[V]:Visibility,可见性: ·[ ...

  9. JDK8-日历类--java进阶day07

    JDK7和JDK8之间的时间API比较 1.日历类 1.LocalDateTime LocalDateTime最为齐全,只要掌握这个类,另外两个都是一样的 now方法获取到此刻时间,of方法设置想要的 ...

  10. 我要成为node_modules大师!(一):包管理器选择,依赖关系分析

    好家伙 1.npm曾经的一些问题 1. 依赖地狱(Dependency Hell) 嵌套依赖结构:早期版本的 npm 采用嵌套的 node_modules 结构,依赖层级极深,容易导致路径过长问题(尤 ...