【大模型】-LangChain
·
文章目录
一、核心概念
1. 主要模块
- Models: 支持各种 LLM(OpenAI、Anthropic、本地模型等)
- Prompts: 模板化提示词管理
- Chains: 将多个组件组合成流水线
- Indexes: 文档加载、分割、向量化
- Memory: 会话状态管理
- Agents: 让 LLM 自主选择工具执行任务
二、快速开始
安装
pip install langchain langchain-openai
from langchain_openai import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain.chains import LLMChain
1. 初始化模型
这个自己设置,本人用的通义千问的模型
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0.7)
2. 创建提示模板
prompt = ChatPromptTemplate.from_template(
"用中文回答:什么是{concept}?"
)
3. 创建链
chain = LLMChain(llm=llm, prompt=prompt)
4. 运行
result = chain.invoke({"concept": "机器学习"})
print(result["text"])
三、核心组件详解
1. 模型 (Models)
from langchain_openai import OpenAI, ChatOpenAI
from langchain_anthropic import ChatAnthropic
# 补全模型
llm = OpenAI()
# 对话模型
chat = ChatOpenAI(model="gpt-4")
# 本地模型
from langchain_community.llms import Ollama
llm = Ollama(model="llama2")
2. 提示模板 (Prompts)
from langchain.prompts import (
PromptTemplate,
ChatPromptTemplate,
SystemMessagePromptTemplate,
HumanMessagePromptTemplate
)
# 简单模板
template = "请将以下文本翻译成{language}: {text}"
prompt = PromptTemplate.from_template(template)
# 对话模板
system_template = "你是一个专业的{profession}"
human_template = "{question}"
system_prompt = SystemMessagePromptTemplate.from_template(system_template)
human_prompt = HumanMessagePromptTemplate.from_template(human_template)
chat_prompt = ChatPromptTemplate.from_messages([
system_prompt,
human_prompt
])
3. 链 (Chains)
from langchain.chains import SimpleSequentialChain, SequentialChain
# 简单顺序链
chain1 = LLMChain(llm=llm, prompt=prompt1)
chain2 = LLMChain(llm=llm, prompt=prompt2)
overall_chain = SimpleSequentialChain(
chains=[chain1, chain2],
verbose=True
)
# 带输入输出的链
chain = SequentialChain(
chains=[chain1, chain2],
input_variables=["input"],
output_variables=["output1", "output2"]
)
4. 记忆 (Memory)
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory(
memory_key="chat_history",
return_messages=True
)
# 在链中使用
from langchain.chains import ConversationChain
conversation = ConversationChain(
llm=llm,
memory=memory,
verbose=True
)
5. 文档处理 (Indexes)
from langchain.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
# 加载文档
loader = TextLoader("document.txt")
documents = loader.load()
# 分割文档
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=200
)
texts = text_splitter.split_documents(documents)
# 创建向量数据库
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(
texts,
embeddings
)
四、实际项目示例
1. 文档问答系统
from langchain.chains import RetrievalQA
# 创建检索器
retriever = vectorstore.as_retriever()
# 创建问答链
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=retriever,
return_source_documents=True
)
# 提问
question = "文档中提到了哪些关键点?"
answer = qa_chain.invoke({"query": question})
2. 智能代理 (Agents)
from langchain.agents import create_react_agent
from langchain.tools import Tool
from langchain.agents import AgentExecutor
# 定义工具
def search_tool(query: str) -> str:
"""搜索工具"""
return f"搜索结果: {query}"
tools = [
Tool(
name="Search",
func=search_tool,
description="用于搜索信息"
)
]
# 创建代理
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
verbose=True
)
# 执行
result = agent_executor.invoke({
"input": "找到关于AI的最新进展"
})
五、学习建议
学习路径:
-
基础掌握: Models → Prompts → Chains
-
进阶应用: Memory → Indexes → Agents
实战项目:
-
构建聊天机器人
-
创建文档问答系统
-
开发智能代理
实用技巧:
# 1. 使用回调
from langchain.callbacks import StdOutCallbackHandler
chain.invoke(input, callbacks=[StdOutCallbackHandler()])
# 2. 流式输出
for chunk in chain.stream({"concept": "深度学习"}):
print(chunk, end="", flush=True)
# 3. 批量处理
chain.batch([{"concept": "AI"}, {"concept": "ML"}])
六、资源推荐
官方文档: https://python.langchain.com
GitHub: https://github.com/langchain-ai/langchain
学习项目:
-
LangChain-Chatchat: 中文对话系统
-
langflow: 可视化编排工具
更多推荐
所有评论(0)