solon-ai-flow [预告]
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-ai-mcp</artifactId>
</dependency>
1、描述
看上去像 docker-compose 风格的,AI 智能体编排框架。
2、效果预览
- 简单的聊天智能体
id: chat_case1
layout:
- type: "start"
- task: "@TextInput"
meta:
text: "你好"
- 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: "@TextOutput"
- RAG 知识库智能体
id: rag_case1
layout:
- type: "start"
- task: "@TextInput"
meta:
text: "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: "@TextOutput"
- 两个智能体表演相声式吵架(llm 与 llm 讲相声)
id: pk_case1
layout:
- type: "start"
- task: "@TextInput"
meta:
text: "你好"
- task: "@ChatModel"
id: model_a
meta:
systemPrompt: "你是一个智能体名字叫“阿飞”。将跟另一个叫“阿紫”的智能体,表演相声式吵架。"
stream: false
chatSession: "A"
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: "@TextOutput"
meta:
prefix: "阿飞: "
- task: "@ChatModel"
id: model_b
meta:
systemPrompt: "你是一个智能体名字叫“阿紫”。将跟另一个叫“阿飞”的智能体,表演相声式吵架。"
stream: false
chatSession: "B"
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: "@TextOutput"
meta:
prefix: "阿紫: "
- type: "exclusive"
link:
- nextId: model_a
condition: 'context.counter().incr("demo") < 10'
- nextId: end
- type: "end"
id: "end"