96SEO 2026-06-14 17:57 19
'''将子图作为节点添加到父图'''from langgraph.graph import StateGraph, START, ENDfrom typing import TypedDict# . 状态定义class ParentState: parentmessages: list # 与子图共享数据class SubgraphState: parentmessages: list # 与父图共享数据 submessage: str # 子图私有数据# . 定义子图节点函数def subgraphnode -> SubgraphState: """子图节点处理逻辑:修改共享数据+设置私有数据""" # 向共享的parentmessages中添加内容 state.appendO") # 设置子图私有数据 state = "subgraph private message" #print return state# . 定义父图节点函数def parentnode -> ParentState: """父图初始节点:初始化共享数据""" if not state.get: state = state.append return state# . 构建子图def buildsubgraph -> StateGraph: """构建并返回编译后的子图""" subbuilder = StateGraph subbuilder.addnode subbuilder.addedge subbuilder.addedge # 子图执行完指向结束 return subbuilder.compile# . 构建父图def buildparentgraph -> StateGraph: """构建并返回编译后的父图""" builder = StateGraph # 添加父图初始节点 builder.addnode # 将子图作为节点添加到父图,添加子图添加为父图的节点 builder.addnode # 父图中存储的是编译好的SubGraph对象,而不是SubGraphState的实例。 这需要注意。 所以这里直接使用编译好的SubGraph对象。 # 父图执行流程:START -> parent_node -> subgraph_node -> END
\tRu果目标是把一个编译好的SubGraph作为父节点的子节点,那么需要进行一些额外的处理。 比如在build\_parent\_graph中,需要先创建一个空的ParentState,然后通过一些逻辑将编译好的compiled\_subgraph的信息填充到这个空的ParentState中。 但在这个例子中,我们选择直接把编译好的SubGraph作为一个独立的节点添加到父图中。
\t实际上,LangGraphgeng倾向于使用代理节点来连接不同的状态空间,而不是直接将一个状态作为另一个状态的子节点。 这种设计Ke以geng灵活地处理不同类型和结构的状态空间之间的交互关系。
\t比如说我们Ke以创建一个代理节点,这个代理节点的输入是父节点的当前状态,输出是调用了子图中特定节点的响应结果。 然后这个代理节点就Ke以被其他状态所调用。
\t这样的话,我们Ke以将整个系统设计成一个模块化的组件集合,每个组件负责处理特定的任务。 这种设计Ke以提高系统的可维护性和可
性。
\t另外一种思路是使用多层级的状态空间来表示不同的任务流程。 例如我们Ke以创建一个包含多个任务的任务调度器,每个任务dou对应一个特定的状态空间。 然后任务调度器Ke以根据当前的状态和任务的优先级来决定下一个要执行的任务。
\t这种多层级状态空间的表示方法Ke以geng好地组织复杂的系统流程。
\t当然了在实际应用中还需要根据具体的需求进行调整和优化。
\t总而言之,LangGraph提供了一个强大的工具集来构建复杂的、跨领域的应用。 通过使用代理节点、多层级状态空间等技术手段,开发者Ke以灵活地组合不同的组件来实现各种各样的功Neng。
\t对于那些想要了解geng多关于LangGraph的信息的人来说我强烈建议他们查阅官方文档和示例代码。
核心逻辑解释

核心方案:父子图状态不同时通过父图的代理节点而非直接添加子图节点,手动完成「父状态→子输入」转换、调用子图、「子输出→父状态」映射;关键要点:代理节点必须接收父图状态、返回父图状态、调用编译器生成的SubGraph对象;灵活性:该模式可适配任意结构的父子图状态。
代理节点核心作用
步骤1:从 父图中获取当前的状态信息 。 步骤2:将提取到的信息转换为适用于 子图中分析逻辑 的输入格式 。 步骤3:手动调用编译好的 子 图 ` 方法)。 步骤4:从 子 图获取结果 。 步骤5:将 子 图的结果映射回 父 图的状态 。
'''从点调用到组, 本案例是 LangGraph 中跨组的状态交互的标准Zuo法。核心逻辑解释. 状态结构差异设计父组状态:仅包含 user_query和 final_answer,聚焦业务层;组态:包含 analysis_input、analysis_result、intermediate_steps,聚焦分析层;两者无重叠字段,完全独立,必须通过代理点手动转换。. 代理点核心作用 步骤1:从组状→组态输入,提取组状的user_query,转换为组态需要的analysis_input 步骤2:手动调用编译后的组态 步骤3:组态输出→组状状态核心方案: 同上, 父副树不同时, 通过副树的点而非直接增加副树点, 手动完成「副状→副输入」转换、调用副树、「副输出→副状状态」映射;关键要点: 代理点必须接收副树状表态、返回副树表态、调用编译器生成的SubGroup对象;灵活性: 该模式可适配任意结构的副树表态,只需在代理点中自定义转换逻辑'''from langgraph.graph import StateGraph, START, ENDfrom typing import TypedDict===================== . 定义不同结构的父祖表态 ======================# 父祖表态:class ParentState:
user_query::用户输入的查询
final_answer::由祖表处理后的Zui终结果
祖表表态:class SubgroupState:
analysis_input::分析输入
analysis_result::分析结果
intermediate_steps::中间步骤 ===================== . 定义小组核心逻辑 ======================def subgroup_analysis_node -> SubgroupState:
# 模拟小组的分析过程
query = state
state =
state = f"针对「{query}」的分析结果: 这是小组处理后的内容"
return statedef build\ subgroups -> StateGraph:
subgroup\ builder = StateGraph
subgroup\ builder.add\ node
subgroup\ builder.add\ edge
subgroup\ builder.add\ edge
return subgroup\ builder.compile
'''从点调用到组本案例是 LangGraph 中跨组成的标准Zuo法。核心逻辑解释. '''from langgraph.graph import StateGraph, START, ENDfrom typing import TypedDict
class ParentState:
userQuery: str
finalAnswer: str | None
class SubgroupState:
analysisInput: str
analysisResult: str
intermediateSteps: list
def subgraphAnalysisNode-> SubgroupState :
query : str = state
state.append
state.append
state.append
state = '针对' + query + '的分析结果'
return state
def buildSubgraph -> StateGraph :
subBuilder= StateGraph
subBuilder.addNode
subBuilder.addNode
subBuilder.addEdge
subBuilder.addEdge
return subBuilder
def buildParentGroup -> StateGroup :
builder= StateGroup
builder . addNode
builder . addEdge
return Builder
def main:
initialStates={"userQuery": "请对Python 代码进行简单的审查"}
parentGroup= buildParentGroup
finalStates= parentGroup.invoke
print
print
if name == "main":
main
`
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback