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

LangChain 快速入门:构建 LLMChain 应用

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

remedios发布于 2025/2/6更新于 2026/10/2285 浏览
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,可以控制模型的语气、角色和回答风格。

from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_messages([
    ("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. 总结

更多推荐文章

查看全部
  • 用滑动窗口做几道经典数组题
  • LLaMA 3、Qwen 与 DeepSeek 开源大模型技术对比分析
  • 9 款 AI 写作工具辅助论文写作指南
  • 浏览器 Web Bluetooth API使用方法
  • 海康视频插件 WebControl 中间件弹窗及灰屏问题排查
  • Llama-2-7B 昇腾 NPU 性能测评与部署实践指南
  • C++ 二叉搜索树详解:增删查改与 key/value 场景实现
  • Linux 进程间通信进阶:消息队列与信号量
  • Stable Diffusion 与 ComfyUI 整合包安装配置及常见问题解决
  • 2024 年 AI 绘画现状分析:Midjourney 与 Stable Diffusion 实用价值探讨
  • OpenClaw 深度调教指南:5 步让 AI 助手真正能干活
  • C++ 数据结构:二叉搜索树增删查改实现
  • VS Code 内置聊天与 GitHub Copilot Chat 的区别
  • RAG 技术详解:检索增强生成原理与实践
  • Cursor 中打造专属前端 AI 助手:Agent Skills 实战指南
  • Agentic RAG 登场:RAG 技术的进化之路
  • 用 DeepSeek 和 Cursor 从零打造智能代码审查工具
  • Docker 拉取镜像失败报错 403 Forbidden 解决方案
  • 基于OpenCASCADE的分层截面几何体重建与STL导出技术
  • MySQL 基本查询与增删改查实战指南

相关免费在线工具

  • 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