https://docs.langchain.com/oss/python/langgraph/workflows-agentshttps://docs.langchain.com/oss/python/langgraph/workflows-agents

使用官网的workFlows+Agents修改的一个生成不同平台文案的例子,通过用户输入的不同内容,自行判断调用哪个分支,生成对应的文案,主要是学习和记录,我用的是阿里百炼的模型,直接上代码

import os
from typing_extensions import Literal
from langchain.messages import HumanMessage, SystemMessage
from langchain_openai import ChatOpenAI
from typing_extensions import TypedDict
from langgraph.graph import StateGraph, START, END
from IPython.display import Image, display
from pydantic import BaseModel, Field
# Schema for structured output to use as routing logic
class Route(BaseModel):
    step: Literal["小红书", "朋友圈", "微博"] = Field(
        None, description="下一步进入路由处理"
    )

llm = ChatOpenAI(model="qwen3-max",base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",api_key=os.environ.get("API_KEY"))
# Augment the LLM with schema for structured output
router = llm.with_structured_output(Route)


# State
class State(TypedDict):
    input: str
    decision: str
    output: str


# Nodes
def llm_call_1(state: State):
    """Write a 小红书"""

    result = llm.invoke(state["input"])
    return {"output": result.content}


def llm_call_2(state: State):
    """Write a 朋友圈"""

    result = llm.invoke(state["input"])
    return {"output": result.content}


def llm_call_3(state: State):
    """Write a 微博"""

    result = llm.invoke(state["input"])
    return {"output": result.content}


def llm_call_router(state: State):
    """Route the input to the appropriate node"""

    # Run the augmented LLM with structured output to serve as routing logic
    decision = router.invoke(
        [
            SystemMessage(
                content="根据客户输入的内容判断流程走向"
            ),
            HumanMessage(content=state["input"]),
        ]
    )

    return {"decision": decision.step}


# Conditional edge function to route to the appropriate node
def route_decision(state: State):
    # Return the node name you want to visit next
    if state["decision"] == "小红书":
        print("小红书")
        return "llm_call_1"
    elif state["decision"] == "朋友圈":
        print("朋友圈")
        return "llm_call_2"
    elif state["decision"] == "微博":
        print("微博")
        return "llm_call_3"


# Build workflow
router_builder = StateGraph(State)

# Add nodes
router_builder.add_node("llm_call_1", llm_call_1)
router_builder.add_node("llm_call_2", llm_call_2)
router_builder.add_node("llm_call_3", llm_call_3)
router_builder.add_node("llm_call_router", llm_call_router)

# Add edges to connect nodes
router_builder.add_edge(START, "llm_call_router")
router_builder.add_conditional_edges(
    "llm_call_router",
    route_decision,
    {  # Name returned by route_decision : Name of next node to visit
        "llm_call_1": "llm_call_1",
        "llm_call_2": "llm_call_2",
        "llm_call_3": "llm_call_3",
    },
)
router_builder.add_edge("llm_call_1", END)
router_builder.add_edge("llm_call_2", END)
router_builder.add_edge("llm_call_3", END)

# Compile workflow
router_workflow = router_builder.compile()

# Show the workflow
display(Image(router_workflow.get_graph().draw_mermaid_png()))

# Invoke
state = router_workflow.invoke({"input": "写一个小红书的推文关于马年大吉的短文"})
print(state["output"])

后台输出:

<IPython.core.display.Image object>
小红书
【马年大吉🐎|奔腾好运一整年!】

2026年就是下一个马年啦~  
作为十二生肖里最活力四射、自由奔放的代表,  
属马的宝子们今年/明年注定要“马”上起飞!✨

🔥 马年关键词:  
✅ 精力充沛 ✅ 事业高升 ✅ 贵人相助 ✅ 桃花旺盛  

不管是本命年还是非本命年,  
戴上一匹小马挂饰、穿点红色,  
都能沾沾“龙马精神”的好运气!  

🌟 小Tips:  
- 本命年记得穿红内衣/袜子辟邪  
- 办公桌放一匹铜马摆件,助旺事业运  
- 多去户外跑跑跳跳,顺应马的自由能量  

愿你如骏马奔腾,一路向前不回头!  
评论区留下你的生肖👇  
看看谁和马最配?💕  

#马年大吉 #本命年穿搭 #生肖运势 #好运加持 #小红书玄学

挺有意思!!!

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐