Graph Engineering:Python + LangGraph + Claude Code

从 Prompt 到 Graph AI 驱动开发大致走过几条主线:Prompt Engineering 解决「怎么说清楚」;Context Engineering(含 RAG)解决「给模型看什么」;Loop Engineering 解决「让 Agent 自我修正」——给一个任务,改代码、跑测试,失败了再继续修。 复杂业务里,单 Agent 的 Prompt Loop 很快会顶到天花板。Graph Engineering(图工程)把流程拆成有向图:节点专职分工,边负责确定性控制流,AI 只承担局部推理与代码生成。下面按「为什么需要 → 怎么划职责 → 怎么落地」写一版可落地的骨架。 不想额外起 Python 主控、只在 Claude Code 里管多阶段任务时,见 Graph Engineering:纯 Claude Code 实现。 为什么需要 Graph Engineering Loop Engineering 在「单任务、短轮次」时很好用。一旦任务变长、角色变多,常见会撞上三类问题。 上下文污染(Context Pollution) 循环次数上去后,会话里堆满历史报错、半成品 diff、无效尝试。模型要在噪声里找有效信号,表现会越来越差:重复改同一处、忽略刚写过的约束、或「修 A 弄坏 B」。根因往往不是模型突然变笨,而是上下文被污染了。 缺乏确定性控制(Nondeterminism) 若下一步完全由 LLM 在 Context 里自行决定,容易陷入死循环:同一失败路径反复尝试,或越改越散。控制流(何时重试、何时换策略、何时中止)若也交给模型,系统就缺少可预期的停机条件。 职责模糊 让同一个 Agent 同时做架构规划、写前后端、跑单测、做 Code Review,等于把多种能力边界揉进一次长会话。结果常常是:规划被实现细节冲淡,实现被 review 口径扯偏,测试结论又被前序噪声干扰。 Graph Engineering 的应对方式很直接:用有向图把复杂流程解耦为专职节点(Nodes);把控制流交还给确定性的代码(Edges);只把局部推理与代码生成交给 AI。 Graph Engineering 在说什么 可以把它看成三层分工: ...

Created 24246-07-24 · Updated 30306-07-30 · 2 min · 330 words · -

LangSmith - LLM 应用的可观测性平台

什么是 LangSmith LangSmith 是 LangChain 团队推出的 LLM 应用可观测性与评估平台,用于追踪(trace)、调试、测试和监控基于 LLM 的应用。它不要求应用一定使用 LangChain 或 LangGraph 构建——任何调用 LLM 的代码都可以接入 LangSmith,但与 LangChain / LangGraph 的集成是开箱即用的。 核心定位:LLM 应用的"生产环境可观测性 + 离线评估"工具,解决 LLM 应用调试困难、行为不透明、质量难以量化的问题。 官方仓库 / 产品:langchain-ai/langsmith-sdk(SDK 开源,平台本身为托管 SaaS,也提供自托管方案)。 为什么需要 LangSmith 传统软件的日志和监控体系(APM、ELK 等)不足以覆盖 LLM 应用的调试需求: 多步骤链路不透明:一次 Agent 调用可能包含多次 LLM 请求、工具调用、检索操作,普通日志难以还原完整调用树 Prompt 调试依赖人工:Prompt 的微小改动可能显著影响输出质量,缺乏系统化的对比手段 输出质量难以量化:LLM 输出是非确定性的自然语言,传统的断言测试不适用 成本和延迟不可见:Token 消耗、模型延迟分散在各次调用中,难以聚合分析 LangSmith 针对这些痛点提供了追踪、数据集管理、评估和监控能力。 核心功能 1. Tracing(追踪) 记录一次请求内所有 LLM 调用、工具调用、检索操作的完整调用树,包括输入、输出、耗时、Token 用量。 import os os.environ["LANGCHAIN_TRACING_V2"] = "true" os.environ["LANGCHAIN_API_KEY"] = "your-api-key" os.environ["LANGCHAIN_PROJECT"] = "my-project" # LangChain / LangGraph applications are traced automatically # once the environment variables above are set from langchain_openai import ChatOpenAI llm = ChatOpenAI(model="gpt-4") result = llm.invoke("Explain what LangSmith does") 对于不使用 LangChain 的代码,可以用 @traceable 装饰器手动接入: ...

Created 26266-07-26 · Updated 26266-07-26 · 2 min · 345 words · -