Skip to content

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": "如何重置密码?"})