Java AI 智能体 全场景应用开发框架支持已知 AI 开发的各种能力
Java AI(智能体) 全场景应用开发框架(LLM,Function Call,RAG,Embedding,Reranking,Flow,MCP Server,Mcp Client,Mcp Proxy)。同时兼容 java8 ~ java24。
面向全场景的 Java AI 应用开发框架(支持已知 AI 开发的各种能力)。是 Solon 项目的一部分。也可嵌入到 SpringBoot2、jFinal、Vert.x 等框架中使用。 其中 solon-mcp 的嵌入示例(附件中包含) 功能概述(v3.1.0 后支持) 本系列主要介绍 Solon AI 插件(AI “通用”应用开发框架)的使用。Solon-AI 通过方言适配的设计,可兼容各大语言模型(LLM)接口调用。 这里讲的 AI 主要是指生成式人工智能(Generative Artificial Intelligence)。也会称为“大模型”,或者“大语言模型”。按生成内容分的话,常见的有: 模型 | 作用 | 聊天生成模型(ChatModel) | 用于生成聊天对话、或文字创作、或解惑答疑等 | 图片生成模型(ImageModel) | 用于生成图片 | 视频生成模型(VideoModel) | 用于生成视频 |
其它模型还会有(更多,不列): 模型 | 作用 | 嵌入模型(EmbeddingModel) | 用于生成矢量数据,进而实现相似查询 | 排序模型(RankingModel) | 用于排序 |
不同模型间,会有相互协作。比如 ChatModel 生成的内容,可用于 ImageModel 和 VideoModel。而 EmbeddingModel 与 ChatModel 协作,可实现 RAG(即本地数据与大模型协作,增强生成效果)。也支持 MCP 协议,实现 Tool 服务发布,和 Tool 服务使用。 在使用时,可以粗浅得认为它是个 http-api 接口(平易近人些)。见常的几种术语,也是差不多的意思: 目前 AI 常见的应用建设(solon-flow 提供“流程编排”支持) 来源:Solon-AI 官方文档 五、技术选型主要接口体验示例- ChatModel(通用接口,基于方言适配实现不同提供商与模型的扩展)
- ChatModel chatModel = ChatModel.of("http://127.0.0.1:11434/api/chat")
- .provider("ollama") //需要指定供应商,用于识别接口风格(也称为方言)
- .model("qwen2.5:1.5b")
- .build();
- //同步调用,并打印响应消息
- System.out.println(chatModel.prompt("hello").call().getMessage());
- //响应式调用
- chatModel.prompt("hello").stream(); //Publisher<ChatResponse>
复制代码
- Function Calling(或者 Tool Calling)
- //可以添加默认工具(即所有请求有产),或请求时工具
- chatModel.prompt("今天杭州的天气情况?")
- .options(op->op.toolsAdd(new FunctionTools()))
- .call();
复制代码
- chatModel.prompt(ChatMessage.ofUser("这图里有方块吗?", Image.ofUrl(imageUrl)))
- .call();
复制代码
- RAG(EmbeddingModel,Repository,DocumentLoader,RerankingModel)
- //构建知识库
- EmbeddingModel embeddingModel = EmbeddingModel.of(apiUrl).apiKey(apiKey).provider(provider).model(model).batchSize(10).build();
- RerankingModel rerankingModel = RerankingModel.of(apiUrl).apiKey(apiKey).provider(provider).model(model).build();
- InMemoryRepository repository = new InMemoryRepository(TestUtils.getEmbeddingModel()); //3.初始化知识库
- repository.insert(new PdfLoader(pdfUri).load());
- //检索
- List<Document> docs = repository.search(query);
- //如果有需要,可以重排一下
- docs = rerankingModel.rerank(query, docs);
- //提示语增强是
- ChatMessage message = ChatMessage.augment(query, docs);
- //调用大模型
- chatModel.prompt(message)
- .call();
复制代码
- id: demo1
- layout:
- - title: "开始"
- type: start
- - title: "文件提取"
- meta.input: "file" # 可视界面的配置(通过元信息表示)
- meta.output: "fileTxt"
- task: @FileLoaderCom
- - title: "LLM"
- meta.model: "Qwen/Qwen2.5-72B-Instruct" # 可视界面的配置(通过元信息表示)
- meta.input: "fileTxt"
- meta.messages:
- - role: system
- content: "#角色\n你是一个数据专家,删除数据的格式整理和转换\n\n#上下文\n${fileTxt}\n\n#任务\n提取csv格式的字符串"
- task: @ChatModelCom
- - title: "参数提取器"
- meta.model: "Qwen/Qwen2.5-72B-Instruct" # 可视界面的配置(通过元信息表示)
- meta.output: "csvData"
- task: @ParamExtractionCom
- - title: "执行代码"
- meta.input: "csvData"
- task: |
- import com.demo.DataUtils;
- String json = DataUtils.csvToJson(node.meta().get("meta.input")); //转为 json 数据
- String echatCode = DataUtils.jsonAsEchatCode(json); //转为 echat 图表代码
- context.result = echatCode; //做为结果返回
- - title: "结束"
- type: end
- # FlowEngine flowEngine = FlowEngine.newInstance();
- # ...
- # flowEngine.eval("demo1");
复制代码
- //组件方式构建
- @McpServerEndpoint(name="mcp-case1", sseEndpoint = "/case1/sse")
- public class McpServerTool {
- @ToolMapping(description = "查询天气预报")
- public String getWeather(@ToolParam(description = "城市位置") String location) {
- return "晴,14度";
- }
- }
- //原生 java 方式构建
- McpServerEndpointProvider serverEndpoint = McpServerEndpointProvider.builder()
- .name("mcp-case2")
- .sseEndpoint("/case2/sse")
- .build();
- serverEndpoint.addTool(new MethodToolProvider(new McpServerTool()));
- serverEndpoint.postStart();
复制代码
- McpClientToolProvider clientToolProvider = McpClientToolProvider.builder()
- .apiUrl("http://localhost:8080/case1/sse")
- .build();
- String rst = clientToolProvider.callToolAsText("getWeather", Map.of("location", "杭州"));
复制代码
Java AI 智能体 全场景应用开发框架支持已知 AI 开发的各种能力
Java AI 智能体 全场景应用开发框架支持已知 AI 开发的各种能力

链接:https://pan.quark.cn/s/309c63b7d626
提取码下载:
|