LangChain 教程:LLMChain 构建与应用详解
LangChain 教程主要介绍如何使用 LangChain 框架构建基于 LLM 的应用。内容涵盖环境配置、API 密钥管理、基础 LLM 调用、提示模板设计以及链式调用流程。通过 StrOutputParser 将输出转换为字符串,并进一步扩展了检索链和对话链的实现逻辑,帮助开发者快速掌握从简单问答到复杂交互的构建方法。

LangChain 教程主要介绍如何使用 LangChain 框架构建基于 LLM 的应用。内容涵盖环境配置、API 密钥管理、基础 LLM 调用、提示模板设计以及链式调用流程。通过 StrOutputParser 将输出转换为字符串,并进一步扩展了检索链和对话链的实现逻辑,帮助开发者快速掌握从简单问答到复杂交互的构建方法。

LangChain 是一个旨在连接大型语言模型(LLM)与外部数据源及计算资源的开源框架。它简化了构建复杂 AI 应用的流程。本教程将从基础的 LLM 链开始,逐步深入到检索增强生成(RAG)、对话记忆以及智能代理(Agent)的实现。
LangChain 支持多种模型集成,包括 OpenAI 等商业 API 以及 Ollama 等本地开源模型。以下示例以 OpenAI 为例。
首先安装必要的依赖包:
pip install langchain-openai langchain-core
获取 API 密钥后,建议将其设置为环境变量以确保安全:
export OPENAI_API_KEY="sk-..."
在 Python 代码中初始化模型:
from langchain_openai import ChatOpenAI
llm = ChatOpenAI()
# 或者直接在参数中传入密钥
# llm = ChatOpenAI(openai_api_key="sk-...")
测试模型调用:
response = llm.invoke("请介绍一下李白?")
print(response.content)
直接使用原始输入往往效果不佳,使用提示模板(Prompt Template)可以规范输入格式,引导模型输出更高质量的结果。
定义提示模板:
from langchain_core.prompts import ChatPromptTemplate
prompt = ChatPromptTemplate.from_messages([
("system", "你是世界级的历史人物研究人员,擅长用一句话输出回答。"),
("user", "{input}")
])
组合提示模板与模型形成链:
chain = prompt | llm
result = chain.invoke({"input": "请介绍一下李白?"})
print(result.content)
模型默认返回消息对象,为了便于后续处理,通常使用输出解析器将其转换为字符串。
from langchain_core.output_parsers import StrOutputParser
output_parser = StrOutputParser()
chain = prompt | llm | output_parser
result = chain.invoke({"input": "请介绍一下李白?"})
print(type(result)) # <class 'str'>
当需要结合外部知识库时,可以使用检索链。这涉及向量数据库的创建和文档加载。
# 伪代码示例,需根据实际向量库调整
from langchain.chains import RetrievalQA
from langchain.vectorstores import FAISS
from langchain.embeddings import HuggingFaceEmbeddings
# 假设已有向量存储 db
db = FAISS.load_local("path/to/index", embeddings)
qa_chain = RetrievalQA.from_chain_type(llm=llm, retriever=db.as_retriever())
answer = qa_chain.invoke("李白的代表作有哪些?")
为了实现多轮对话记忆,需要引入内存机制。
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationalChain
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
conversation = ConversationalChain.from_llm(llm=llm, memory=memory)
response = conversation.invoke("你好")
response = conversation.invoke("刚才提到的诗人是谁?")
本文介绍了 LangChain 的核心组件使用方法。通过组合提示模板、模型和输出解析器,可以快速构建基础应用。对于更复杂的场景,如 RAG 和多轮对话,LangChain 提供了丰富的模块支持。开发者可根据实际需求灵活组合这些组件,实现智能化的 AI 应用。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online