首页 文章 精选 留言 我的

精选列表

搜索[审批流],共10000篇文章
优秀的个人博客,低调大师

AI 应用工作流:LangGraph 和 Solon AI Flow,我该选谁?

构建一个能聊天的客服、能总结文档的助手,或者一个能自我学习的智能体,都需要一个强大的“幕后大脑”来编排流程。LangGraph 和 Solon AI Flow 就是这样的“大脑”,但它们的工作方式和适用领域大不相同。 简单来说: LangGraph 就像一个拥有复杂思维的私人侦探,擅长推理、犯错和自我修正。 Solon AI Flow 就像一家大型工厂的生产线,注重效率、稳定性和流程的标准化。 一、核心哲学:大脑结构的比喻 它们最大的区别在于如何设计 AI 的“思维路线”。 1. LangGraph:会思考的状态机 LangGraph 采用“状态机”(State Machine)和“图”(Graph)的结构。 比喻: 想象你在玩一个复杂的 “选择你的冒险” 游戏。 每个选择(节点) 都是一次操作(比如调用 AI 模型或使用工具)。 你的决定(边) 决定了下一步去哪里,甚至可能让你回到上一步重新思考。 核心优势: 它天生擅长处理 “复杂的决策和循环”。例如,如果 AI 发现第一次搜索结果不好,它可以自己决定回到上一步,换个关键词再搜一次。 适用人群/场景: 擅长 Python 编程的开发者,用于构建需要高度智能和动态思考的 AI 代理。 2. Solon AI Flow:标准化的生产线 Solon AI Flow 采用“流程图”(Flow Graph)和“组件化”的结构。 比喻: 想象一个汽车组装工厂的生产线。 每一步(组件) 都有明确的任务(输入、处理、输出)。 数据(FlowContext) 就像沿着流水线传送的零件,组件依次取用、加工、再放回。 核心优势: 整个流程是清晰、可预测的。虽然它也可以通过设置“条件开关”来实现循环、回退等。 适用人群/场景: 使用 Java 编程的开发者,用于在企业系统中快速、稳定地部署 AI 功能。 二、配置方式与用户体验 1. 写代码还是写配置? 特点 LangGraph (Python) Solon AI Flow (Java) 流程定义 必须写代码(Python):节点和路由的逻辑都写在程序里。 主要写配置(YAML/JSON):流程步骤和组件参数都在配置文件里。 优势 灵活度最高,能实现最复杂的逻辑。 门槛低、易读性高,业务人员或运维人员也能看懂和调整流程。 2. Web 服务集成(最关键的工程差异) 在把 AI 流程变成一个网站或 APP 可以调用的 API 时,两者的体验截然不同: 功能 LangGraph (Python) Solon AI Flow (Java) 接收请求 需要额外写代码(如用 FastAPI)来接收用户的 HTTP 请求。 内置组件@WebInput:自动从用户的网页请求中获取输入文字和附件。 流式输出 需要手动配置和实现流式传输逻辑。 内置组件@WebOutput:可以直接将 AI 结果以 SSE(流式) 方式输出到用户的浏览器。 总结 需要自己搭建 Web 接口和传输机制。 即插即用,为企业级 Web API 做了大量优化。 三、高级功能的实现方式 1. 智能体使用外部工具 Solon AI Flow (MCP): 它将工具(比如“查天气”)视为独立的微服务。AI 流程通过一套标准协议 (MCP) 去远程调用这个服务。 好处: AI 逻辑和工具的业务逻辑完全分离,系统更稳定、更易于扩展。 LangGraph: 通常是内部调用。AI 流程直接调用代码库里的函数。 2. RAG(文档问答) Solon AI Flow: 它把 RAG 的每一步(如导入文档、文档分割、建立知识库)都做成了独立的 YAML 组件。 好处: 像搭积木一样,通过调整配置文件,就能快速构建和切换不同的 RAG 管道。 四、我该选哪一个? 🎯 你的目标是... 🔧 推荐使用 🚀 为什么? 构建复杂的、能深度推理、自我迭代的 AI 智能体 LangGraph 它的状态机结构最适合处理复杂的 AI 思维逻辑和动态决策。 将 AI 功能稳定地部署到企业 Java 系统中 Solon AI Flow 它提供了 Java 生态的稳定性、Web 接口的便捷性,以及流程的标准化,更符合企业级工程需求。 团队主要用 Java,并追求快速实现 API 接口 Solon AI Flow YAML 配置和原生 Web 组件能让你更快地把 AI 变成一个可用的 API。 专注于 AI 模型和实验,使用 Python 生态 LangGraph 依托 LangChain 强大的工具库,让你专注于 AI 逻辑本身。 五、LangGraph 与 Solon Flow 简单示例参考 Solon AI Flow 就是 Solon Flow 的组件扩展。 1. LangGraph 简单示例 from langgraph.graph import StateGraph, END from typing import Dict, Any # 1. 定义状态类型 class SimpleState(dict): def __init__(self, **kwargs): super().__init__(**kwargs) self.update({ "input": kwargs.get("input", ""), "output": kwargs.get("output", ""), "messages": kwargs.get("messages", []) }) # 2. 定义节点函数 def node_a(state: SimpleState) -> Dict[str, Any]: """第一个节点 - 处理输入""" user_input = state["input"] return { "output": f"节点A处理: {user_input.upper()}", "messages": [f"经过节点A: {user_input}"] } def node_b(state: SimpleState) -> Dict[str, Any]: """第二个节点 - 进一步处理""" current_output = state["output"] current_messages = state["messages"] return { "output": f"{current_output} -> 节点B处理", "messages": current_messages + ["经过节点B"] } # 3. 构建 workflow def create_simple_workflow(): # 创建图 workflow = StateGraph(SimpleState) # 添加节点 workflow.add_node("node_a", node_a) workflow.add_node("node_b", node_b) # 设置入口点 workflow.set_entry_point("node_a") # 添加边(定义执行顺序) workflow.add_edge("node_a", "node_b") workflow.add_edge("node_b", END) # 编译图 return workflow.compile() # 4. 使用 workflow if __name__ == "__main__": # 创建 workflow graph = create_simple_workflow() # 执行 initial_state = SimpleState(input="hello world") result = graph.invoke(initial_state) print("最终结果:", result["output"]) print("消息记录:", result["messages"]) 2. Solon Flow 简单示例 配置示例://task 也可以引用 java 组件(例:"@node_a"),Solon AI Flow 则是全面使用组件(对非技术人员,也很友好)。 id: demo1 layout: - id: "node_a" link: "node_b" task: | String user_input = context.getAs("input"); List<String> current_messages = context.getAs("messages"); context.put("output", "节点A处理: " + user_input.toUpperCase()); current_messages.add("经过节点A: " + user_input); - id: "node_b" task: | String current_output = context.getAs("output"); List<String> current_messages = context.getAs("messages"); context.put("output", current_output + "-> 节点B处理"); current_messages.add("经过节点B"); 代码示例(代码会简化) @Component public class DemoCom { @Init public void test() { FlowContext initial_state = FlowContext.of() .put("input", "a") .put("output", "b") .put("messages", Utils.asList()); flowEngine.eval("demo1", initial_state); } @Inject FlowEngine flowEngine; } 3. Solon AI Flow 简单示例(一个简单的聊天智能体) 配置示例: id: chat1 layout: - type: "start" - task: "@WebInput" - 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: "@WebOutput" - type: "end" 代码示例(代码会简化) @Controller public class DemoController { @Inject FlowEngine flowEngine; Map<String, ChatSession> chatSessionMap = new ConcurrentHashMap<>(); @Produces(MimeType.TEXT_EVENT_STREAM_VALUE) @Mapping("chat") public void test(Context ctx) throws Exception { FlowContext flowContext = FlowContext.of(); //保存会话记录 ChatSession chatSession = chatSessionMap.computeIfAbsent(ctx.sessionId(), k -> InMemoryChatSession.builder().sessionId(k).build()); flowContext.put(Attrs.CTX_CHAT_SESSION, chatSession); flowEngine.eval("chat1", flowContext); } }

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册