langGraph如何添加条件边?

条件边如何传值?

add_conditional_edges("开始节点","判断节点",["节点A","节点B"])
例如:
add_conditional_edges("现在我要走还是要停?","查看现在红绿灯情况",["红灯","黄灯","绿灯"])
add_conditional_edges("调用天气查看多少度","这个温度适合和谁喝下午茶?",["和小莉喝","和小塔喝","不喝"])

个人理解

按照我的世界理解,节点就是女仆,整个工作流就是我的生活,我需要告诉工人谁先谁后。
但是这个时候我有一个新的需求,我需要根据天气的情况,和不同的女仆喝下午茶,那么我要如何操作?

代码展示

from langchain_core.messages import *
from langgraph.graph import StateGraph
from langgraph.constants import START, END

class WeatherState(TypedDict):
    temperature: int
    recommendation: str

# 传入城市名称,获取城市当前温度,以摄氏度为单位
def check_temperature( weather : WeatherState )->dict:
    #这里可以调用真的天气api
    return{ "temperature":25}

# 传入当前温度,返回天气
def get_clothes_by_temperature( state : WeatherState )->Literal["cold","warm","hot"]:
    temp=state["temperature"]
    if temp>30:
        return "hot"
    elif temp>20:
        return "warm"
    else:
        return "cold"

#如果是温暖的天,和小莉喝下午茶
def recommend_warm(state:WeatherState)->dict:
    return{ "recommendation":"和小莉喝下午茶"}

#如果是很冷的天,和小塔喝下午茶
def recommend_hot(state:WeatherState)->dict:
    return{ "recommendation":"和小塔喝下午茶"}

#如果是很热的天,不喝下午茶
def recommend_cold(state:WeatherState)->dict:
    return{ "recommendation":"不喝下午茶"}

graph=StateGraph(WeatherState)

graph.add_node("check_temperature",check_temperature)
graph.add_node("get_clothes_by_temperature",get_clothes_by_temperature)
graph.add_node( "cold",recommend_cold)
graph.add_node( "warm",recommend_warm)
graph.add_node( "hot",recommend_hot)

graph.add_edge(START,"check_temperature")
graph.add_conditional_edges("check_temperature",get_clothes_by_temperature,["cold","warm","hot"])

graph.add_edge("cold",END)
graph.add_edge("warm",END)
graph.add_edge("hot",END)

app=graph.compile()

if __name__ == '__main__':
    result=app.invoke(
        {
            "myMessage":[HumanMessage(content="请问我今天应该和哪个女仆喝下午茶?")],
            "step":0
        }
    )
    print("执事回答我:", result)

注意事项和使用总结

条件判断返回的cold字符串需要在图中添加节点,且节点名称为cold。这样相当于告诉图,如果返回是"cold",就走"cold"节点

posted @ 2026-05-13 06:13  Alfred404  阅读(21)  评论(0)    收藏  举报