LangChain 核心概念详解

本文深入探讨 LangChain 的核心概念,理解这些概念是掌握 LangChain 的关键。

## 1. Runnable Interface
Runnable 是 LangChain 中最重要的接口,几乎所有的组件都实现了这个接口。

### 统一调用方式
“`python
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate

llm = ChatOpenAI(model=”gpt-4o-mini”)
prompt = ChatPromptTemplate.from_template(“回答: {question}”)

response = llm.invoke(“你好”)
result = prompt.invoke({“question”: “什么是 AI?”})
“`

### 流式输出
“`python
for chunk in llm.stream(“讲个笑话”):
print(chunk.content, end=””, flush=True)
“`

### 批处理
“`python
questions = [“什么是 Python?”, “什么是 JavaScript?”, “什么是 AI?”]
responses = llm.batch(questions)
“`

## 2. 链式组合
使用 | 操作符可以将多个组件串联起来:

### 简单链
“`python
chain = (
ChatPromptTemplate.from_template(“翻译成中文: {text}”)
| ChatOpenAI(model=”gpt-4o-mini”)
| StrOutputParser()
)
result = chain.invoke({“text”: “Hello, how are you?”})
“`

### 复杂链
“`python
extractor = ChatPromptTemplate.from_template(“提取关键信息:{text}”) | llm | StrOutputParser()
summarizer = ChatPromptTemplate.from_template(“总结:{content}”) | llm | StrOutputParser()
chain = extractor | summarizer
“`

## 3. LangChain Expression Language (LCEL)
LCEL 是一种声明式方式来构建链,更灵活和可读。

### 可组合性
“`python
translator = ChatPromptTemplate.from_template(“翻译成{lang}: {text}”) | llm | StrOutputParser()
chinese = translator.invoke({“lang”: “中文”, “text”: “Hello”})
english = translator.invoke({“lang”: “英文”, “text”: “你好”})
“`

### 并行处理
“`python
from langchain_core.runnables import RunnableParallel

parallel_chain = RunnableParallel({
“summary”: summarizer,
“translation”: translator
})
results = parallel_chain.invoke({“text”: “今天天气不错”, “lang”: “英文”})
“`

## 4. 记忆管理
– **对话窗口记忆:** 保存最近的消息历史
– **会话摘要记忆:** 自动总结历史,节省 token

## 5. 工具调用
“`python
from langchain_core.tools import tool

@tool
def calculator(expression: str) -> str:
“””计算数学表达式”””
try:
result = eval(expression)
return f”结果: {result}”
except Exception as e:
return f”错误: {str(e)}”

llm = ChatOpenAI(model=”gpt-4o”).bind_tools([calculator])
response = llm.invoke(“计算 123 + 456″)
“`

## 6. 检索增强生成(RAG)
“`python
from langchain_core.documents import Document
from langchain_chroma import Chroma
from langchain_openai import OpenAIEmbeddings

documents = [
Document(page_content=”LangChain 是一个 LLM 应用框架”),
Document(page_content=”Python 是一种编程语言”),
]
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(documents, embeddings)
retriever = vectorstore.as_retriever(search_kwargs={“k”: 2})
“`

LangChain 核心概念详解

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Scroll to top
Copyright © 2026 Claude Code实战记录. 粤ICP备19017554号