solon-ai-flow [预告]
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-ai-flow</artifactId>
</dependency>
1、描述
solon-ai-flow 是基于 solon-flow 构建的一个 AI 流编排框架。
- 旨在实现一种 docker-compose 风格的 AI-Flow
- 算是一种新的思路(或参考)
有别常见的 AI 流编排工具(或低代码工具)。我们是应用开发框架,是用来开发工具或产品的。
2、效果预览
- 简单的聊天智能体
id: chat_case1
layout:
- type: "start"
- task: "@VarInput"
meta:
message: "你好"
- 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"
- RAG 知识库智能体
id: rag_case1
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"
- 两个智能体表演相声式吵架(llm 与 llm 讲相声)
id: pk_case1
layout:
- type: "start"
- task: "@VarInput"
meta:
message: "你好"
- task: "@ChatModel"
id: model_a
meta:
systemPrompt: "你是一个智能体名字叫“阿飞”。将跟另一个叫“阿紫”的智能体,表演相声式吵架。每句话不要超过50个字"
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: "@ConsoleOutput"
meta:
format: "阿飞:#{message}"
- task: "@ChatModel"
id: model_b
meta:
systemPrompt: "你是一个智能体名字叫“阿紫”。将跟另一个叫“阿飞”的智能体,表演相声式吵架。每句话不要超过50个字"
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: "@ConsoleOutput"
meta:
format: "阿紫:#{message}"
- type: "exclusive"
link:
- nextId: model_a
condition: 'context.counter().incr("demo") < 10'
- nextId: end
- type: "end"
id: "end"