LangChain 是一个用于开发由语言模型驱动的应用程序的强大框架。本文将带你从零开始学习 LangChain。
## 什么是 LangChain?
LangChain 是一个开源框架,专门用于构建基于大语言模型(LLM)的应用程序。它提供了模块化的组件,让你可以轻松地组合和定制各种 LLM 功能。
**核心特点:**
– 模块化设计:每个组件都可以独立使用和组合
– 链式调用:将多个组件串联起来形成复杂的处理流程
– 记忆管理:自动处理对话历史和上下文
– 工具调用:让 LLM 能够调用外部工具和 API
– 数据集成:轻松集成各种数据源
## 快速开始
### 安装
“`bash
pip install langchain langchain-openai langchain-community
“`
### Hello 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)
“`python
from langchain_openai import ChatOpenAI
from langchain_anthropic import ChatAnthropic
from langchain_google_genai import ChatGoogleGenerativeAI
openai_llm = ChatOpenAI(model=”gpt-4o”)
anthropic_llm = ChatAnthropic(model=”claude-3-5-sonnet-20241022″)
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?”})
“`
### 3. 链(Chains)
“`python
llm = ChatOpenAI(model=”gpt-4o-mini”)
prompt = ChatPromptTemplate.from_template(“用简单的话解释{topic}”)
chain = prompt | llm | StrOutputParser()
result = chain.invoke({“topic”: “量子计算”})
“`
### 4. 记忆(Memory)
“`python
from langchain_core.chat_history import InMemoryChatMessageHistory
from langchain_core.messages import HumanMessage, SystemMessage
history = InMemoryChatMessageHistory()
history.add_message(HumanMessage(content=”我叫小明”))
history.add_message(SystemMessage(content=”你好小明!”))
“`
## 实战示例:简单问答系统
“`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()
result = chain.invoke({“question”: “什么是 LangChain?”})
print(result)
“`