LangChain开发指南

LangChain简介

LangChain是一个强大的框架,用于开发由语言模型驱动的应用程序。它提供了以下核心功能: - 链式处理 - 提示模板 - 记忆系统 - 文档加载和处理 - 向量存储 - Agent系统

基础组件

1. 链(Chains)

python
from langchain.chains import LLMChain from langchain.llms import OpenAI from langchain.prompts import PromptTemplate # 创建提示模板 prompt = PromptTemplate( input_variables=["product"], template="给我写一个关于{product}的产品描述" ) # 创建LLM llm = OpenAI(temperature=0.7) # 创建链 chain = LLMChain(llm=llm, prompt=prompt) # 运行链 result = chain.run(product="智能手表") print(result)

2. 提示模板(Prompts)

python
from langchain.prompts import ( ChatPromptTemplate, SystemMessagePromptTemplate, HumanMessagePromptTemplate ) # 系统消息模板 system_template = "你是一个{role}专家" system_prompt = SystemMessagePromptTemplate.from_template(system_template) # 人类消息模板 human_template = "请给我一些关于{topic}的建议" human_prompt = HumanMessagePromptTemplate.from_template(human_template) # 组合模板 chat_prompt = ChatPromptTemplate.from_messages([ system_prompt, human_prompt ])

3. 记忆(Memory)

python
from langchain.memory import ConversationBufferMemory from langchain.chains import ConversationChain # 创建记忆系统 memory = ConversationBufferMemory() # 创建对话链 conversation = ConversationChain( llm=OpenAI(), memory=memory, verbose=True ) # 进行对话 conversation.predict(input="你好!") conversation.predict(input="我们刚才在聊什么?")

高级功能

1. 文档处理

python
from langchain.document_loaders import TextLoader from langchain.text_splitter import CharacterTextSplitter from langchain.embeddings import OpenAIEmbeddings from langchain.vectorstores import Chroma # 加载文档 loader = TextLoader('document.txt') documents = loader.load() # 分割文本 text_splitter = CharacterTextSplitter( chunk_size=1000, chunk_overlap=200 ) texts = text_splitter.split_documents(documents) # 创建向量存储 embeddings = OpenAIEmbeddings() vectorstore = Chroma.from_documents(texts, embeddings)

2. 问答系统

python
from langchain.chains import RetrievalQA # 创建问答链 qa_chain = RetrievalQA.from_chain_type( llm=OpenAI(), chain_type="stuff", retriever=vectorstore.as_retriever() ) # 提问 query = "文档中提到了哪些主要观点?" response = qa_chain.run(query)

3. Agents

python
from langchain.agents import initialize_agent, Tool from langchain.agents import AgentType # 定义工具 tools = [ Tool( name="Search", func=lambda x: "搜索结果:" + x, description="用于搜索信息的工具" ) ] # 初始化agent agent = initialize_agent( tools, OpenAI(temperature=0), agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True ) # 运行agent agent.run("查找关于人工智能的最新进展")

实践应用

1. 智能客服系统

python
from langchain.chains import ConversationalRetrievalChain # 创建检索式对话链 qa = ConversationalRetrievalChain.from_llm( llm=OpenAI(), retriever=vectorstore.as_retriever(), memory=ConversationBufferMemory( memory_key="chat_history", return_messages=True ) ) # 处理用户查询 def handle_query(query): result = qa({"question": query}) return result["answer"]

2. 文档摘要生成

python
from langchain.chains.summarize import load_summarize_chain # 创建摘要链 chain = load_summarize_chain( OpenAI(temperature=0), chain_type="map_reduce", verbose=True ) # 生成摘要 summary = chain.run(documents)

最佳实践

  1. 提示工程
  2. 使用清晰的指令
  3. 提供示例
  4. 结构化输出

  5. 性能优化

  6. 缓存结果
  7. 批处理请求
  8. 异步处理

  9. 错误处理

  10. 实现重试机制
  11. 优雅降级
  12. 日志记录

常见问题

  1. 链的选择
  2. 记忆管理
  3. 向量存储配置
  4. Agent策略
  5. 成本控制

扩展资源

  1. 官方文档
  2. 示例项目
  3. 社区贡献
  4. 最佳实践指南