Solon Ai について
Solon AI は、LLM 呼び出し、RAG、MCP、エージェント連携を組み合わせて Java で AI アプリケーションを構築するためのフレームワークです。Java 開発者を対象とし、JDK 8 から 25 に対応しています。SpringBoot、Vert.x、Quarkus などへの組み込みも可能です。
主な機能
- 01モデル方言に対応した ChatModel の統一インターフェース
- 02読み込みから再ランキングまでの RAG パイプライン
- 03MCP サーバーおよびクライアント機能
- 04グラフ駆動の ReAct エージェントと Team エージェント
- 05YAML で定義する AI フロー編成
活用シーン
- 01Java のバックエンドサービスへの LLM 対話とツール呼び出しの組み込み
- 02RAG によるドキュメント質疑応答アプリケーションの構築
- 03マルチエージェント連携による業務プロセスの自動化
MCP 対応
MCP サーバーとクライアントの両方の機能を提供します。サーバー側はアノテーションでツール、リソース、プロンプトを公開し、クライアント側は外部の MCP サーバーに接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Solon-AI
Java LLM(ツール、スキル)& RAG & MCP & エージェント(ReAct、Team)アプリケーション開発フレームワーク
抑制、効率性、オープン性
LangChain、LangGraph、LlamaIndexと同種の開発フレームワークです
https://solon.noear.org/article/learn-solon-ai
言語:英語 | 中文
概要
Solon AIはSolonプロジェクトの中核サブプロジェクトの1つです。LLM、大規模言語モデル、RAGナレッジベース、MCPプロトコル、エージェントの協調オーケストレーションを深く統合することを目指す、あらゆるシナリオに対応したJava AI開発フレームワークです。
- あらゆるユースケースをサポート:Solonエコシステムに完全に適合し、SpringBoot、Vert.X、Quarkusなどのフレームワークにシームレスに統合できます。
- マルチモデル方言:ChatModelの統一インターフェースを通じて、方言によってモデルの違いに対応します(OpenAI、Gemini、Claude、Ollama、DeepSeek、Dashscopeなど)。
- グラフ駆動のオーケストレーション:エージェントの推論を、可観測かつ管理可能な計算フローグラフに変換できます。
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
どのような種類のアプリケーションを開発できますか?
- 汎用自律エージェント(例:Manus、OpenOperator)
- インテリジェントアシスタント&RAG ナレッジベース(例:Dify、Coze)
- マルチエージェントの協調オーケストレーション(例:AutoGPT、MetaGPT)
- ビジネス主導の制御されたワークフロー(例:AI で強化された DingTalk/Lark の承認機能、SAP Intelligent Modules)
- インテリジェントなドキュメント処理&ETL(例:Instabase、Unstructured.io)
- リアルタイムのデータ分析&ダッシュボード(例:Text-to-SQL アプリケーション)
- テストの自動化&品質保証(例:GitHub Copilot Workspace)
- ローコード/ビジュアル AI ワークフロープラットフォーム(例:LangFlow、Flowise)
- その他多数
エージェント合成プロジェクトの例(そのまま本番環境で使用、またはカスタマイズできます)
コアモジュールの使用例
- ChatModel(汎用 LLM 呼び出しインターフェース)
同期呼び出しとリアクティブ呼び出しに対応し、方言への適応機能、Tool、Skill、ChatSession などを組み込みで提供します。
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(ナレッジベース)
DocumentLoader、DocumentSplitter、EmbeddingModel、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)
MCP プロトコル(MCP_2025_06_18)と深く統合し、クロスプラットフォームでのツール、リソース、プロンプトの共有に対応しています。
//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(計算フローグラフを活用したエージェント機能)
Solon AI Agent は推論ロジックをグラフ駆動型の協調フローに変換し、ReAct による内省的な推論と、複数のエージェントによる Team の協調を実現します。
//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(プロセスオーケストレーション機能)
Dify のローコードフローアプリケーションを模倣し、RAG、プロンプトの強化、モデル呼び出しなどの工程を 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 プロジェクトのコードリポジトリ
| コードリポジトリ | 説明 |
|---|---|
| /opensolon/solon | Solon、メインのコードリポジトリ |
| /opensolon/solon-examples | Solon、公式ウェブサイト対応のサンプルコードリポジトリ |
| /opensolon/solon-ai | Solon AI、コードリポジトリ |
| /opensolon/solon-flow | Solon Flow、コードリポジトリ |
| /opensolon/solon-expression | Solon Expression、コードリポジトリ |
| /opensolon/solon-cloud | Solon Cloud、コードリポジトリ |
| /opensolon/solon-admin | Solon Admin、コードリポジトリ |
| /opensolon/solon-integration | Solon Integration、コードリポジトリ |
| /opensolon/solon-java17 | Solon Java17、コードリポジトリ(Java17 ベース) |
| /opensolon/solon-java25 | Solon Java25、コードリポジトリ(Java25 ベース) |
| /opensolon/soloncode | SolonCode(「Claude Code」のJava8実装バージョン)、コードリポジトリ |
| /opensolon/solonclaw | SolonClaw(「OpenClaw」のJava8実装バージョン)、コードリポジトリ |
| /opensolon/solon-maven-plugin | Solon Maven、プラグインのコードリポジトリ |
| /opensolon/solon-gradle-plugin | Solon Gradle、プラグインのコードリポジトリ |
| /opensolon/solon-idea-plugin | Solon Idea、プラグインのコードリポジトリ |
| /opensolon/solon-vscode-plugin | Solon VsCode、プラグインのコードリポジトリ |
FAQ
Solon AI とは何ですか?
Solon AI は、LLM、RAG ナレッジベース、MCP プロトコル、エージェントの協調オーケストレーションを深く統合した、あらゆるシナリオに対応する Java AI 開発フレームワークです。Java で本番環境向けの AI アプリケーションを構築するために設計されています。
Solon AI は LangChain などの Python フレームワークとどう違いますか?
Solon AI は、Java エコシステムとシームレスに統合できるよう、Java 開発者向けに特化して構築されています。
主な違い:
- Java ネイティブ:Solon、SpringBoot、Vert.X、Quarkus の各エコシステムにぴったり適合します
- JDK 8-25 をサポート:幅広い Java バージョンとの互換性があります
- マルチモデル方言:統一されたインターフェースがモデル間の差異に自動的に適応します
- グラフ駆動のオーケストレーション:Agent の推論を、可視化できる計算フローグラフに変換します
Solon AI はどのようなコンポーネントを提供しますか?
- ChatModel:Tool、Skill、ChatSession をサポートする汎用 LLM 呼び出しインターフェース
- Skills:動的な読み込みと指示の注入
- RAG:一連の処理全体をサポートします(DocumentLoader、DocumentSplitter、EmbeddingModel、RerankingModel)
- MCP:Model Context Protocol(MCP_2025_06_18)との緊密な統合
- Agent:ReAct による内省的な推論と Team による協調
- Ai Flow:YAML ベースのフローオーケストレーション(Dify のようなローコード体験)
どの LLM プロバイダーをサポートしていますか?
方言の適応を通じて、以下をサポートしています。
- OpenAI、Gemini、Claude
- Ollama(ローカルモデル)
- DeepSeek、Dashscope(Alibaba)
- カスタムエンドポイント
使い始めるにはどうすればよいですか?
Maven 依存関係を追加します:
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-ai</artifactId>
</dependency>
基本的な使い方:
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();
ツールを追加するにはどうすればよいですか?
chatModel.prompt("What's the weather?")
.options(op -> op.toolAdd(new WeatherTools()))
.call();
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();
MCP 統合とは何ですか?
Solon AI は MCP サーバーとクライアントの両方を提供します。
サーバー:
@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";
}
}
クライアント:
McpClientProvider client = McpClientProvider.builder()
.channel(McpChannel.STREAMABLE)
.url("http://localhost:8080/mcp")
.build();
Agent のパターンには何がありますか?
- ReActAgent:Think → Call → Observe → Summarize のループを持つ、内省型エージェント
- TeamAgent:6 種類のプリセットプロトコル(HIERARCHICAL など)を備えたマルチエージェント協調
ヘルプはどこで確認できますか?
- ドキュメント:solon.noear.org/article/learn-solon-ai
- サンプル:solonlab/solon-ai-mcp-embedded-examples
- SolonCode:「Claude Code」の Java 版 - github.com/opensolon/soloncode
- SolonClaw:「OpenClaw」の Java 版 - github.com/opensolon/solonclaw
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。