你好,LangChain:当编程遇见大语言模型

欢迎来到《从零到一:LangChain 实战派修炼手册》的第一篇!如果你是一位每天与代码打交道的软件开发者,但又从未亲手触碰过大语言模型(LLM)或者 LangChain,那么这篇开篇文章就是专门为你准备的。我们将从你最熟悉的编程场景出发,一步步踏入这个正在重新定义"编程"二字的新世界。


一、从一个熟悉的故事讲起:函数调用

1.1 你熟悉的程序世界

在过去的编程生涯里,你一定写过数不清的函数。拿下面这个来说:

python 复制代码
def get_weather(city: str) -> str:
    """返回指定城市的天气,逻辑完全由你掌控"""
    if city == "北京":
        return "晴朗,32°C"
    elif city == "上海":
        return "多云,28°C"
    else:
        return "暂无该城市数据"

这一切都尽在掌握之中。你给这个函数一个确定的输入 "北京",它就会立刻返回一个你事先定义好的、可预期的输出 "晴朗,32°C"。每一次调用都像执行一条铁律,从不逾矩。程序的边界清晰,逻辑可推导,你手握方向盘,车子就必定沿着柏油路前行。

这种确定性的美,正是传统软件开发的基础。我们习惯了编写精确的指令,让机器按照算法和规则一步步执行。但接下来要登场的这位"朋友",会彻底翻转这种认知。

1.2 大语言模型带来的范式转移

如果说传统函数是一台计算器,那么大语言模型(LLM)就像一个知识广博、偶尔还会信口开河的"黑盒朋友"。它不再像函数那样只给你死板的返回值,而是像真人一样,能跟你对话、讲故事、写代码,甚至编造一段并不存在的历史。

我们来做一个小小的思维实验。如果你对着上面那个 get_weather 函数问:

"今天心情怎么样?"

程序十有八九会直接报错,因为你的输入根本不在它预定义的范围之内。它不理解"心情",也不理解你的意图,它只是一段僵硬的规则。

但如果把这句话丢给一个 LLM,你可能会得到:

"哈哈,作为一个AI,我没有真正的情绪,但能帮你解答问题,我今天心情好得就像刚给代码跑通了所有测试一样!"

你瞧,同样的输入,函数给你的是错误,LLM 给你的却是一段富有诗意和温度的回应。这就是两者最本质的区别。

这个转变背后,其实隐藏着一次深刻的编程范式迁移:从"逻辑编程"到"意图编程"

在传统世界里,你是用条件判断、循环和数据结构,一丝不苟地告诉计算机如何做 。而在 LLM 的世界里,你不再精确控制输出生成的每一个步骤,而是通过一段自然语言提示词(Prompt),向模型表达你想要什么 。模型自己会去理解意图,然后组织出答案。方向盘还在你手里,但车子已经有了一定的"自主思考"能力。你不再需要编写琐碎的逻辑,只需要学会与智能体沟通

这就好比你从造轮子,一跃变成了指挥一个技艺高超但又不太靠谱的万能工匠。怎样和它高效地"说话",就成了一门新的手艺。而 LangChain 恰恰就是为这门手艺打造的工作台。


二、LangChain 是什么:一个面向 LLM 的"操作系统"

2.1 一个问题引发的思考

单用 LLM 的 API 做一次简单的问答,确实不算太难。但如果我们把需求升级一下:如何用 LLM 写一本小说?

你会发现事情立马变得棘手起来:

  • 你需要记住之前写了什么情节、人物说过哪些话,管理长达数万字的对话历史
  • 你需要把草稿保存到文件,再将修改后的文本读出来,涉及文件读写
  • 你可能想让模型模仿某个作家的风格,并在不同章节统一控制。
  • 你甚至可能想让模型在某个情节需要时,主动去搜索相关资料。

这些需求堆在一起,直接靠手撸 API 调用会变成一场噩梦。你很快会发现自己淹没在各种拼接字符串、手动管理消息数组、处理异常和重复代码的泥潭里。LLM 的能力虽然强大,但让它稳定地为复杂应用服务,仍然需要一个好用的框架。

2.2 LangChain 的诞生与角色

这就是 LangChain 登场的原因。我们可以用这样一个比喻来理解它:如果 LLM 的原始 API 是"裸机编程",那么 LangChain 就是面向 LLM 应用开发的"操作系统"

想象你正在编程,直接操作 CPU 和内存(裸机),虽然理论上无所不能,但每一次都要手动管理中断、分配地址,效率极低。操作系统(比如 Windows 或 macOS)的出现,为你提供了文件管理、进程调度、复制粘贴等高级抽象,让你从繁杂的底层细节中解放出来,专注于创造。

LangChain 扮演的正是这样一个角色。它把调用 LLM 时那些高频、重复的工作封装成了一套清晰、可组合的组件,让你可以像搭积木一样构建 LLM 应用。你不再需要一遍遍手动拼接请求体,也不再需要从头实现对话记忆,LangChain 已经为你准备好了。

2.3 LangChain 的核心能力一览(预告)

在后面的文章中,我们会逐一深入实践中这些能力。现在,不妨先快速看一眼 LangChain 这个"操作系统"到底提供了哪些核心模块:

  • 管模型:统一的模型接口

    无论是 OpenAI 的 GPT-4,还是 Meta 的开源模型 Llama,LangChain 都为你抽象了一层统一的调用方式。切换模型就像换个插件,底层变动不影响上层逻辑。

  • 管流程:链式调用与工作流编排

    你可以把多个模型调用、数据处理步骤像链条一样串联起来,形成一条自动化的"流水线"。提示词处理、模型调用、输出解析一气呵成。

  • 管记忆:记忆管理

    让 LLM 记住之前聊过什么。LangChain 提供了多种记忆机制,帮你自动裁剪、合并对话历史,让你的应用能进行多轮连贯对话。

  • 管工具:工具与外部世界交互

    让 LLM 能够像调用函数一样使用搜索引擎、计算器、数据库等外部工具,从"只会说话"变成"能干活"。

这些能力组合在一起,让 LangChain 成为开发者手中一把可塑性极强的瑞士军刀。接下来,我们就用最小的成本,亲手跑通第一个 LangChain 程序,让它跟我们说声"Hello World"。


三、Hello World:用 5 行代码感受 LangChain

3.1 准备环境

在动手之前,我们需要先把必要的工具安装好。打开你熟悉的终端,执行:

bash 复制代码
pip install langchain langchain-openai

这会在你的 Python 环境中安装 LangChain 核心库以及 OpenAI 的专用集成。

要让程序真正连通到大语言模型,你还需要一个 OpenAI API Key。你可以到 OpenAI 的官方网站注册账号并获取。拿到密钥后,最安全的做法是把它设置成环境变量,而不是硬编码在代码里:

bash 复制代码
# macOS / Linux 下执行
export OPENAI_API_KEY="sk-你的密钥"

# Windows PowerShell 下执行
$env:OPENAI_API_KEY="sk-你的密钥"

这样一来,LangChain 就能在运行时自动读取这个密钥,而你的代码里完全不会出现敏感信息。

3.2 你的第一个 LangChain 程序

万事俱备,让我们用 5 行核心代码,完成这次意义非凡的第一次握手。

python 复制代码
from langchain_openai import ChatOpenAI
from langchain.schema import HumanMessage

# 1. 实例化一个聊天模型,就像是接通了一位随时待命的"智能朋友"
chat = ChatOpenAI(model="gpt-3.5-turbo")

# 2. 构造一条"人类身份"的消息,表达我们想说的话
message = HumanMessage(content="用一句话介绍 Python 之美")

# 3. 把消息传给模型,拿到它的回复
response = chat.invoke([message])

# 4. 将回复的内容打印出来
print(response.content)

别急着复制粘贴,我们来逐行品味一下这段代码的"意图",而不是它的语法:

  • 我们先是创建了一个可以沟通的对象 chat,它代表一个使用了 gpt-3.5-turbo 模型的智能体。
  • 然后我们用 HumanMessage 封装了一句我们想说的话,就像写好一张便签,上面贴着"这是用户说的"。
  • 接着调用 invoke 把这张便签递过去,模型便开始分析、生成,最终返还一个响应对象
  • 这个对象里有很多元信息,而我们最想要的其实是 response.content,它就是模型返回的那句人话。

点击运行,带着点仪式感。如果一切顺利,你会看到类似这样的输出:

Python 之美在于它用简洁优雅的语法,让开发者能够专注于解决问题本身,而不是和语言细节纠缠。

恭喜!你已经正式踏入了 LangChain 的大门。这种感觉,就像你第一次用 print("Hello World") 向编程世界打了声招呼。如今,你向智能世界也发出了第一声问候。

3.3 不止于此,我们还能更简单

上面的代码已经足够简单,但 LangChain 还能将其进一步抽象。等我们学会了提示词模板和链(Chain)之后,同样的需求甚至可以写成这样充满想象空间的形式:

python 复制代码
from langchain_openai import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain.schema import StrOutputParser

# 准备好模型、提示词模板和一个最简单的链
model = ChatOpenAI(model="gpt-3.5-turbo")
prompt = ChatPromptTemplate.from_template("请用一句话介绍 {topic} 之美")
chain = prompt | model | StrOutputParser()

# 像调用函数一样,输入话题,直接输出结果
result = chain.invoke({"topic": "Python"})
print(result)

短短几行,就清晰地表达了一条"接收话题 → 组装提示词 → 调用模型 → 解析输出"的流水线。这正是 LangChain 赋予我们的能力:把 AI 的智能,编织进应用中,就像调用一个普通函数那样自然。当你发现 AI 变得可控、可编程时,一个全新的世界就真的打开了。


四、系列总结与下篇预告

今天,我们完成了一次温柔的破冰之旅。你带走了三个最重要的认知:

  1. LLM 不是普通函数,它带来了从"逻辑编程"到"意图编程"的范式转变。
  2. LangChain 是面向 LLM 的"操作系统",它的核心职责就是帮你管模型、管流程、管记忆、管工具。
  3. 你亲手写出了第一个 LangChain 程序,用真实代码验证了这个新范式。

但在整篇文章当中,我们一直把"模型"当成一个抽象的概念来讨论。你可能还在想:这个"模型"到底是什么?它和我们嘴上常说的 AI 有什么不同?LLM 和 Chat Model 又是什么关系?

下篇文章,我将用一个生活化的奇妙比喻,为你揭开"模型"这只巨兽的神秘面纱,深入探究它的内在构成。让我们从语言的源头出发,真正读懂它的能力与边界。

咱们下一篇见!

相关推荐
甄心爱学习1 小时前
【项目实训(个人6)】
人工智能·python·个人开发
devpotato1 小时前
人工智能(十七)- 大模型多轮对话、成本控制
人工智能·语言模型
数智工坊1 小时前
【连续动作空间算法2】TD3:DDPG的终极进化,根治连续控制中的函数近似误差
论文阅读·人工智能·算法·计算机视觉
夜影风1 小时前
RAG入门:用LangChain搭建你的第一个知识库问答系统
人工智能·langchain·rag
mingo_敏1 小时前
深度学习论文: ICPR 2026 Competition on Low-Resolution License Plate Recognition
人工智能·深度学习
乐迪信息1 小时前
乐迪信息:智慧港口安全,船舶AI视觉检测实现主动预警
大数据·人工智能·安全·计算机视觉·目标跟踪·视觉检测
小橙讲编程1 小时前
字节跳动开源多模态AI Agent终极形态:Agent TARS 深度技术解读
人工智能·开源·ai编程
五行星辰1 小时前
《AI引擎:三招掌控人工智能》目录
人工智能
视***间1 小时前
视程空间SC系列采集卡:以硬核技术,重构影像采集新生态
人工智能·音视频·采集卡·视程空间·视频采集卡