AI图鉴

AI图鉴首页 › AI 资讯 › DeepSeek写Langgraph就是个大傻逼,一本正经胡说八道

DeepSeek写Langgraph就是个大傻逼,一本正经胡说八道

来源:掘金 · 发布时间:10-31 · 由 AI图鉴每小时自动聚合

我今天终于逮到了现行,DeepSeek一本正经的胡说八道,之前让DeepSeek写前端或者后端代码感觉还挺好的,生成代码基本复制过去就能用,讨论好前后端架构设计后,让他直接根据讨论好的架构设计直接生成

我今天终于逮到了现行,DeepSeek一本正经的胡说八道,之前让DeepSeek写前端或者后端代码感觉还挺好的,生成代码基本复制过去就能用,讨论好前后端架构设计后,让他直接根据讨论好的架构设计直接生成代码,基本复制过去就能跑通,我也是很赞赏他的,但是,让他排查Langgraph的代码就完全不懂装懂,一本正经的胡说八道,让我在错误的道理上越走越远。 我写个很小的场景,Langgraph流式输出信息,

stream_mode 只有一个值

for metadata,chunk in graph.stream(

Command(resume=val),

config=config,

stream_mode="messages"

):

if isinstance(chunk, AIMessageChunk) and chunk.content:

print(chunk.content, end="", flush=True)

stream_mode 有多个值

for mode, data in graph.stream(

Command(resume=input_value),

config=config,

stream_mode=["messages","updates","custom"],

):

if mode == "messages":

# LLM 的 Token 流

token, metadata = data

print(token.content, end="", flush=True)

elif mode == "updates":

# 节点完成后的状态增量

rprint(f"\n[Update] 节点完成: {list(data.keys())}")

rprint("uu",data)

elif mode == "custom":

rprint("cc",data)

# 你在节点里手动发出的进度事件

rprint(f"\n[Custom] {data['msg']}")

stream_mode只有一个值时,解构出两个值 metadata,chunk ,生成的内容就在chunk.content里,但是有多个值时,解构出第一个值时mode模式名称,第二个值还能再解构出 token, metadata两个值,生成的内容在token.content里。

但是我不小心把多值模式下的两个值位置搞反了,我就无法输出打字效果,我就问DeepSeek,它一本正经的说出很多种可能原因,我就跟着在它的坑里翻滚了好久出不来

没有办法我只能翻出之前写的代码,一行行比对,才找出这个小问题,我重开一个对话,把同样的问题问他,它还是绕不出来。

所以得出结论,DeepSeek写Langgraph能力很差,小伙伴们一定不能全信它

最后贴上代码

from langchain_core.messages import HumanMessage, AIMessageChunk

from langchain.chat_models import init_chat_model

from langgraph.checkpoint.memory import InMemorySaver

from langgraph.config import get_stream_writer

from langgraph.graph import StateGraph, START, END, MessagesState

from dotenv import load_dotenv

from langgraph.types import interrupt, Command

load_dotenv(override=True)

from rich import print as rprint

# 1. 初始化 DeepSeek 模型(按你的配置)

model = init_chat_model(

model="deepseek-chat",

extra_body={"thinking": {"type": "disabled"}},

)

# 2. 定义图状态

class State(MessagesState):

text: str

# 3. 节点函数:内部发射 custom 进度事件,同时调用模型产生 messages 流

def generate_node(state: State):

writer = get_stream_writer()

writer({"type": "progress", "stage": "start", "msg": "开始生成内容..."})

val=interrupt("请输入")

# 调用 DeepSeek 模型(messages 模式会自动流式输出这里的 Token)

response = model.invoke(

[HumanMessage(val)]

)

writer({"type": "progress", "stage": "finish", "msg": "生成完成"})

return {"messages": [response]}

# 4. 构建图

builder = StateGraph(State)

builder.add_node("generate", generate_node)

builder.add_edge(START, "generate")

builder.add_edge("generate", END)

checkpointer=InMemorySaver()

graph = builder.compile(checkpointer=checkpointer)

config = {

"configurable": {"thread_id": "966347"}

}

graph.invoke({},config=config,)

# 5. 同时使用三种流模式

input_value= input("请输入")

for mode, data in graph.stream(

Command(resume=input_value),

config=config,

stream_mode=["messages","updates","custom"],

):

if mode == "messages":

# LLM 的 Token 流

token, metadata = data

print(token.content, end="", flush=True)

elif mode == "updates":

# 节点完成后的状态增量

rprint(f"\n[Update] 节点完成: {list(data.keys())}")

rprint("uu",data)

elif mode == "custom":

rprint("cc",data)

# 你在节点里手动发出的进度事件

rprint(f"\n[Custom] {data['msg']}")

本文由 AI图鉴自动抓取并翻译,版权归原作者所有;如需查看原文请点下方链接。

相关 AI 工具

相关免费羊毛

同源资讯

阅读原文(juejin.cn)

标题、摘要与正文均来自该信源的公开页面,版权归原作者所有;本站自动聚合与翻译,仅作出处跳转。

← 返回 AI 资讯列表AI工具图鉴首页

返回 AI图鉴首页 · 提交工具 · 商务合作 · 关于本站 · 603 款 AI 工具分类导航 · 每日 AI 热门项目与动态