GDM
36.48M · 2026-03-29
在 Day 2–3 中,我们这样调用模型:
prompt = ChatPromptTemplate.from_template("...")
response = llm.invoke(prompt.format(...))
这虽然能跑通,但存在几个问题:
Chain 就是 LangChain 的“函数封装” —— 它把 输入 → Prompt → LLM → 输出 整个流程打包成一个可调用对象,像函数一样使用!
from langchain_ollama import ChatOllama
llm = ChatOllama(model="qwen:7b", temperature=0)
from langchain_core.prompts import PromptTemplate
template = """
你是一个翻译助手,请将以下英文句子翻译成中文:
英文:{text}
中文:
"""
prompt = PromptTemplate.from_template(template)
from langchain.chains import LLMChain
chain = LLMChain(llm=llm, prompt=prompt)
result = chain.invoke({"text": "Hello, how are you?"})
print(result["text"]) # 输出:你好,你怎么样?
从 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)
比如同时传入 product 和 tone(语气):
prompt = ChatPromptTemplate.from_messages([
("system", "你是一个文案专家。"),
("human", "用{tone}的语气,为{product}写一段营销文案。")
])
chain = prompt | llm
result = chain.invoke({
"product": "智能手表",
"tone": "幽默风趣"
})
print(result.content)
# 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 # 产品文案生成器实战
LLMChain 基础用法(兼容旧代码)prompt | llm)