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();
项目仓库地址?
- gitee:https://gitee.com/opensolon/solon-ai
- gitcode: https://gitcode.com/opensolon/solon-ai
- github:https://github.com/opensolon/solon-ai