基本信息
- 来源: juejin
- 原始来源: https://juejin.cn/post/7624461069679738889
来源摘要/节选
公开展示已截断至最多 800 个字符;请访问原始来源查看完整上下文。
很多人第一次接触 LangChain,会把它理解成一组“帮你调模型”的工具类: PromptTemplate 负责拼 prompt, ChatOpenAI 负责调模型, OutputParser 负责解析结果。这样理解没错,但只对了一半。 真正到了工程里,问题很快就不是“怎么调一次模型”,而是“怎么把一条会持续演化的 AI 流程组织好”。 比如一个看起来简单的企业问答助手,往往很快就会长成这样: 先清洗用户问题 再决定这是闲聊、任务型问题,还是知识问答 不同类型走不同 prompt 有的分支要结构化输出 有的分支要保留上下文 有的步骤能并行,有的步骤必须串行 这时候如果还沿用最原始的命令式写法,代码通常不会因为“模型调用”而失控,而是会因为“流程编排”而失控。 这正是 Runnable 的价值所在。 这篇文章的核心结论只有一句: Runnable 的真正意义,不是少写几行 LangChain 代码,而是把 AI 应用从一堆分散的调用,提升成一条可组合、可复用、可切换执行模式的数据流。 理解了这一点,你才会知道为什么 LCEL 值得学,也才知道什么时候该用 RunnableSequence 、什么时候该分支、什么时候该并行、什么时候该保留原始输入。 为什么 AI 应用一复杂,命令式写法就开始失控 先看最常见的一类代码:模板格式化一次,模型调用一次,解析一次。 const formattedPrompt = await prompt. format (input); const rawResponse = await model. invoke (formattedPrompt); const result = await parser. invoke (rawResponse); 这段代码的问题,不在于它不能跑,而在于它只适合“单段流程、单次调用、无分支、无复用”的场景。…
来源说明
当前只保存了公开页面节选,不代表原文全文。请以原始来源为准。
本页只呈现已做哈希绑定的来源证据,不包含基于旧正文或缺失原文的扩展推断。