准备工作
环境要求
- 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的智能问答机器人。你可以扩展功能,如添加多轮对话、支持文件上传等。