3. 提示工程与模板

好了,到了真正动手的时候了。前面两章我们聊了不少概念,什么Agent、Chain、Tool,听起来挺唬人。但说句实在话,不写一行代码,这些东西永远都是空中楼阁。这一章,我们就来把地基打牢。

我个人习惯,学任何新框架,第一件事不是读文档,而是先把环境跑通,跑一个Hello World。哪怕只是打印出一行字,那种「我能控制它」的感觉就来了。咱们今天的目标很简单:装好LangChain,配好的Key,然后让大模型跟我们说句话。

3.1 环境准备:Python版本与虚拟环境

先看看你的Python版本。LangChain对Python 3.8以上支持得比较好,我个人建议用3.10或3.11。为什么?因为3.12有些依赖包还没完全跟上,我在项目里踩过坑,折腾了半天。

我的建议: 用Python 3.10.11,稳定,兼容性好。如果你用pyenv或conda,直接创建一个新环境。

虚拟环境是必须的。你想想看,每个项目依赖的包版本可能不一样,混在一起迟早出问题。我一般这么干:

# 创建虚拟环境
python -m venv langchain_env

# 激活(Windows)
langchain_env\Scripts\activate

# 激活(Mac/Linux)
source langchain_env/bin/activate

看到终端前面多了个 (langchain_env) 前缀,就说明环境激活成功了。嗯,这一步别跳过,我曾经图省事直接在全局环境装包,结果两个项目打架,浪费了一下午。

3.2 安装LangChain核心库

环境激活后,安装LangChain就一行命令的事:

pip install langchain

但等等,这只是核心库。实际开发中,你还需要装一些配套包。比如你要调的模型,就得装 langchain-。我整理了一个常用清单:

包名 用途 安装命令
langchain 核心框架 pip install langchain
langchain- 模型集成 pip install langchain-
langchain-community 社区维护的第三方集成 pip install langchain-community
python-dotenv 管理环境变量() pip install python-dotenv
注意: 别一股脑全装。按需安装,保持环境干净。我见过有人把整个langchain生态都装了,结果依赖冲突,排查起来很痛苦。

3.3 配置

这是最容易出问题的一步。说白了,你要让LangChain知道你是谁,有没有权限调模型。就是你的通行证。

我个人习惯用 .env 文件来管理Key,而不是硬编码在代码里。为什么?因为代码可能会上传到GitHub,Key一旦泄露,钱包就危险了。我曾经见过有人把Key直接写在Jupyter Notebook里然后传到GitHub,几分钟就被爬虫扫到,损失了几百刀。

操作步骤:

  1. 在项目根目录创建一个 .env 文件
  2. 在里面写上:_=你的Key
  3. 在代码里用 python-dotenv 加载

代码长这样:

from dotenv import load_dotenv
import os

load_dotenv()  # 加载 .env 文件

 = os.getenv("_")
print(f"Key加载成功,前8位是:{[:8]}...")
一个小技巧: 打印Key的前几位,可以确认加载成功,又不会暴露完整Key。调试时很有用。

如果你没有的Key,也可以用其他模型的Key,比如通义千问、文心一言。LangChain支持很多模型,但咱们这一章先用做示范,因为最通用。

3.4 第一个LangChain程序:Hello World

好,万事俱备。现在我们来写第一个程序。目标很简单:让大模型回答一个问题,比如「什么是LangChain?」。

先看完整代码:

from langchain_ import ChatOpenAI
from dotenv import load_dotenv

load_dotenv()

# 初始化模型
llm = ChatOpenAI(
    model="-turbo",
    temperature=0.7
)

# 调用模型
response = llm.invoke("请用一句话解释什么是LangChain?")

print(response.content)

运行一下,如果看到类似这样的输出,恭喜你,成功了:

LangChain是一个用于构建基于大语言模型应用的框架,它通过链式调用和智能体机制简化了开发流程。

就这么简单?对,就这么简单。但别小看这几行代码,它背后做了很多事:

  • 自动处理API请求的格式
  • 管理对话上下文(虽然这里没用上)
  • 处理网络错误和重试

我刚开始用的时候,觉得这跟直接调 API没啥区别。但后来项目复杂了,才发现LangChain的抽象层帮我省了多少事。

3.5 理解核心概念:LLM vs ChatModel

刚才我们用的是 ChatOpenAI,但LangChain里还有 (注意没有Chat前缀)。这两者有什么区别?

对比维度 (LLM) ChatOpenAI (ChatModel)
输入格式 纯文本字符串 消息列表(System/User/Assistant)
适用模型 text-davinci-003等 -turbo, 等
对话能力 单轮,无记忆 原生支持多轮对话
推荐场景 简单的文本补全 聊天机器人、复杂对话

说白了,现在主流模型都是ChatModel,你就用 ChatOpenAI 准没错。那个 类,我只有在做某些特殊测试时才会用到。

3.6 本章知识体系

下面这张图,帮你把这一章的核心逻辑串起来:

第3章:环境搭建与Hello World 知识体系 1. 环境准备 Python 3.10 + 虚拟环境 2. 安装依赖 langchain + langchain- 3. 配置 .env文件 + python-dotenv 4. 第一个程序:Hello World ChatOpenAI → llm.invoke() → 输出结果 5. 核心概念对比:LLM vs ChatModel 💡 核心原则:先跑通,再优化。不要一开始就追求完美架构。 环境隔离 + Key安全 + 最小化验证 = 稳健起步

3.7 常见问题与避坑指南

跑第一个程序时,你可能会遇到一些问题。我把常见的列出来:

问题1:ModuleNotFoundError: No module named 'langchain_'
原因:只装了langchain核心库,没装langchain-。
解决:pip install langchain-
问题2:AuthenticationError: Incorrect provided
原因:写错了,或者.env文件没被正确加载。
解决:检查.env文件路径,确认load_dotenv()在调用模型之前执行。
问题3:RateLimitError: You exceeded your current quota
原因:API调用次数超限,或者账户余额不足。
解决:去后台检查用量和账单。我曾经因为忘了关一个循环脚本,一晚上跑了上千次调用,第二天看到账单直接傻眼。

3.8 扩展:试试不同模型

如果你用的是其他模型,比如通义千问,代码也很类似:

from langchain_community.chat_models import ChatTongyi

llm = ChatTongyi(
    model="qwen-turbo",
    temperature=0.7
)

response = llm.invoke("请用一句话解释什么是LangChain?")
print(response.content)

你看,接口几乎一样。这就是LangChain的威力——换模型就像换插头,不用改业务逻辑。

核心收获: 这一章你学会了三件事——搭建环境、配置Key、跑通第一个LLM调用。别小看这三步,它们是后面所有复杂应用的基础。我见过太多人卡在环境配置上,连Hello World都没跑通就放弃了。你既然走到了这里,恭喜,已经迈过了第一道坎。