当前位置: 首页 > news >正文

宁波江北区网站推广联系方式b2b电子商务网

宁波江北区网站推广联系方式,b2b电子商务网,软件开发工程师需要什么证书,做网站是先买域名这一节我们讲讲langgraph图的递归限制 Recursion Limit,递归限制设置了图在单次执行过程中可以执行的最大超级步骤数。一旦达到该限制,LangGraph 将引发 GraphRecursionError 错误。默认情况下,此值设置为 25 步。递归限制可以在运行时为任何…

这一节我们讲讲langgraph图的递归限制 Recursion Limit,递归限制设置了图在单次执行过程中可以执行的最大超级步骤数。一旦达到该限制,LangGraph 将引发 GraphRecursionError 错误。默认情况下,此值设置为 25 步。递归限制可以在运行时为任何图进行设置,并通过配置字典传递给 .invoke 或 .stream 方法。需要注意的是,recursion_limit 是一个独立的配置键,不应像其他用户定义的配置那样放在 configurable 键内部。下面是一个示例:

graph.invoke(inputs, config={"recursion_limit": 5, "configurable":{"llm": "anthropic"}})

设置图形递归限制可以帮助您控制图形运行的时间长度,但如果达到递归限制,图形将返回一个错误——这可能并不适用于所有使用场景。相反,我们可能希望在达到递归限制之前返回状态值。下面我们将展示如何做到这一点。
我们将定义一个虚拟图,它总是会达到递归限制。首先,我们将在不返回状态的情况下实现它,并展示它确实达到了递归限制。这个图基于ReAct架构,但实际上并不进行决策和采取行动,而是永远循环下去。

from typing_extensions import TypedDict
from langgraph.graph import StateGraph
from langgraph.graph import START, ENDclass State(TypedDict):value: straction_result: strdef router(state: State):if state["value"] == "end":return ENDelse:return "action"def decision_node(state):return {"value": "keep going!"}def action_node(state: State):# Do your action here ...return {"action_result": "what a great result!"}workflow = StateGraph(State)workflow.add_node("decision", decision_node)
workflow.add_node("action", action_node)
workflow.add_edge(START, "decision")
workflow.add_conditional_edges("decision", router, ["action", END])
workflow.add_edge("action", "decision")
app = workflow.compile()
from IPython.display import Image, displaydisplay(Image(app.get_graph().draw_mermaid_png()))

下面这是我们的图形
在这里插入图片描述
这里我们验证一下是否能到达默认的递归限制

from langgraph.errors import GraphRecursionErrortry:app.invoke({"value": "hi!"})
except GraphRecursionError:print("Recursion Error")

到达了递归限制25次,成功了返回了错

Recursion Error

带回状态

为了避免达到递归限制,我们可以在状态中引入一个新的键,称为 remaining_steps 。它将跟踪到达递归限制前剩余的步骤数。然后,我们可以检查 remaining_steps 的值来决定是否应终止图执行,并在不引发递归错误的情况下将状态返回给用户。
为了实现这一点,我们将使用一个特殊的 RemainingSteps 注解。实际上,它创建了一个特殊的 ManagedValue 通道——这是一个状态通道,仅在图运行期间存在,并在其结束后消失。
由于我们的动作节点(action node)总是会至少向图中引入两个额外的步骤(因为动作节点总是在之后调用决策节点),我们将使用这个通道来检查我们是否距离限制仅剩两步之内。

from typing_extensions import TypedDict
from langgraph.graph import StateGraph
from typing import Annotatedfrom langgraph.managed.is_last_step import RemainingStepsclass State(TypedDict):value: straction_result: strremaining_steps: RemainingStepsdef router(state: State):# Force the agent to endif state["remaining_steps"] <= 2:return ENDif state["value"] == "end":return ENDelse:return "action"def decision_node(state):return {"value": "keep going!"}def action_node(state: State):# Do your action here ...return {"action_result": "what a great result!"}workflow = StateGraph(State)
workflow.add_node("decision", decision_node)
workflow.add_node("action", action_node)
workflow.add_edge(START, "decision")
workflow.add_conditional_edges("decision", router, ["action", END])
workflow.add_edge("action", "decision")
app = workflow.compile()

图形还是那个图形,现在,当我们运行这个 graph 时,应该不会收到任何错误,而是会在达到递归限制之前获取状态的最后一个值。

app.invoke({"value": "hi!"})

得到结果

{'value': 'keep going!', 'action_result': 'what a great result!'}

是不是跟我们预料的一模一样。其实上面这段代码本质上创建了一个循环工作流,可以根据剩余步骤数或特定条件动态决定何时终止,完整的演示了 LangGraph 的递归限制。

http://www.cadmedia.cn/news/9508.html

相关文章:

  • 杭州网站app开发公司泰安百度推广代理
  • 怎么做卡蜜网站seo投放营销
  • 电子杂志制作app百度seo排名
  • 网站建设的价钱百度关键词排名突然下降很多
  • 静态网页制作实训报告小时seo百度关键词点击器
  • 公司策划书模板广州seo营销培训
  • 网站怎么建设微信支付宝支付功能拼多多运营
  • 建立app上海专业的seo推广咨询电话
  • 养老网站建设合同2023免费b站推广大全
  • wordpress主题适应手机浏览器账号seo是什么
  • 网站建设系统哪家便宜些推广平台排行榜有哪些
  • 网站建设系统平台做网站用什么软件
  • 网站 建设 后台管理程序线上运营的5个步骤
  • 叶县红色家园网站建设福建百度代理公司
  • 新网站的建设工作你对网络营销的理解
  • 营销型网站建设设计百度推广服务费一年多少钱
  • 赣州做网站j2023年第三波疫情9月
  • 开源app开发工具长沙百度快速优化排名
  • 设计一个企业官网的栏目搜索引擎优化的意思
  • 建站工具上市推广网站有效的免费方法
  • 搜索引擎优化平台刷关键词排名seo软件
  • 郑州专业的网站建设公司哪家好怎样制作网页
  • 如何免费制作企业网站建网站需要什么条件
  • 网站建设yuue软文营销的技巧
  • 日照莒县网站建设兼职长沙企业网站设计
  • 网站的tdk指的是什么企业网站建设方案书
  • 教务网络管理系统网络seo培训
  • 国际公司英语翻译网站seo主要是做什么的
  • 医疗门户网站模板人力资源培训机构
  • 贵港市住房和城乡规划建设委员会网站百度app下载安装普通下载