在前一篇文章中,我们已初步体验了LangChain的基础调用方法。然而,LangChain的真正价值远不止于此——它能够将多个AI组件封装为可执行的链式任务,实现复杂流程的自动化编排。就像把一个个独立零件组装成高效流水线,让大模型依次完成每一步操作,无需人工干预。

一、构造大模型实例
在开始之前,先导入所需的工具模块。这里需要引入LangChain的OllamaLLM模块,从而与本地运行的Ollama大模型建立连接:
from langchain_ollama import OllamaLLM
接下来,创建一个OllamaLLM实例。其中model参数是必填项,用于指定要加载的大模型名称,例如:
# 连接本地离线大模型(Ollama)
llm = OllamaLLM(model="qwen2:1.5b")
除model外,OllamaLLM还提供了多个可选参数,方便开发者根据实际应用场景灵活调整模型行为。以下是几个核心参数的详细说明:
model:模型名称,例如"qwen:7b"、"llama3"、"deepseek-r1"等。base_url:服务地址,默认本地地址为"http://localhost:11434"。temperature:模型温度,即随机性。取值范围0~1,默认0.8。值越低,回答越严谨、确定;值越高,回答越具创意和跳跃性。num_ctx:上下文Token的最大数量,默认2048。值越大,模型能记住的对话内容越长。num_predict:回答内容Token的最大数量,默认128。设置为-1表示不限制输出长度,-2表示填满整个上下文。keep_alive:模型在内存中常驻的时长,频繁调用时建议开启。默认"5m"表示5分钟,"-1"表示永久常驻,"0"表示用完即关。validate_model_on_init:初始化时是否校验模型是否存在,默认True表示启动时检查。
举例来说,以下代码创建了一个定制了多个参数的大模型实例:
llm = OllamaLLM(
model="qwen2:1.5b",
base_url="http://localhost:11434",
temperature=0.7,
num_ctx=4096,
num_predict=1024,
keep_alive="-1",
validate_model_on_init=True
)
二、构建提示词模板
导入PromptTemplate模块,这是构建提示词模板的核心工具:
from langchain_core.prompts import PromptTemplate
PromptTemplate的from_template方法接受一个字符串作为模板。字符串开头是提示词内容,末尾用{input}占位,表示用户输入的问题将在此处插入。
例如,以下代码构建了一个简单的提示词模板:
prompt = PromptTemplate.from_template("""
你是专业助手,请简洁回答:
{input}
""")
提示词的第一句“你是专业助手,请简洁回答”为模型划定了回答风格——简明扼要,避免冗长。后面的{input}是占位符,实际调用时会将用户输入的问题替换进去。
三、组装 AI 执行链
为什么LangChain要引入“执行链”这一概念?这需要从传统调用方式说起。按照程序设计顺序控制流程,每次接口调用都需要经历三步:封装请求内容→执行接口调用→解析应答内容,写成代码大致如下:
# 无链 → 手写每一步,巨繁琐!
prompt_text = prompt.format(input="你的问题") # 1 手动拼模板
response = llm.invoke(prompt_text) # 2 手动调模型
result = parser.parse(response) # 3 手动解析
可以看到,虽然上一行代码的输出就是下一行代码的输入,但每次都需要拆成三个语句依次调用,非常繁琐。
LangChain的执行链正是为解决这一痛点而设计。它将“构建提示词、调用模型、记忆(可选)、检索(可选)、解析应答”等操作,按顺序串联成一条自动流水线。只需一次性启动组装好的执行链,LangChain就会自动完成全流程,无需再写多条语句。
组装执行链之前,先导入所需的工具包:
from langchain_core.runnables import RunnableSequence
from langchain_core.output_parsers import StrOutputParser
然后,用RunnableSequence将三个操作串联起来:
chain = RunnableSequence(
prompt
| llm
| StrOutputParser()
)
实际上,RunnableSequence这个类名完全可以省略,直接用管道操作符|连接各环节,代码更简洁:
chain = (
prompt
| llm
| StrOutputParser()
)
甚至还能进一步简化,去掉外围的圆括号,变成一行代码:
chain = prompt | llm | StrOutputParser()
这样一来,组装过程中所有方法调用和参数传递都消失了,只剩下各环节的实例名称,代码量大幅减少,可读性也显著提升。
四、通过执行链调用离线大模型
现在,将前面三步串联起来,实现一个完整的AI对话功能。
首先,在命令行执行下面的pip安装命令,确保所有依赖包都已安装:
pip install langchain langchain-core langchain-ollama
接着,启动Ollama并加载离线大模型:
ollama serve
然后,编写下面的Python聊天测试代码,让用户在控制台输入问题,实现实时交互:
from langchain_core.prompts import PromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_ollama import OllamaLLM
def main():
# 1. 连接本地Ollama离线模型,替换成你本地模型名
llm = OllamaLLM(
model="qwen2:1.5b",
base_url="http://127.0.0.1:11434",
temperature=0.7 # 随机性 0严谨~1创意
)
# 2. 构建对话模板
prompt = PromptTemplate.from_template("""
你是专业助手,请简洁回答:
{input}
""")
# 3. 组装执行链
chain = prompt | llm | StrOutputParser()
# 4. 循环问答聊天
print("===== 离线AI聊天助手(输入exit退出)=====")
while True:
user_text = input("请输入问题:")
if user_text.lower() in ["exit", "quit", "退出"]:
print("对话结束")
break
print("AI思考中...")
response = chain.invoke(user_text)
print(f"AI回复:{response}n")
if __name__ == "__main__":
main()
运行这段代码,根据提示输入问题“LangChain是什么?”,输出结果如下:
===== 离线AI聊天助手(输入exit退出)=====
请输入问题:LangChain是什么?
AI思考中...
AI回复:Langchain 是一个基于 PyTorch 的开源语言模型推理框架,用于构建和训练大型的预训练模型。它提供了一个简单的 API 来处理输入数据,然后返回文本或代码作为输出。
通过调用LangChain的执行链,一个简单的AI对话功能已经跑通。接下来,我们还将继续探索如何给AI对话添加记忆功能,让模型能够记住上下文,实现更自然、连贯的连续对话。
