qq代挂主站网站建设wordpress没有底部
2026/4/6 23:31:01 网站建设 项目流程
qq代挂主站网站建设,wordpress没有底部,郑州营销型网站设计运营,万网网站根目录随着大语言模型#xff08;LLM#xff09;技术的快速发展#xff0c;AI应用的需求已经从简单的问答扩展到了复杂的多步骤任务处理、多智能体协作等场景。传统的线性链式开发方式在面对这些复杂需求时显得力不从心。LangGraph应运而生#xff0c;它是一个用于构建有状态、多…随着大语言模型LLM技术的快速发展AI应用的需求已经从简单的问答扩展到了复杂的多步骤任务处理、多智能体协作等场景。传统的线性链式开发方式在面对这些复杂需求时显得力不从心。LangGraph应运而生它是一个用于构建有状态、多智能体AI应用的开源框架采用图Graph结构来编排复杂工作流为开发者提供了更强大和灵活的工具。本文将基于LangGraph的官方文档和实践经验从基础概念到核心机制再到实际应用案例全面深入地解析LangGraph的技术原理和应用方法帮助开发者掌握这一强大的AI应用开发框架。一、LangGraph基础概览1.1 核心理念图驱动的工作流LangGraph将AI应用的逻辑抽象为一张由节点Nodes和边Edges构成的状态图。下图清晰展示了这种结构与执行方式在LangGraph的图结构中每个组件都有明确的职责组件定义功能示例节点Nodes独立的执行单元处理数据执行操作调用LLM、执行工具函数、查询数据库边Edges流程控制逻辑决定下一步执行哪个节点固定连接、条件分支、动态路由状态State共享的数据结构保存上下文信息消息历史、查询结果、中间状态1.2 主要特点与优势LangGraph相比传统的AI应用开发框架具有以下显著特点特性说明应用场景循环与条件分支支持智能体的思考-行动循环动态改变执行路径需要多轮决策的任务内置状态管理通过检查点自动持久化状态支持断点续执行长时间运行的应用人机协同可在流程中暂停并等待人工输入或审批高风险或需要把关的场景多智能体协作原生支持定义多个智能体编排协同工作复杂的团队协作任务可观测性与LangSmith集成提供可视化调试开发和调试阶段1.3 生态系统与使用方式LangGraph提供了灵活的集成路径开发者可以根据需求选择不同的使用方式使用方式特点适用场景独立使用作为底层框架自定义智能体系统有特殊需求的开发者与LangChain集成无缝兼容LangChain生态中的模型、工具已熟悉LangChain的开发者高级组件使用预构建的智能体模式快速开发常见应用商业平台提供部署、托管、监控等生产级功能企业用户1.4 LangGraph与LangChain的区别特性LangChainLangGraph核心抽象链Chain线性编排状态图Stateful Graph带循环和分支适用场景RAG、文档处理、一次性问答智能体、多轮对话、自动化流程、多智能体系统状态管理通过Memory组件传递上下文内置的、中心化的状态管理二、LangGraph图的关键概念2.1 智能体Agent智能体是LangGraph中最基础也是最重要的概念之一。工作原理特性说明核心机制LLM基于环境反馈循环使用工具实现复杂度相对简单但需要清晰的工具集设计适用场景开放性问题无法预测所需步骤数量关键要求需要良好的工具集和文档设计2.2 工作流Workflow2.2.1 并行化Parallelization并行化是指让多个LLMs同时处理一个任务并通过编程方式对它们的输出结果进行聚合。两种主要变体类型说明示例分段Sectioning将任务分解成多个相互独立的子任务生成报告的不同部分摘要、方法、结果投票Voting对同一个任务运行多次综合多个结果多个LLMs进行情感分析投票确定结果并行化的适用场景场景优势提高速度显著缩短处理时间提高置信度综合多个结果提高可靠性复杂任务处理每个LLM专注于特定方面2.2.2 路由Router路由的工作是将输入进行分类并将其导向到相应的后续任务。路由的作用说明输入分类与任务导向根据输入内容导向合适的处理流程分离关注点每个任务专注于特定领域避免性能受损不同输入类型分配给最适合的处理任务2.2.3 协调者Orchestrator在协调者-工作者模式中一个协调者将任务分解并将每个子任务分配给工作者。组件职责协调者动态分解任务分配子任务综合结果工作者处理分配的特定子任务与并行化模式的区别特性并行化模式协调者-工作者模式子任务定义预先定义好的动态生成的灵活性相对固定高度灵活适用场景已知结构的任务无法预测子任务的复杂任务2.2.4 评估者-优化器Evaluator-optimizer适用场景说明明确的评估标准存在清晰的质量衡量标准迭代改进的价值每次调整都能显著提升结果人类反馈有效LLM能够理解并应用人类反馈LLM反馈能力LLM能够提供有效的评估和改进建议三、深度理解LangGraph核心Graph3.1 Graph的基本组成Graph是LangGraph的基本构建模块它是一个有向无环图DAG用于描述任务之间的依赖关系。元素定义说明State状态共享的数据结构在整个应用当中共享包含所有节点的状态Node节点处理数据的单元Python函数以State为输入返回更新后的StateEdge边依赖关系Python函数根据当前State决定下一步执行哪个Node3.2 State状态3.2.1 State的定义方式使用TypedDict定义from typing import TypedDict ​ class OverallState(TypedDict): foo: str user_input: str graph_output: str使用Pydantic BaseModel定义from pydantic import BaseModel ​ class OverallState(BaseModel): a: str定义方式特点适用场景TypedDict轻量级类型提示简单状态结构Pydantic BaseModel支持验证、序列化需要数据验证的场景3.2.2 State的更新机制更新策略说明示例默认替换直接替换字段值return {a: goodbye}合并操作使用add_messages、add等操作messages: Annotated[list[AnyMessage], add_messages]MessagesState便捷使用from langgraph.graph import MessagesState ​ # 直接使用无需手动定义 state MessagesState()3.3 Node节点3.3.1 Node的基本定义def node_1(state: InputState) - OverallState: return {foo: state[user_input] 长沙市}特性说明输入State对象必选 config可选输出更新后的State对象命名唯一字符串未指定时使用函数名3.3.2 Node的高级特性特性说明示例缓存机制相同输入优先从缓存获取结果cache_policyCachePolicy(ttl5)重试机制失败时自动重试retryRetryPolicy(max_attempts4)缓存示例from langgraph.types import CachePolicy from langgraph.cache.memory import InMemoryCache ​ builder.add_node(node1, node_1, cache_policyCachePolicy(ttl5)) graph builder.compile(cacheInMemoryCache()) ​ # 第一次调用执行节点逻辑 graph.invoke({number: 5}, config{configurable: {user_id: 123}}) ​ # 第二次调用从缓存获取 graph.invoke({number: 5}, config{configurable: {user_id: 456}})3.4 Edge边3.4.1 边的类型边类型说明示例普通边固定连接两个节点builder.add_edge(node_1, node_2)条件边根据状态动态选择下一个节点builder.add_conditional_edges(START, routing_func)Send动态路由一个节点同时路由到多个节点Send(node1, {msg: message})3.4.2 普通边和EntryPointfrom langgraph.constants import START, END ​ builder.add_edge(START, node_1) builder.add_edge(node_1, node_2) builder.add_edge(node_2, END)3.4.3 条件边def routing_func(state: State) - str: if state[number] 5: return node1 else: return END ​ builder.add_conditional_edges(START, routing_func)使用映射的方式def routing_func(state: State) - bool: return state[number] 5 ​ builder.add_conditional_edges( START, routing_func, {True: node_a, False: node_b} )3.4.4 Send动态路由from langgraph.types import Send ​ def routing_func(state: State): result [] for message in state[messages]: result.append(Send(node1, {msg: message})) return result ​ builder.add_conditional_edges(START, routing_func)3.5 子图的使用创建子图# 子图构建 subgraph_builder StateGraph(State) subgraph_builder.add_node(sub_node, sub_node_function) subgraph_builder.add_edge(START, sub_node) subgraph_builder.add_edge(sub_node, END) subgraph subgraph_builder.compile() ​ # 父图构建 builder StateGraph(State) builder.add_node(subgraph_node, subgraph) builder.add_edge(START, subgraph_node) builder.add_edge(subgraph_node, END) graph builder.compile()3.6 图的Stream支持Stream模式说明适用场景values流式传输状态的完整值需要查看每步的完整状态updates流式传输更新内容只关心状态变化custom流式传输自定义数据调试和监控messages流式传输LLM的Token实时显示LLM响应debug传输尽可能多的信息深度调试Custom Stream示例from langgraph.config import get_stream_writer ​ def node(state: State): writer get_stream_writer() writer({自定义key: 在节点内返回自定义信息}) return {answer: some data} ​ for chunk in graph.stream(inputs, stream_modecustom): print(chunk)四、LangGraph实战SQLAgent实现4.1 SQL应用场景场景说明自然语言查询用户用自然语言查询数据库数据分析自动生成SQL并执行分析报表生成根据需求自动生成报表4.2 langchain_community的使用4.2.1 安装pip install langchain-community pip install langchain-community[sql]4.2.2 基本使用from langchain_community.utilities import SQLDatabase from langchain_community.agent_toolkits import SQLDatabaseToolkit ​ db SQLDatabase.from_uri(sqlite:///Chinook.db) toolkit SQLDatabaseToolkit(dbdb, llmllm) tools toolkit.get_tools()4.2.3 主要功能模块模块功能utilities实用工具类如SQLDatabaseagent_toolkits智能体工具包如SQLDatabaseToolkitllms各种LLM集成chat_models聊天模型集成4.3 SQL智能体的创建完整示例import asyncio from langchain.agents import create_agent from langchain.chat_models import init_chat_model from langchain_community.utilities import SQLDatabase from langchain_community.agent_toolkits import SQLDatabaseToolkit ​ llm init_chat_model(deepseek:deepseek-chat) db SQLDatabase.from_uri(sqlite:///Chinook.db) toolkit SQLDatabaseToolkit(dbdb, llmllm) tools toolkit.get_tools() ​ system_prompt 你是SQL数据库智能体根据问题生成正确的{dialect}查询语句。 限制查询结果最多{top_k}条只查询相关列。 严禁执行INSERT、UPDATE、DELETE等操作。 开始时必须查看表结构。 .format(dialectdb.dialect, top_k10) ​ agent create_agent(llm, tools, system_promptsystem_prompt) ​ async def main(): async for step in agent.astream( {messages: [{role: user, content: 哪种音乐类型的曲目平均时长最长}]}, stream_modevalues ): step[messages][-1].pretty_print() ​ asyncio.run(main())4.4 SQL工具介绍工具功能sql_db_query执行SQL查询语句sql_db_schema获取数据库表结构信息sql_db_list_tables获取所有可用表名sql_db_query_checker安全验证SQL查询4.5 MCP Server Chart集成集成示例import asyncio from langchain_mcp_adapters.client import MultiServerMCPClient ​ mcp_client MultiServerMCPClient({ mcp-server-chart: { command: npx, args: [-y, antv/mcp-server-chart], transport: stdio } }) ​ mcp_tools asyncio.run(mcp_client.get_tools()) agent create_agent(llm, tools mcp_tools, system_promptsystem_prompt)MCP特点特性说明MCP协议支持提供MCP适配器功能多服务器连接支持连接多个MCP服务器工具集成将外部工具集成到智能体图表生成支持数据可视化五、LangGraph本地服务器与UI界面5.1 配置langgraph.json{ $schema: https://langgra.ph/schema.json, dependencies: [.], graphs: { agent: ./main.py:agent, sql_agent: ./example/pro2/sql_agent.py:agent }, env: .env, image_distro: wolfi }配置项说明$schemaSchema定义dependencies依赖关系graphs图的入口点env环境变量文件image_distro镜像发行版5.2 启动服务器langgraph dev5.3 UI界面功能功能说明实时聊天交互与智能体实时对话工具调用可视化显示工具调用过程状态追踪追踪状态变化调试功能详细的调试信息

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询