Solon AI & MCP
Solon AI & MCP ,是 Solon 官方推出的 Java 智能体应用开发框架。旨在为 Java 开发者提供统一的接口抽象层,简化与 OpenAI、DeepSeek、QWen 等主流 AI 模型的集成流程,以及简化 Mcp 的开发体验。特点:
- 同时支持 Java 8 到 Java 24
- 一套接口支持不同提供者、不同大模型调用(通过方言适配)
- 支持图片生成模型(ImageModel)
- 支持聊天生成模型(ChatModel)
- 支持 Prompt 和 PromptTemplate
- 支持会话记忆(ChatSession)
- 支持 Function Call(或 Tool Call)
- 支持同步接口(call)与流式接口(stream)
- 多态模型等
- 支持 RAG
- 文档加载、分割(excel, html, markdown, pdf, ppt, word...)
- 矢量知识库(chroma、dashvector、elasticsearch、milvus、opensearch、qdrant、redis、tcvectordb...)
- 嵌入模型(EmbeddingModel) 、排序模型(RankingModel)
- 支持 MCP(McpServer、McpClient、McpProxy),支持 MCP_2025-03-26 版本协议
- 支持 AI-Flow
- 支持 Spring、jFinal、Vert.x 等 Solon 以外的框架
- 等......更多内容,参考官网介绍
最近更新了什么?
- 新增 solon-ai-mcp mcp-java-sdk v0.11.0 适配(支持 MCP_2025-03-26 版本协议)
- 调整 solon-ai-mcp channel 取消默认值(之前为 sse),且为必填(利于协议升级过度,有明确的开发时、启动时提醒)
- 如果默认值仍为 sse ,升级后可能忘了修改了升级
- 如果默认值改为 streamable,升级后会造成不兼容
技术预览
- 构建聊天模型(统一方式,支持不同的模型构建)
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:gitee.com/opensolon/s...
- gitcode: gitcode.com/opensolon/s...
- github:github.com/opensolon/s...