AI百事通

从零搭建智能问答机器人:基于LangChain与GPT-5

📅 2026-07-16📰 ai_generated👁 1 次阅读
从零搭建智能问答机器人:基于LangChain与GPT-5
LangChainGPT-5问答机器人教程Python

准备工作

环境要求

  • Python 3.10+
  • OpenAI API Key(GPT-5访问权限)
  • 基本命令行知识

安装依赖

pip install langchain openai chromadb tiktoken

第一步:创建知识库

准备文档

将你的文档(如PDF、TXT、Markdown)放入 knowledge/ 文件夹。

加载与分割

from langchain.document_loaders import DirectoryLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter

loader = DirectoryLoader('knowledge/', glob='**/*.txt')
documents = loader.load()

text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
docs = text_splitter.split_documents(documents)

嵌入与存储

使用Chroma向量数据库:

from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma

embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(docs, embeddings)

第二步:构建问答链

创建检索器

retriever = vectorstore.as_retriever(search_kwargs={'k': 3})

初始化LLM

使用GPT-5:

from langchain.chat_models import ChatOpenAI

llm = ChatOpenAI(model='gpt-5', temperature=0)

组合成链

from langchain.chains import RetrievalQA

qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type='stuff',
    retriever=retriever
)

第三步:添加记忆功能

为了让机器人记住上下文,引入对话记忆:

from langchain.memory import ConversationBufferMemory

memory = ConversationBufferMemory(memory_key='chat_history', return_messages=True)

qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type='stuff',
    retriever=retriever,
    memory=memory
)

第四步:构建Web界面

使用Gradio快速搭建:

import gradio as gr

def respond(question, history):
    answer = qa_chain.run(question)
    return answer

gr.ChatInterface(respond).launch()

测试与优化

测试用例

  • 问:你的知识库中有什么内容?
  • 问:请详细介绍某个概念。

优化建议

  • 调整chunk_size:根据文档长度调整。
  • 增加检索数量:提高k值可获取更多上下文。
  • 使用不同模型:如GPT-5-16k处理长文本。

部署上线

推荐使用Hugging Face Spaces或云服务器部署:

git init
git add .
git commit -m 'initial'
git remote add origin <your-repo>
git push -u origin main

总结

通过本教程,你已成功搭建一个基于LangChain和GPT-5的智能问答机器人。你可以扩展功能,如添加多轮对话、支持文件上传等。