Solon Ai

by opensolon

416 stars
1.2k downloads
Not rated
GitHub Website

About

Java AI application development framework (supports LLM-tool,skill; RAG; MCP; Agent-ReAct,Team-Agent). Compatible with java8 ~ java25. It can also be embedded in SpringBoot, jFinal, Vert.x, Quarkus, and other frameworks.

Details

Author
opensolon
GitHub stars
416
Downloads
1,186
Categories
AI, Knowledge Base

- Multi-model dialect support (OpenAI, Gemini, Claude, Ollama, DeepSeek, Dashscope)
- Graph-driven agent orchestration with ReAct and Team collaboration
- Deep MCP protocol integration (both server and client)
- Full-link RAG pipeline (Loader, Splitter, Embedding, Reranking)
- Ai Flow low-code YAML orchestration for workflow automation
- Seamless integration with Solon, SpringBoot, Vert.X, and Quarkus ecosystems

Add the Solon Ai dependency from Maven Central (org.noear:solon-parent). Use core modules like ChatModel for unified LLM calls, RAG for knowledge base operations, MCP for tool/resource sharing, and Agent for graph-driven reasoning. Configuration can be done programmatically or via YAML (Ai Flow).

<h1 align="center" style="text-align:center;"> <img src="solon_icon.png" width="128" /> <br /> Solon-AI </h1> <p align="center"> <strong>Java LLM(tool, skill) & RAG & MCP & Agent(ReAct, Team) Application development framework</strong> <br/> <strong>Restraint, efficiency and openness</strong> <br/> <strong>It is the same type of development framework as LangChain, LangGraph and LlamaIndex</strong> </p> <p align="center"> <a href="https://solon.noear.org/article/learn-solon-ai">https://solon.noear.org/article/learn-solon-ai</a> </p> <p align="center"> <a href="https://deepwiki.com/opensolon/solon-ai"><img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki"></a> <a target="_blank" href="https://central.sonatype.com/search?q=org.noear%3Asolon-parent"> <img src="https://img.shields.io/maven-central/v/org.noear/solon.svg?label=Maven%20Central" alt="Maven" /> </a> <a target="_blank" href="LICENSE"> <img src="https://img.shields.io/:License-Apache2-blue.svg" alt="Apache 2" /> </a> <a target="_blank" href="https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html"> <img src="https://img.shields.io/badge/JDK-8-green.svg" alt="jdk-8" /> </a> <a target="_blank" href="https://www.oracle.com/java/technologies/javase/jdk11-archive-downloads.html"> <img src="https://img.shields.io/badge/JDK-11-green.svg" alt="jdk-11" /> </a> <a target="_blank" href="https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html"> <img src="https://img.shields.io/badge/JDK-17-green.svg" alt="jdk-17" /> </a> <a target="_blank" href="https://www.oracle.com/java/technologies/javase/jdk21-archive-downloads.html"> <img src="https://img.shields.io/badge/JDK-21-green.svg" alt="jdk-21" /> </a> <a target="_blank" href="https://www.oracle.com/java/technologies/downloads/"> <img src="https://img.shields.io/badge/JDK-25-green.svg" alt="jdk-25" /> </a> <br /> <a target="_blank" href='https://gitee.com/opensolon/solon-ai/stargazers'> <img src='https://gitee.com/opensolon/solon-ai/badge/star.svg?theme=gvp' alt='gitee star'/> </a> <a target="_blank" href='https://github.com/opensolon/solon-ai/stargazers'> <img src="https://img.shields.io/github/stars/opensolon/solon-ai.svg?style=flat&logo=github" alt="github star"/> </a> <a target="_blank" href='https://gitcode.com/opensolon/solon-ai/stargazers'> <img src='https://gitcode.com/opensolon/solon-ai/star/badge.svg' alt='gitcode star'/> </a> </p> ##### Language: English | [中文](README_CN.md) <hr /> ## 简介 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) * [SolonCode (Java impl version of "Claude Code")](../../../../opensolon/soloncode) * [SolonClaw (Java impl version of "OpenClaw")](../../../../opensolon/solonclaw) ## Core Module Experience * ChatModel(General Purpose LLM call interface) Support for synchronous and Reactive calls, built-in dialect adaptation, Tool, Skill, ChatSession, etc. ```java 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(); //Publisher<ChatResponse> ``` * Talents(Solon AI Talents) ```java 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. ```java //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. ```java //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. ```java //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. ```yaml 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](../../../../opensolon/solon) | Solon ,Main code repository | | [/opensolon/solon-examples](../../../../opensolon/solon-examples) | Solon ,Official website supporting sample code repository | | | | | [/opensolon/solon-ai](../../../../opensolon/solon-ai) | Solon Ai ,Code repository | | [/opensolon/solon-flow](../../../../opensolon/solon-flow) | Solon Flow ,Code repository | | [/opensolon/solon-expression](../../../../opensolon/solon-expression) | Solon Expression ,Code repository | | [/opensolon/solon-cloud](../../../../opensolon/solon-cloud) | Solon Cloud ,Code repository | | [/opensolon/solon-admin](../../../../opensolon/solon-admin) | Solon Admin ,Code repository | | [/opensolon/solon-integration](../../../../opensolon/solon-integration) | Solon Integration ,Code repository | | [/opensolon/solon-java17](../../../../opensolon/solon-java17) | Solon Java17 ,Code repository(base java17) | | [/opensolon/solon-java25](../../../../opensolon/solon-java25) | Solon Java25 ,Code repository(base java25) | | | | | [/opensolon/soloncode](../../../../opensolon/soloncode) | SolonCode(Java8 impl version of "Claude Code") ,Code repository | | [/opensolon/solonclaw](../../../../opensolon/solonclaw) | SolonClaw(Java8 impl version of "OpenClaw") ,Code repository | | | | | [/opensolon/solon-maven-plugin](../../../../opensolon/solon-gradle-plugin) | Solon Maven ,Plugin code repository | | [/opensolon/solon-gradle-plugin](../../../../opensolon/solon-gradle-plugin) | Solon Gradle ,Plugin code repository | | | | | [/opensolon/solon-idea-plugin](../../../../opensolon/solon-idea-plugin) | Solon Idea ,Plugin code repository | | [/opensolon/solon-vscode-plugin](../../../../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: ```xml <dependency> <groupId>org.noear</groupId> <artifactId>solon-ai</artifactId> </dependency> ``` Basic usage: ```java 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? ```java chatModel.prompt("What's the weather?") .options(op -> op.toolAdd(new WeatherTools())) .call(); ``` ### How do I use RAG? ```java 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:** ```java @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:** ```java 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](https://solon.noear.org/article/learn-solon-ai) - **Examples**: [solonlab/solon-ai-mcp-embedded-examples](https://github.com/solonlab/solon-ai-mcp-embedded-examples) - **SolonCode**: Java version of "Claude Code" - [github.com/opensolon/soloncode](https://github.com/opensolon/soloncode) - **SolonClaw**: Java version of "OpenClaw" - [github.com/opensolon/solonclaw](https://github.com/opensolon/solonclaw)
No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.