{"id":26016568,"url":"https://github.com/opensolon/solon-ai","last_synced_at":"2026-04-01T22:35:51.706Z","repository":{"id":280728549,"uuid":"942944691","full_name":"opensolon/solon-ai","owner":"opensolon","description":"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.","archived":false,"fork":false,"pushed_at":"2026-03-27T09:32:19.000Z","size":24106,"stargazers_count":334,"open_issues_count":9,"forks_count":49,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-03-27T20:40:02.139Z","etag":null,"topics":["ai","chat","deepseek","embedding","function-call","java","llm","mcp-client","mcp-server","modelcontextprotocol","openai","rag","reranking","skills","tool-call"],"latest_commit_sha":null,"homepage":"https://solon.noear.org","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/opensolon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-04T23:42:44.000Z","updated_at":"2026-03-27T13:51:12.000Z","dependencies_parsed_at":"2025-04-12T13:27:31.478Z","dependency_job_id":"366689be-96c9-4644-818f-14ce06bf2a25","html_url":"https://github.com/opensolon/solon-ai","commit_stats":null,"previous_names":["opensolon/solon-ai"],"tags_count":45,"template":false,"template_full_name":null,"purl":"pkg:github/opensolon/solon-ai","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensolon%2Fsolon-ai","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensolon%2Fsolon-ai/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensolon%2Fsolon-ai/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensolon%2Fsolon-ai/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/opensolon","download_url":"https://codeload.github.com/opensolon/solon-ai/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opensolon%2Fsolon-ai/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31292672,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","chat","deepseek","embedding","function-call","java","llm","mcp-client","mcp-server","modelcontextprotocol","openai","rag","reranking","skills","tool-call"],"created_at":"2025-03-06T04:22:03.801Z","updated_at":"2026-04-01T22:35:51.694Z","avatar_url":"https://github.com/opensolon.png","language":"Java","readme":"\u003ch1 align=\"center\" style=\"text-align:center;\"\u003e\n\u003cimg src=\"solon_icon.png\" width=\"128\" /\u003e\n\u003cbr /\u003e\nSolon-AI\n\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\n\t\u003cstrong\u003eJava LLM(tool, skill) \u0026 RAG \u0026 MCP \u0026 Agent(ReAct, Team) Application development framework\u003c/strong\u003e\n    \u003cbr/\u003e\n    \u003cstrong\u003eRestraint, efficiency and openness\u003c/strong\u003e\n    \u003cbr/\u003e\n    \u003cstrong\u003eIt is the same type of development framework as LangChain, LangGraph and LlamaIndex\u003c/strong\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\t\u003ca href=\"https://solon.noear.org/article/learn-solon-ai\"\u003ehttps://solon.noear.org/article/learn-solon-ai\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://deepwiki.com/opensolon/solon-ai\"\u003e\u003cimg src=\"https://deepwiki.com/badge.svg\" alt=\"Ask DeepWiki\"\u003e\u003c/a\u003e\n    \u003ca target=\"_blank\" href=\"https://central.sonatype.com/search?q=org.noear%3Asolon-parent\"\u003e\n        \u003cimg src=\"https://img.shields.io/maven-central/v/org.noear/solon.svg?label=Maven%20Central\" alt=\"Maven\" /\u003e\n    \u003c/a\u003e\n    \u003ca target=\"_blank\" href=\"LICENSE\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/:License-Apache2-blue.svg\" alt=\"Apache 2\" /\u003e\n\t\u003c/a\u003e\n    \u003ca target=\"_blank\" href=\"https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/badge/JDK-8-green.svg\" alt=\"jdk-8\" /\u003e\n\t\u003c/a\u003e\n    \u003ca target=\"_blank\" href=\"https://www.oracle.com/java/technologies/javase/jdk11-archive-downloads.html\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/badge/JDK-11-green.svg\" alt=\"jdk-11\" /\u003e\n\t\u003c/a\u003e\n    \u003ca target=\"_blank\" href=\"https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/badge/JDK-17-green.svg\" alt=\"jdk-17\" /\u003e\n\t\u003c/a\u003e\n    \u003ca target=\"_blank\" href=\"https://www.oracle.com/java/technologies/javase/jdk21-archive-downloads.html\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/badge/JDK-21-green.svg\" alt=\"jdk-21\" /\u003e\n\t\u003c/a\u003e\n    \u003ca target=\"_blank\" href=\"https://www.oracle.com/java/technologies/downloads/\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/badge/JDK-25-green.svg\" alt=\"jdk-25\" /\u003e\n\t\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003ca target=\"_blank\" href='https://gitee.com/opensolon/solon-ai/stargazers'\u003e\n        \u003cimg src='https://gitee.com/opensolon/solon-ai/badge/star.svg?theme=gvp' alt='gitee star'/\u003e\n\t\u003c/a\u003e\n    \u003ca target=\"_blank\" href='https://github.com/opensolon/solon-ai/stargazers'\u003e\n\t\t\u003cimg src=\"https://img.shields.io/github/stars/opensolon/solon-ai.svg?style=flat\u0026logo=github\" alt=\"github star\"/\u003e\n\t\u003c/a\u003e\n    \u003ca target=\"_blank\" href='https://gitcode.com/opensolon/solon-ai/stargazers'\u003e\n\t\t\u003cimg src='https://gitcode.com/opensolon/solon-ai/star/badge.svg' alt='gitcode star'/\u003e\n\t\u003c/a\u003e\n\u003c/p\u003e\n\n\n##### Language: English | [中文](README_CN.md)\n\n\u003chr /\u003e\n\n\n## 简介\n\nSolon 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.\n\n* Full use case support: fits perfectly into the Solon ecosystem and can be seamlessly integrated into frameworks like SpringBoot, Vert.X, Quarkus, etc.\n* Multi-model dialects: Adapt model differences by dialect using ChatModel's unified interface (OpenAI, Gemini, Claude, Ollama, DeepSeek, Dashscope, etc.).\n* Graph-driven orchestration: supports the transformation of Agent reasoning into observable and governable computation flow graphs.\n\n\nExamples of embeddings (including third-party frameworks) for solon-ai:\n\n* https://gitee.com/solonlab/solon-ai-mcp-embedded-examples\n* https://gitcode.com/solonlab/solon-ai-mcp-embedded-examples\n* https://github.com/solonlab/solon-ai-mcp-embedded-examples\n\n\n## What types of applications can be developed?\n\n* General-purpose Autonomous Agents (e.g., Manus, OpenOperator)\n* Intelligent Assistants \u0026 RAG Knowledge Bases (e.g., Dify, Coze)\n* Multi-Agent Collaborative Orchestration (e.g., AutoGPT, MetaGPT)\n* Business-Driven Controlled Workflows (e.g., AI-enhanced DingTalk/Lark approvals, SAP Intelligent Modules)\n* Intelligent Document Processing \u0026 ETL (e.g., Instabase, Unstructured.io)\n* Real-time Data Insights \u0026 Dashboards (e.g., Text-to-SQL applications)\n* Automated Testing \u0026 Quality Assurance (e.g., GitHub Copilot Workspace)\n* Low-Code/Visual AI Workflow Platforms (e.g., LangFlow, Flowise)\n* And more...\n\n\n\n## Example Agent synthesis project (can be used directly for production or customization)\n\n* [SolonCode (Java impl version of \"Claude Code\")](../../../../opensolon/soloncode)\n* [SolonClaw (Java impl version of \"OpenClaw\")](../../../../opensolon/solonclaw)\n\n## Core Module Experience\n\n* ChatModel(General Purpose LLM call interface)\n\nSupport for synchronous and Reactive calls, built-in dialect adaptation, Tool, Skill, ChatSession, etc.\n\n```java\nChatModel chatModel = ChatModel.of(\"http://127.0.0.1:11434/api/chat\")\n                .provider(\"ollama\") //Need to specify vendor, used to identify interface style (also called dialect)\n                .model(\"qwen2.5:1.5b\")\n                .defaultSkillAdd(new ToolGatewaySkill())\n                .build();\n\n// Synchronize the call and print the response message\nAssistantMessage result = ChatchatModel.prompt(\"The weather in Hangzhou today？\")\n         .options(op-\u003eop.toolAdd(new WeatherTools())) //Adding tools\n         .call()\n         .getMessage();\nSystem.out.println(result);\n\n// Stream call\nchatModel.prompt(\"hello\").stream(); //Publisher\u003cChatResponse\u003e\n```\n\n* Skills（Solon AI Skills）\n\n\n```java\nSkill skill = new SkillDesc(\"order_expert\")\n        .description(\"Order Assistant\")\n        // Dynamic admission: Activated only when \"order\" is mentioned\n        .isSupported(prompt -\u003e prompt.getUserMessageContent().contains(\"order\"))\n        // Dynamic instructions: Inject different Sops depending on whether the user is a VIP or not\n        .instruction(prompt -\u003e {\n            if (\"VIP\".equals(prompt.getMeta(\"user_level\"))) {\n                return \"This is a VIP customer, please call fast_track_tool first.\";\n            }\n            return \"Process the order inquiry according to the normal process.\";\n        })\n        .toolAdd(new OrderTools());\n\nchatModel.prompt(\"Where is my order from yesterday？\")\n         .options(o-\u003eo.skillAdd(skill))\n         .call();\n```\n\n\n* RAG（知识库）\n\nIt provides full-link support from DocumentLoader, DocumentSplitter, EmbeddingModel, and RerankingModel.\n\n```java\n//Building a Knowledge Warehouse\nEmbeddingModel embeddingModel = EmbeddingModel.of(apiUrl).apiKey(apiKey).provider(provider).model(model).batchSize(10).build();\nRerankingModel rerankingModel = RerankingModel.of(apiUrl).apiKey(apiKey).provider(provider).model(model).build();\nInMemoryRepository repository = new InMemoryRepository(TestUtils.getEmbeddingModel()); //3.初始化知识库\n\nrepository.insert(new PdfLoader(pdfUri).load());\n\n//retrieval\nList\u003cDocument\u003e docs = repository.search(query);\n\n//You can rearrange it if you want\ndocs = rerankingModel.rerank(query, docs);\n\n//Cue enhancement is\nChatMessage message = ChatMessage.ofUserAugment(query, docs);\n\n//Calling the llm\nchatModel.prompt(message) \n    .call();\n```\n\n\n* MCP (Model Context Protocol)\n\nDeep integration with MCP protocol (MCP_2025_06_18), supporting cross-platform tool, resource, and prompt sharing.\n\n\n```java\n//server\n@McpServerEndpoint(channel = McpChannel.STREAMABLE, mcpEndpoint = \"/mcp\") \npublic class MyMcpServer {\n    @ToolMapping(description = \"Checking the weather\")\n    public String getWeather(@Param(description = \"city\") String location) {\n        return \"It's sunny, 25 degrees\";\n    }\n}\n\n//client\nMcpClientProvider clientProvider = McpClientProvider.builder()\n        .channel(McpChannel.STREAMABLE)\n        .url(\"http://localhost:8080/mcp\")\n        .build();\n```\n\n\n* Agent (An Agent Experience with Computational Flow Graphs)\n\nThe Solon AI Agent transforms reasoning logic into graph-driven collaboration flows, enabling ReAct introspective reasoning and multi-agent Team collaboration.\n\n```java\n//Reflective intelligent agent:\nReActAgent agent = ReActAgent.of(chatModel) // 或者用 SimpleAgent.of(chatModel)\n    .name(\"weather_expert\")\n    .description(\"Check the weather and provide advice\")\n    .defaultToolAdd(weatherTool) // Inject MCP or local tools\n    .build();\n\nagent.prompt(\"What to wear in Beijing today？\").call(); // Autocomplete: Think -\u003e Call tool -\u003e Observe -\u003e Summarize\n\n// Constructing a team agent: Automatically arranging member roles through protocols\nTeamAgent team = TeamAgent.of(chatModel)\n    .name(\"marketing_team\")\n    .protocol(TeamProtocols.HIERARCHICAL) // Hierarchical collaboration (6 preset protocols)\n    .agentAdd(copywriterAgent) // Copywriter expert\n    .agentAdd(illustratorAgent) // Illustrator expert\n    .build();\n\nteam.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\n```\n\n\n\n* Ai Flow（Process orchestration experience）\n\nThe low-code flow application of Dify is simulated, and the links such as RAG, hint word enhancement and model call are YAML arranged.\n\n```yaml\nid: demo1\nlayout:\n  - type: \"start\"\n  - task: \"@VarInput\"\n    meta:\n      message: \"Solon 是谁开发的？\"\n  - task: \"@EmbeddingModel\"\n    meta:\n      embeddingConfig: # \"@type\": \"org.noear.solon.ai.embedding.EmbeddingConfig\"\n        provider: \"ollama\"\n        model: \"bge-m3\"\n        apiUrl: \"http://127.0.0.1:11434/api/embed\"\n  - task: \"@InMemoryRepository\"\n    meta:\n      documentSources:\n        - \"https://solon.noear.org/article/about?format=md\"\n      splitPipeline:\n        - \"org.noear.solon.ai.rag.splitter.RegexTextSplitter\"\n        - \"org.noear.solon.ai.rag.splitter.TokenSizeTextSplitter\"\n  - task: \"@ChatModel\"\n    meta:\n      systemPrompt: \"你是个知识库\"\n      stream: false\n      chatConfig: # \"@type\": \"org.noear.solon.ai.chat.ChatConfig\"\n        provider: \"ollama\"\n        model: \"qwen2.5:1.5b\"\n        apiUrl: \"http://127.0.0.1:11434/api/chat\"\n  - task: \"@ConsoleOutput\"\n\n# FlowEngine flowEngine = FlowEngine.newInstance();\n# ...\n# flowEngine.eval(\"demo1\");\n```\n\n## Solon Project code repository\n\n\n\n\n| Code repository                                                             | Description                                                     | \n|-----------------------------------------------------------------------------|-----------------------------------------------------------------| \n| [/opensolon/solon](../../../../opensolon/solon)                             | Solon ,Main code repository                                     | \n| [/opensolon/solon-examples](../../../../opensolon/solon-examples)           | Solon ,Official website supporting sample code repository       |\n|                                                                             |                                                                 |\n| [/opensolon/solon-ai](../../../../opensolon/solon-ai)                       | Solon Ai ,Code repository                                       |\n| [/opensolon/solon-flow](../../../../opensolon/solon-flow)                   | Solon Flow ,Code repository                                     | \n| [/opensolon/solon-expression](../../../../opensolon/solon-expression)       | Solon Expression ,Code repository                               | \n| [/opensolon/solon-cloud](../../../../opensolon/solon-cloud)                 | Solon Cloud ,Code repository                                    | \n| [/opensolon/solon-admin](../../../../opensolon/solon-admin)                 | Solon Admin ,Code repository                                    | \n| [/opensolon/solon-integration](../../../../opensolon/solon-integration)     | Solon Integration ,Code repository                              | \n| [/opensolon/solon-java17](../../../../opensolon/solon-java17)               | Solon Java17 ,Code repository（base java17）                      | \n| [/opensolon/solon-java25](../../../../opensolon/solon-java25)               | Solon Java25 ,Code repository（base java25）                      | \n|                                                                             |                                                                 |\n| [/opensolon/soloncode](../../../../opensolon/soloncode)                     | SolonCode(Java8 impl version of \"Claude Code\") ,Code repository |\n| [/opensolon/solonclaw](../../../../opensolon/solonclaw)                     | SolonClaw(Java8 impl version of \"OpenClaw\") ,Code repository    | \n|                                                                             |                                                                 |\n| [/opensolon/solon-maven-plugin](../../../../opensolon/solon-gradle-plugin) | Solon Maven ,Plugin code repository                             | \n| [/opensolon/solon-gradle-plugin](../../../../opensolon/solon-gradle-plugin) | Solon Gradle ,Plugin code repository                            | \n|                                                                             |                                                                 |\n| [/opensolon/solon-idea-plugin](../../../../opensolon/solon-idea-plugin)     | Solon Idea ,Plugin code repository                              | \n| [/opensolon/solon-vscode-plugin](../../../../opensolon/solon-vscode-plugin) | Solon VsCode ,Plugin code repository                            | \n\n","funding_links":[],"categories":["CLIs","📚 Projects (1974 total)"],"sub_categories":["MCP Servers"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopensolon%2Fsolon-ai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopensolon%2Fsolon-ai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopensolon%2Fsolon-ai/lists"}