LangChain 实战项目
TIP
综合运用 LangChain 的各模块,构建一个智能客服助手。
项目结构
python
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_community.vectorstores import FAISS
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.memory import ConversationSummaryBufferMemory
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain.tools import tool
# 初始化 LLM
llm = ChatOpenAI(model="gpt-4", temperature=0.7)
# 加载知识库
with open("knowledge.txt", "r") as f:
text = f.read()
chunks = RecursiveCharacterTextSplitter(
chunk_size=500, chunk_overlap=50
).split_text(text)
vectorstore = FAISS.from_texts(chunks, OpenAIEmbeddings())
retriever = vectorstore.as_retriever(k=3)
# 定义工具
@tool
def search_knowledge(query: str) -> str:
"""搜索知识库"""
docs = retriever.get_relevant_documents(query)
return "\n".join([d.page_content for d in docs])
@tool
def create_ticket(issue: str) -> str:
"""创建工单"""
return f"已创建工单: {int(time.time())}"
# 构建 Agent
agent = create_tool_calling_agent(llm, [search_knowledge, create_ticket], prompt)
executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
executor.invoke({"input": "如何重置密码?"})