Python LangChain 模式 | AI生成和翻译
以下是几个简洁的Python代码片段,展示了常见的LangChain使用模式。你可以自由组合这些模块来构建更复杂的工作流。
1. 使用PromptTemplate的简单LLM链
from langchain import OpenAI, LLMChain, PromptTemplate
# 1. 初始化大语言模型
llm = OpenAI(temperature=0.7)
# 2. 创建提示词模板
template = PromptTemplate(
input_variables=["product"],
template="为以下产品撰写简短营销文案:{product}。"
)
# 3. 构建处理链
chain = LLMChain(llm=llm, prompt=template)
# 4. 执行链式调用
result = chain.run({"product": "无线降噪耳机"})
print(result)
2. 具备记忆功能的对话链
from langchain import OpenAI, ConversationChain
from langchain.memory import ConversationBufferMemory
# 1. 初始化大语言模型和记忆模块
llm = OpenAI(temperature=0)
memory = ConversationBufferMemory()
# 2. 构建对话链
conv = ConversationChain(llm=llm, memory=memory)
# 3. 模拟对话流程
print(conv.predict(input="你好!"))
print(conv.predict(input="能提醒我们之前聊过什么吗?"))
3. 基于文档的检索问答(FAISS)
from langchain import OpenAI, RetrievalQA
from langchain.vectorstores import FAISS
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.document_loaders import TextLoader
# 1. 加载并分割文档
loader = TextLoader("my_docs/guide.txt")
docs = loader.load()
splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=100)
chunks = splitter.split_documents(docs)
# 2. 构建向量索引
embeddings = OpenAIEmbeddings()
vectorstore = FAISS.from_documents(chunks, embeddings)
# 3. 构建检索问答链
qa = RetrievalQA.from_chain_type(
llm=OpenAI(temperature=0),
chain_type="stuff",
retriever=vectorstore.as_retriever()
)
# 4. 执行问答查询
answer = qa.run("我们API的主要优势是什么?")
print(answer)
4. 配备工具集的智能体
from langchain import OpenAI, SerpAPIWrapper, LLMMathChain, initialize_agent
from langchain.agents import Tool
# 1. 定义工具集
search = SerpAPIWrapper()
tools = [
Tool(
name="Search",
func=search.run,
description="适用于网络搜索"
),
Tool(
name="Calculator",
func=LLMMathChain.from_llm(OpenAI(temperature=0)).run,
description="适用于数学计算"
)
]
# 2. 创建智能体
agent = initialize_agent(
tools,
llm=OpenAI(temperature=0),
agent="zero-shot-react-description",
verbose=True
)
# 3. 运行智能体
response = agent.run("法国的首都是哪里?这个结果加上二乘五等于多少?")
print(response)
欢迎灵活调整这些代码片段——你可以替换不同的大语言模型、更换检索器(如Chroma、Pinecone),或根据需要添加自定义工具和记忆模块类型!