大数跨境

转型 AI 开发——LangChain 实战第八课:为什么用 LangChain 做 AI 开发一定要用链?

转型 AI 开发——LangChain 实战第八课:为什么用 LangChain 做 AI 开发一定要用链? 玩AI的方可乐
2025-09-23
1
导读:手把手教学,10 分钟见结果

 

你好,我是方可乐。
一个正在深耕AI编程的30+的AI应用开发工程师。
用AI编程开发过Web应用网站,浏览器插件,

微信小程序,AI智能体,RAG系统。

注公众号&添加微信:ThinkFun666

领取【AI编程资料包】



 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

去年6月份,我做了一个连自己都觉得疯狂的决定:裸辞,All in AI。

现在已经换赛道成功,继续在工作中探索。


 


 

今天继续分享langchain的用法,今天讲一个比较核心的内容:链(Chain)


链解决了什么问题?

  1. 1. 避免手工拼接
  • • 如果不用链,你得写:Prompt → 调 LLM → 拿输出 → 再写 Prompt → 再调 LLM ……
  • • 麻烦、容易出错。
  • • 链自动把上一步的结果,交给下一步。
  1. 2. 流程化
  • • 应用不是“一问一答”,而是一个 多步骤的工作流
  • • 链就是把这些步骤串起来,像流水线一样。
  1. 3. 可扩展
  • • 你今天用简单链做周报。
  • • 明天可以加一个链:调用数据库 → 取数据 → 生成报告
  • • 不用推翻重写,直接在链里插步骤就行。

你让AI助手给你写周报,它要先总结,再列计划;
你做智能客服,它要先理解问题,再查知识库,再生成回复。

如果你没有链,你得一层层手写逻辑,把输入和输出自己拼来拼去,代码到最后又臭又长,可读性很差主要是。


下面上代码之前,先给大家说明一下。
在langchain中,有旧版和新版两种写法,简单地说,就是旧版好理解,新版更简洁。

下面我们具体来看看,老规矩,上代码。


新建文件08_chain_old.py


            
            
            
            
             
            
            
            
            import os
from
 dotenv import load_dotenv
from
 langchain_openai import ChatOpenAI
from
 langchain.prompts import PromptTemplate
from
 langchain.chains import LLMChain

load_dotenv()

# 初始化 LLM(旧版API示例,不使用流式输出)

llm = ChatOpenAI(
    model="deepseek-chat",
    base_url="https://api.deepseek.com/v1",
    api_key=os.getenv("deepseek_api_key")
)

#定义Prompt

combined_prompt = PromptTemplate.from_template(
    """
基于以下工作内容,完成两个任务,并直接输出:
1) 用一句话写工作总结。
2) 列出3-5条下周计划,用列表。
要求:简洁;不要提供多个版本;只输出正文。

工作内容:{work_content}
"""

)

#定义链

chain = LLMChain(llm=llm, prompt=combined_prompt, output_key="result")

work_content = "本周完成了LangChain学习,包括基础调用、记忆管理、流式输出等功能"
res = chain.invoke({"work_content": work_content})

print
("=== 最终结果 ===")
print
(res["result"])

新建文件08_chain_new.py


            
            
            
            
             
            
            
            
            import os
from
 dotenv import load_dotenv
from
 langchain_openai import ChatOpenAI
from
 langchain.prompts import ChatPromptTemplate
from
 langchain_core.output_parsers import StrOutputParser

load_dotenv()

# 初始化 LLM(新版LCEL示例,不使用流式输出)

llm = ChatOpenAI(
    model="deepseek-chat",
    base_url="https://api.deepseek.com/v1",
    api_key=os.getenv("deepseek_api_key")
)

print
("用一次调用同时完成:总结 → 下周计划\n")

# 定义Prompt

combined_prompt = ChatPromptTemplate.from_template(
    """
基于以下工作内容,完成两个任务,并直接输出:
1) 用一句话写工作总结。
2) 列出3-5条下周计划,用列表。
要求:简洁;不要提供多个版本;只输出正文。

工作内容:{work_content}
"""

)

# 定义链:Prompt -> LLM -> 输出解析器

parser = StrOutputParser()
chain = combined_prompt | llm | parser

work_content = "本周完成了LangChain学习,包括基础调用、记忆管理、流式输出等功能"
result = chain.invoke({"work_content": work_content})

print
("=== 最终结果 ===")
print
(result)

仔细对比下来,核心区别就是。

旧版写法:
chain = LLMChain(llm=llm, prompt=prompt, output_key="result")

新版写法:
parser = StrOutputParser()
chain = prompt | llm | parser

说实话,用习惯了新版是真香。

用好链,能够很优雅地把 AI 的多步骤流程化,解决重复拼接、流程管理、可扩展性这些问题。

下一课我们就来看看 如何把链和记忆、流式输出组合起来,打造一个真正能连续思考工作的智能体。

 


 

 

 

对AI应用开发感兴趣的同学,欢迎加微信申请入群交流学习。

想要学习AI应用开发的同学,可以参照我的代码跑起来,举一反三,一天一个脚印的进步,我相信,会足够坚实。


接下来100天,我会记录从Java程序员到AI应用开发工程师的完整转型路:每一个困惑、每一次突破、每一个真实瞬间。

当前是26/100。

如果你也想了解AI应用开发到底是什么,如果你也在考虑转型但还在犹豫,那就跟着我的记录,一起探索。


继续折腾中,有问题随时交流 🤝
微信号:ThinkFun666



我的免费AI编程交流群,欢迎加入讨论AI编程玩法(加我微信,说明需求和来意,申请入群)



 

 



推荐阅读:

我就喜欢干这种傻事!为什么转型AI应用开发,我不建议你直接从看书开始学起?

猛然醒悟:原来 AI 编程这件事情,是有门槛的,90%的新手卡在这些地方

30岁转行 AI 应用开发:多久能学会?答案出乎意料

30岁,我放弃写了7年的Java,成功转型AI应用开发

30岁,转型AI应用开发,需要会什么技术?

30岁,空窗期一年,靠什么成功转型AI应用开发?

30岁,没报课,如何从0自学转型AI应用开发?

【声明】内容源于网络
0
0
玩AI的方可乐
1234
内容 502
粉丝 0
玩AI的方可乐 1234
总阅读204
粉丝0
内容502