Appearance
LangChain 入门教程
LangChain 是一个用于开发由语言模型驱动的应用程序的强大框架。本文将带你从零开始学习 LangChain。
什么是 LangChain?
LangChain 是一个开源框架,专门用于构建基于大语言模型(LLM)的应用程序。它提供了模块化的组件,让你可以轻松地组合和定制各种 LLM 功能。
核心特点
- 模块化设计: 每个组件都可以独立使用和组合
- 链式调用: 将多个组件串联起来形成复杂的处理流程
- 记忆管理: 自动处理对话历史和上下文
- 工具调用: 让 LLM 能够调用外部工具和 API
- 数据集成: 轻松集成各种数据源(向量数据库、数据库等)
快速开始
安装
bash
# 使用 pip 安装
pip install langchain langchain-openai langchain-community
# 或使用 conda
conda install -c conda-forge langchainHello World
python
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage
# 初始化模型
llm = ChatOpenAI(
model="gpt-4o-mini",
temperature=0.7
)
# 发送消息
message = HumanMessage(content="你好,介绍一下你自己")
response = llm.invoke([message])
print(response.content)核心组件
1. 语言模型(LLMs)
LangChain 支持多种 LLM 提供商:
python
from langchain_openai import ChatOpenAI
from langchain_anthropic import ChatAnthropic
from langchain_google_genai import ChatGoogleGenerativeAI
# OpenAI
openai_llm = ChatOpenAI(model="gpt-4o")
# Anthropic
anthropic_llm = ChatAnthropic(model="claude-3-5-sonnet-20241022")
# Google
google_llm = ChatGoogleGenerativeAI(model="gemini-1.5-pro")2. 提示模板(Prompt Templates)
提示模板让你可以结构化和参数化你的提示词:
python
from langchain_core.prompts import ChatPromptTemplate
# 定义模板
prompt = ChatPromptTemplate.from_messages([
("system", "你是一个{role}助手。"),
("user", "{input}")
])
# 填充模板
formatted_prompt = prompt.invoke({
"role": "编程",
"input": "如何学习 Python?"
})
print(formatted_prompt)3. 链(Chains)
链是将多个组件串联起来的核心概念:
python
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
# 创建链
llm = ChatOpenAI(model="gpt-4o-mini")
prompt = ChatPromptTemplate.from_template("用简单的话解释{topic}")
chain = prompt | llm | StrOutputParser()
# 运行链
result = chain.invoke({"topic": "量子计算"})
print(result)4. 记忆(Memory)
记忆组件用于存储和检索对话历史:
python
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage
from langchain_core.chat_history import (
InMemoryChatMessageHistory,
BaseChatMessageHistory
)
# 创建记忆
history = InMemoryChatMessageHistory()
# 添加消息
history.add_message(HumanMessage(content="我叫小明"))
history.add_message(SystemMessage(content="你好小明!"))
# 获取历史
messages = history.messages
print([msg.content for msg in messages])实战示例:简单问答系统
python
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
# 创建提示模板
prompt = ChatPromptTemplate.from_messages([
("system", "你是一个有帮助的助手。"),
("user", "{question}")
])
# 创建链
llm = ChatOpenAI(model="gpt-4o-mini")
chain = prompt | llm | StrOutputParser()
# 问答循环
while True:
question = input("\n你的问题(输入 'quit' 退出): ")
if question.lower() == 'quit':
break
result = chain.invoke({"question": question})
print(f"助手: {result}")下一步
现在你已经了解了 LangChain 的基础概念。在下一篇文章中,我们将深入学习 LangChain 的核心概念和工作原理。