一、什么是 Chain?为什么需要它?

在 Day 2–3 中,我们这样调用模型:

prompt = ChatPromptTemplate.from_template("...")
response = llm.invoke(prompt.format(...))

这虽然能跑通,但存在几个问题:

  • 重复代码多:每次都要拼 prompt + 调用 llm
  • 难以复用:换个任务就要重写一遍
  • 不易测试:逻辑散落在各处

Chain 就是 LangChain 的“函数封装” —— 它把 输入 → Prompt → LLM → 输出 整个流程打包成一个可调用对象,像函数一样使用!


二、LLMChain 基础用法(三步走)

步骤 1:准备 LLM(本地或云端)

from langchain_ollama import ChatOllama

llm = ChatOllama(model="qwen:7b", temperature=0)

步骤 2:定义 PromptTemplate

from langchain_core.prompts import PromptTemplate

template = """
你是一个翻译助手,请将以下英文句子翻译成中文:

英文:{text}
中文:
"""

prompt = PromptTemplate.from_template(template)

步骤 3:创建并调用 LLMChain

from langchain.chains import LLMChain

chain = LLMChain(llm=llm, prompt=prompt)

result = chain.invoke({"text": "Hello, how are you?"})
print(result["text"])  # 输出:你好,你怎么样?

三、更推荐的现代写法:LCEL(LangChain Expression Language)

从 LangChain 0.1 开始,官方大力推荐 LCEL 链式表达式(更简洁、更强大):

# 不需要 LLMChain!直接用管道符 |
chain = prompt | llm

response = chain.invoke({"text": "Artificial Intelligence is amazing!"})
print(response.content)

优势:

  • 代码更短
  • 支持流式、异步、批处理
  • 更容易组合多个步骤(如 prompt | llm | parser

️ 四、实战:构建一个“产品描述生成器”

用户输入产品关键词,AI 生成一段营销文案。

# day4_llmchain_demo.py
from langchain_ollama import ChatOllama
from langchain_core.prompts import ChatPromptTemplate

# 1. 初始化模型
llm = ChatOllama(model="qwen:7b", temperature=0.7)

# 2. 定义 ChatPromptTemplate(更自然)
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一个电商文案专家,擅长用吸引人的方式描述产品。"),
    ("human", "请为以下产品生成一段 50 字以内的营销文案:{product}")
])

# 3. 构建 Chain(LCEL 方式)
chain = prompt | llm

# 4. 调用
result = chain.invoke({"product": "无线降噪耳机"})
print(result.content)

▶️ 输出示例:


五、如何让 Chain 支持多输入?

比如同时传入 producttone(语气):

prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一个文案专家。"),
    ("human", "用{tone}的语气,为{product}写一段营销文案。")
])

chain = prompt | llm
result = chain.invoke({
    "product": "智能手表",
    "tone": "幽默风趣"
})
print(result.content)

六、兼容 OpenAI?只需改一行!

# from langchain_openai import ChatOpenAI
# llm = ChatOpenAI(model="gpt-3.5-turbo")

from langchain_ollama import ChatOllama
llm = ChatOllama(model="qwen:7b")

️ 七、常见问题 & 注意事项

问题解决方案
LLMChain 报错 not a valid LLM确保传入的是 BaseLLM 或 BaseChatModel 实例
输出包含多余解释在 system prompt 中强调“只返回文案,不要其他内容”
中文输出乱码使用 Qwen、GLM 等中文优化模型
想要 JSON 输出?结合 PydanticOutputParser(Day 6 讲)

八、配套代码结构

langchain-30-days/
└── day4/
    ├── basic_llmchain.py      # 传统 LLMChain 写法
    ├── modern_lcel.py         # 推荐的 LCEL 写法(主推)
    └── product_copywriter.py  # 产品文案生成器实战

九、今日小结

  • 理解了 Chain 的作用:封装 AI 工作流
  • 学会了 LLMChain 基础用法(兼容旧代码)
  • 掌握了更现代的 LCEL 链式表达式prompt | llm
  • 实现了可复用的“产品文案生成器”
  • 支持多变量输入,模型切换无痛
本站提供的所有下载资源均来自互联网,仅提供学习交流使用,版权归原作者所有。如需商业使用,请联系原作者获得授权。 如您发现有涉嫌侵权的内容,请联系我们 邮箱:alixiixcom@163.com