Solon AI 发布 Java 全场景 AI 开发框架,集成 LLM、RAG、MCP 与 Agent
opensolon/solon-ai
Solon AI 是 Solon 项目下的 Java 全场景 AI 开发框架,覆盖 LLM 调用、RAG 知识库、MCP 协议和 Agent 协作编排。
Java LLM(tool, skill) & RAG & MCP & Agent(ReAct, Team) Application development framework
Restraint, efficiency and openness
It is the same type of development framework as LangChain, LangGraph and LlamaIndex
https://solon.noear.org/article/learn-solon-ai
Language: English | 中文
简介
Solon AI is one of the core subprojects of the Solon project. It is a full-scenario Java AI development framework, which aims to deeply integrate LLM large model, RAG knowledge base, MCP protocol and Agent collaboration choreography.
- Full use case support: fits perfectly into the Solon ecosystem and can be seamlessly integrated into frameworks like SpringBoot, Vert.X, Quarkus, etc.
- Multi-model dialects: Adapt model differences by dialect using ChatModel's unified interface (OpenAI, Gemini, Claude, Ollama, DeepSeek, Dashscope, etc.).
- Graph-driven orchestration: supports the transformation of Agent reasoning into observable and governable computation flow graphs.
Examples of embeddings (including third-party frameworks) for solon-ai:
- https://gitee.com/solonlab/solon-ai-mcp-embedded-examples
- https://gitcode.com/solonlab/solon-ai-mcp-embedded-examples
- https://github.com/solonlab/solon-ai-mcp-embedded-examples
What types of applications can be developed?
- General-purpose Autonomous Agents (e.g., Manus, OpenOperator)
- Intelligent Assistants & RAG Knowledge Bases (e.g., Dify, Coze)
- Multi-Agent Collaborative Orchestration (e.g., AutoGPT, MetaGPT)
- Business-Driven Controlled Workflows (e.g., AI-enhanced DingTalk/Lark approvals, SAP Intelligent Modules)
- Intelligent Document Processing & ETL (e.g., Instabase, Unstructured.io)
- Real-time Data Insights & Dashboards (e.g., Text-to-SQL applications)
- Automated Testing & Quality Assurance (e.g., GitHub Copilot Workspace)
- Low-Code/Visual AI Workflow Platforms (e.g., LangFlow, Flowise)
- And more...
Example Agent synthesis project (can be used directly for production or customization)
Core Module Experience
- ChatModel(General Purpose LLM call interface)
Support for synchronous and Reactive calls, built-in dialect adaptation, Tool, Skill, ChatSession, etc.
ChatModel chatModel = ChatModel.of("http://127.0.0.1:11434/api/chat") .provider("ollama") //Need to specify vendor, used to identify interface style (also called dialect) .model("qwen2.5:1.5b") .defaultTalentAdd(new McpGatewayTalent()) .build(); // Synchronize the call and print the response message AssistantMessage result = ChatchatModel.prompt("The weather in Hangzhou today?") .options(op->op.toolAdd(new WeatherTools())) //Adding tools .call() .getMessage(); System.out.println(result); // Stream call chatModel.prompt("hello").stream(); //Flux<ChatEvent>, full semantic events
- Talents(Solon AI Talents)
Talent talent = new TalentDesc("order_expert") .description("Order Assistant") // Dynamic admission: Activated only when "order" is mentioned .isSupported(prompt -> prompt.getUserMessageContent().contains("order")) // Dynamic instructions: Inject different Sops depending on whether the user is a VIP or not .instruction(prompt -> { if ("VIP".equals(prompt.getMeta("user_level"))) { return "This is a VIP customer, please call fast_track_tool first."; } return "Process the order inquiry according to the normal process."; }) .toolAdd(new OrderTools()); chatModel.prompt("Where is my order from yesterday?") .options(o->o.talentAdd(talent)) .call();
- RAG(知识库)
It provides full-link support from DocumentLoader, DocumentSplitter, EmbeddingModel, and RerankingModel.
//Building a Knowledge Warehouse 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()); //retrieval List<Document> docs = repository.search(query); //You can rearrange it if you want docs = rerankingModel.rerank(query, docs); //Cue enhancement is ChatMessage message = ChatMessage.ofUserAugment(query, docs); //Calling the llm chatModel.prompt(message) .call();
- MCP (Model Context Protocol)
Deep integration with MCP protocol (MCP_2025_06_18), supporting cross-platform tool, resource, and prompt sharing.
//server @McpServerEndpoint(channel = McpChannel.STREAMABLE, mcpEndpoint = "/mcp") public class MyMcpServer { @ToolMapping(description = "Checking the weather") public String getWeather(@Param(description = "city") String location) { return "It's sunny, 25 degrees"; } } //client McpClientProvider clientProvider = McpClientProvider.builder() .channel(McpChannel.STREAMABLE) .url("http://localhost:8080/mcp") .build();
- Agent (An Agent Experience with Computational Flow Graphs)
The Solon AI Agent transforms reasoning logic into graph-driven collaboration flows, enabling ReAct introspective reasoning and multi-agent Team collaboration.
//Reflective intelligent agent: ReActAgent agent = ReActAgent.of(chatModel) // 或者用 SimpleAgent.of(chatModel) .name("weather_expert") .description("Check the weather and provide advice") .defaultToolAdd(weatherTool) // Inject MCP or local tools .build(); agent.prompt("What to wear in Beijing today?").call(); // Autocomplete: Think -> Call tool -> Observe -> Summarize // Constructing a team agent: Automatically arranging member roles through protocols TeamAgent team = TeamAgent.of(chatModel) .name("marketing_team") .protocol(TeamProtocols.HIERARCHICAL) // Hierarchical collaboration (6 preset protocols) .agentAdd(copywriterAgent) // Copywriter expert .agentAdd(illustratorAgent) // Illustrator expert .build(); team.prompt("Plan a promotion scheme for deep-sea mineral water").call(); // Supervisor automatically decomposes tasks and assigns them to corresponding experts .defaultToolAdd(weatherTool) // Inject MCP or local tools
- Ai Flow(Process orchestration experience)
The low-code flow application of Dify is simulated, and the links such as RAG, hint word enhancement and model call are YAML arranged.
id: demo1 layout: - type: "start" - task: "@VarInput" meta: message: "Solon 是谁开发的?" - task: "@EmbeddingModel" meta: embeddingConfig: # "@type": "org.noear.solon.ai.embedding.EmbeddingConfig" provider: "ollama" model: "bge-m3" apiUrl: "http://127.0.0.1:11434/api/embed" - task: "@InMemoryRepository" meta: documentSources: - "https://solon.noear.org/article/about?format=md" splitPipeline: - "org.noear.solon.ai.rag.splitter.RegexTextSplitter" - "org.noear.solon.ai.rag.splitter.TokenSizeTextSplitter" - task: "@ChatModel" meta: systemPrompt: "你是个知识库" stream: false 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 flowEngine = FlowEngine.newInstance(); # ... # flowEngine.eval("demo1");
Solon Project code repository
| Code repository | Description |
|---|---|
| /opensolon/solon | Solon ,Main code repository |
| /opensolon/solon-examples | Solon ,Official website supporting sample code repository |
| /opensolon/solon-ai | Solon Ai ,Code repository |
| /opensolon/solon-flow | Solon Flow ,Code repository |
| /opensolon/solon-expression | Solon Expression ,Code repository |
| /opensolon/solon-cloud | Solon Cloud ,Code repository |
| /opensolon/solon-admin | Solon Admin ,Code repository |
| /opensolon/solon-integration | Solon Integration ,Code repository |
| /opensolon/solon-java17 | Solon Java17 ,Code repository(base java17) |
| /opensolon/solon-java25 | Solon Java25 ,Code repository(base java25) |
| /opensolon/soloncode | SolonCode(Java8 impl version of "Claude Code") ,Code repository |
| /opensolon/solonclaw | SolonClaw(Java8 impl version of "OpenClaw") ,Code repository |
| /opensolon/solon-maven-plugin | Solon Maven ,Plugin code repository |
| /opensolon/solon-gradle-plugin | Solon Gradle ,Plugin code repository |
| /opensolon/solon-idea-plugin | Solon Idea ,Plugin code repository |
| /opensolon/solon-vscode-plugin | Solon VsCode ,Plugin code repository |
FAQ
What is Solon AI?
Solon AI is a full-scenario Java AI development framework that deeply integrates LLM large models, RAG knowledge bases, MCP protocol, and Agent collaboration orchestration. It's designed for building production-grade AI applications with Java.
How does Solon AI differ from Python frameworks like LangChain?
Solon AI is built specifically for Java developers with seamless integration into the Java ecosystem:
Key differences:
- Java-native: Fits perfectly into Solon, SpringBoot, Vert.X, Quarkus ecosystems
- JDK 8-25 support: Broad Java version compatibility
- Multi-model dialects: Unified interface adapts model differences automatically
- Graph-driven orchestration: Transforms Agent reasoning into observable computation flow graphs
What components does Solon AI provide?
- ChatModel: General-purpose LLM call interface with Tool, Skill, ChatSession support
- Skills: Dynamic admission and instruction injection
- RAG: Full-link support (DocumentLoader, DocumentSplitter, EmbeddingModel, RerankingModel)
- MCP: Deep integration with Model Context Protocol (MCP_2025_06_18)
- Agent: ReAct introspective reasoning and Team collaboration
- Ai Flow: YAML-based flow orchestration (Dify-like low-code experience)
What LLM providers are supported?
Supported via dialect adaptation:
- OpenAI, Gemini, Claude
- Ollama (local models)
- DeepSeek, Dashscope (Alibaba)
- Custom endpoints
How do I get started?
Add Maven dependency:
<dependency> <groupId>org.noear</groupId> <artifactId>solon-ai</artifactId> </dependency>
Basic usage:
ChatModel chatModel = ChatModel.of("http://127.0.0.1:11434/api/chat") .provider("ollama") .model("qwen2.5:1.5b") .build(); AssistantMessage result = chatModel.prompt("Hello").call().getMessage();
How do I add tools?
chatModel.prompt("What's the weather?") .options(op -> op.toolAdd(new WeatherTools())) .call();
How do I use RAG?
EmbeddingModel embeddingModel = EmbeddingModel.of(apiUrl) .apiKey(apiKey).provider(provider).model(model).build(); InMemoryRepository repository = new InMemoryRepository(embeddingModel); repository.insert(new PdfLoader(pdfUri).load()); List<Document> docs = repository.search(query); ChatMessage message = ChatMessage.ofUserAugment(query, docs); chatModel.prompt(message).call();
What is MCP integration?
Solon AI provides both MCP server and client:
Server:
@McpServerEndpoint(channel = McpChannel.STREAMABLE, mcpEndpoint = "/mcp") public class MyMcpServer { @ToolMapping(description = "Checking the weather") public String getWeather(@Param(description = "city") String location) { return "It's sunny, 25 degrees"; } }
Client:
McpClientProvider client = McpClientProvider.builder() .channel(McpChannel.STREAMABLE) .url("http://localhost:8080/mcp") .build();
What are the Agent patterns?
- ReActAgent: Reflective agent with Think → Call → Observe → Summarize loop
- TeamAgent: Multi-agent collaboration with 6 preset protocols (HIERARCHICAL, etc.)
Where can I find help?
- Documentation: solon.noear.org/article/learn-solon-ai
- Examples: solonlab/solon-ai-mcp-embedded-examples
- SolonCode: Java version of "Claude Code" - github.com/opensolon/soloncode
- SolonClaw: Java version of "OpenClaw" - github.com/opensolon/solonclaw
来源:GitHub · github.com