跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI

LangChain 快速入门:构建 LLMChain 应用

综述由AI生成LangChain 框架允许开发者将外部数据源和计算源连接到大型语言模型。如何使用 LangChain 快速入门,包括环境配置、模型初始化、提示模板构建以及链式调用。通过 ChatOpenAI 集成和 StrOutputParser,用户可以轻松创建从输入到字符串输出的完整流程。文章还涵盖了本地模型部署建议、API 密钥安全管理及流式响应处理等最佳实践,帮助开发者高效构建基于 LLM 的应用程序。

remedios发布于 2025/2/6更新于 2026/6/314 浏览
LangChain 快速入门:构建 LLMChain 应用

使用 LangChain 构建应用

LangChain 是一个旨在简化大型语言模型(LLM)应用的开发框架。它支持将外部数据源和计算源连接到 LLM,从而构建功能丰富的应用程序。本文将重点介绍 LangChain 中最基础的组件之一——LLMChain,并逐步展示如何从简单的提示响应扩展到更复杂的链式调用。

环境准备与安装

在使用 LangChain 之前,需要确保 Python 环境已配置好。LangChain 支持通过 API 提供的模型(如 OpenAI)和本地开源模型(如 Ollama)。

首先,安装必要的依赖包。对于 OpenAI 集成,需要安装 langchain-openai 包:

pip install langchain-openai

同时,建议安装核心包以确保兼容性:

pip install langchain-core

访问 API 需要一个有效的密钥。您可以通过注册 OpenAI 账户获取该密钥。为了安全起见,建议将密钥设置为环境变量,而不是硬编码在代码中。

设置环境变量示例(Linux/Mac):

export OPENAI_API_KEY="sk-..."

Windows 用户可以使用 setx 或在系统属性中配置。

初始化模型

安装完成后,我们可以初始化模型。以下示例使用 OpenAI 的 Chat 模型。

方式一:使用环境变量

如果已设置环境变量,可以直接实例化:

from langchain_openai import ChatOpenAI

llm = ChatOpenAI()

方式二:直接传入密钥

如果不希望设置环境变量,可以在启动类时直接通过命名参数传入密钥:

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(openai_api_key="sk-...")

注意:在生产环境中,请避免将密钥硬编码在代码中,建议使用 .env 文件和 python-dotenv 库来管理敏感信息。

测试模型调用

一旦安装并初始化了 LLM,就可以尝试调用它。例如,询问关于历史人物的问题:

response = llm.invoke("介绍一下李白?")
print(response)

输出通常是一个 AIMessage 对象,包含内容字段:

AIMessage(content='李白(701 年-762 年),字太白,号青莲居士,唐朝时期伟大的浪漫主义诗人...')

虽然可以直接使用,但在大多数应用中,我们更倾向于处理字符串格式的数据。因此,我们需要引入输出解析器。

构建提示模板

提示模板(Prompt Template)用于将原始用户输入转换为更适合 LLM 理解的格式。通过定义 System Message 和 User Message,可以控制模型的语气、角色和回答风格。

 langchain_core.prompts  ChatPromptTemplate

prompt = ChatPromptTemplate.from_messages([
    (, ),
    (, )
])
from
import
"system"
"你是世界级的历史人物研究人员,擅长用一句话输出回答。"
"user"
"{input}"

这里使用了 {input} 作为占位符,将在运行时被实际的用户输入替换。

创建 LLMChain

LangChain 提供了流畅的表达式语言(LCEL),允许使用管道操作符 | 将多个组件连接起来。这比传统的 RunnableWithMessageHistory 或旧版 Chain 更加简洁高效。

基础链

将提示模板与模型组合:

chain = prompt | llm

调用链:

result = chain.invoke({"input": "请介绍一下李白?"})
print(result.content)

输出将被限制为系统提示词要求的格式:

李白,唐朝浪漫主义诗人,被誉为'诗仙'。

添加输出解析器

为了将 AIMessage 对象转换为纯字符串,方便后续处理,我们可以添加 StrOutputParser:

from langchain_core.output_parsers import StrOutputParser

output_parser = StrOutputParser()
chain = prompt | llm | output_parser

再次调用:

response = chain.invoke({"input": "请介绍一下李白?"})
print(type(response))  # <class 'str'>
print(response)

现在返回的是直接的字符串,无需再访问 .content 属性。

进阶:流式响应处理

在实际应用中,为了提升用户体验,通常希望看到模型生成的文字逐字显示,而不是等待整个响应完成。LangChain 支持流式输出。

for chunk in chain.stream({"input": "请介绍一下李白?"}):
    print(chunk, end="", flush=True)

这将逐个打印生成的文本块,实现打字机效果。

本地模型部署

除了使用云端 API,LangChain 也支持本地开源模型,如 Ollama。这依赖于硬件配置,适合对数据隐私有要求或预算有限的场景。

以 Ollama 为例,需先安装 Ollama 服务并拉取模型(如 llama3):

ollama pull llama3

然后在代码中初始化:

from langchain_community.chat_models import ChatOllama

llm_local = ChatOllama(model="llama3", temperature=0.7)
chain_local = prompt | llm_local | output_parser

这种方式无需网络请求即可运行,但速度取决于本地算力。

最佳实践与安全建议

  1. 密钥管理:始终使用环境变量或密钥管理服务(如 AWS Secrets Manager)存储 API Key,切勿提交到版本控制系统。
  2. 错误处理:网络波动或 API 限流可能导致调用失败,建议在代码中添加 try-except 块进行重试或降级处理。
  3. 成本控制:Token 消耗会产生费用,可通过限制最大 token 数或使用低成本模型来控制成本。
  4. 提示词工程:优化 System Prompt 能显著提升回答质量,建议对关键指令进行明确约束。
  5. 缓存机制:对于相同的输入,可以考虑缓存结果以减少重复调用,降低延迟和费用。

总结

本文详细讲解了 LangChain 中 LLMChain 的基本使用方法。通过组合提示模板、模型和输出解析器,开发者可以快速构建基于大语言模型的应用原型。掌握了 LLMChain 后,后续可以进一步学习检索增强生成(RAG)、代理(Agent)以及多步链等高级功能,以应对更复杂的企业级需求。

在构建应用时,请始终关注安全性、稳定性和成本效益,根据实际业务场景选择合适的模型和架构方案。

目录

  1. 使用 LangChain 构建应用
  2. 环境准备与安装
  3. 初始化模型
  4. 方式一:使用环境变量
  5. 方式二:直接传入密钥
  6. 测试模型调用
  7. 构建提示模板
  8. 创建 LLMChain
  9. 基础链
  10. 添加输出解析器
  11. 进阶:流式响应处理
  12. 本地模型部署
  13. 最佳实践与安全建议
  14. 总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Vue 基础入门教程(一)
  • 实测 ToClaw 信息检索与分析能力:AI 实现先找再写
  • PETRV2-BEV 模型训练实战:Python 全流程代码解析
  • 植物大战僵尸融合版:多平台安装配置与性能优化指南
  • C++ 核心基础:STL 容器、位运算与常用算法库
  • 大模型时代人形机器人感知:视觉 - 语言模型应用
  • Android 工程师职业发展:转行抉择与深耕策略
  • OpenClaw QQ 机器人接入完整指南
  • Python 一键拆分 PDF:按章节建文件夹并导出单页(支持书签与正文识别)
  • RAG 技术详解:破解大模型知识、幻觉与安全困境
  • 前端 IndexedDB 实战指南
  • VSCode 中 Copilot 调用 Claude Agent 提示无效请求的解决方案
  • 本地化部署 GPT 大模型:解锁个人 AI 潜能与开源项目推荐
  • MySQL 表操作实战:创建、修改与删除详解
  • 《大模型基础》:浙江大学专家撰写的大语言模型入门指南
  • 基于 FPGA 的 CLAHE 自适应限制对比度直方图均衡算法 Verilog 实现
  • 网络安全基础术语速查指南
  • 基于 FastGPT 与 MCP 协议构建工具增强型智能体
  • 多语言微服务架构与边缘计算实践:Python、Java、C++、Go 解析
  • KingbaseES 数据库智能 SQL 防护机制与异常语句拦截实践

相关免费在线工具

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online