引言
AI聊天机器人已成为企业客户服务和用户交互的重要工具。本教程将使用LangChain(一个流行的LLM应用开发框架)和OpenAI API,构建一个具有上下文记忆功能的聊天机器人。你将学到从环境配置到部署的完整流程。
准备工作
环境要求
- Python 3.10+
- OpenAI API密钥(需开通GPT-4访问权限)
- 安装必要的库:
pip install langchain openai python-dotenv streamlit
项目结构
chatbot/
├── .env
├── main.py
├── memory.py
└── requirements.txt
第一步:配置环境变量
在.env文件中存储API密钥:
OPENAI_API_KEY=your-api-key-here
第二步:实现记忆功能
使用LangChain的ConversationBufferMemory来存储对话历史:
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory(return_messages=True)
第三步:构建聊天链
核心代码:
from langchain.chains import ConversationChain
from langchain.llms import OpenAI
llm = OpenAI(temperature=0.7, model="gpt-4")
conversation = ConversationChain(llm=llm, memory=memory, verbose=True)
第四步:添加自定义功能
1. 系统提示词
from langchain.schema import SystemMessage
system_message = SystemMessage(content="你是一个友好的AI助手,用中文回答。")
2. 上下文窗口限制
使用ConversationSummaryMemory来压缩长对话:
from langchain.memory import ConversationSummaryMemory
memory = ConversationSummaryMemory(llm=llm, max_token_limit=1000)
3. 错误处理
try:
response = conversation.predict(input=user_input)
except Exception as e:
response = f"抱歉,出错了:{str(e)}"
第五步:创建Web界面
使用Streamlit快速搭建前端:
import streamlit as st
st.title("AI聊天机器人")
if "messages" not in st.session_state:
st.session_state.messages = []
for msg in st.session_state.messages:
with st.chat_message(msg["role"]):
st.write(msg["content"])
if prompt := st.chat_input("请输入你的问题"):
st.session_state.messages.append({"role": "user", "content": prompt})
with st.chat_message("user"):
st.write(prompt)
response = conversation.predict(input=prompt)
st.session_state.messages.append({"role": "assistant", "content": response})
with st.chat_message("assistant"):
st.write(response)
第六步:部署
使用Streamlit Cloud
- 将代码推送到GitHub仓库。
- 登录share.streamlit.io,连接仓库。
- 设置环境变量
OPENAI_API_KEY。 - 点击Deploy。
使用Docker
FROM python:3.10-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
CMD ["streamlit", "run", "main.py", "--server.port=8501"]
进阶技巧
- 流式输出:使用
streaming=True参数实现逐字显示。 - 多轮对话优化:结合
ConversationKGMemory提取知识图谱。 - 插件系统:通过LangChain的
Tool集成搜索、计算等外部功能。
结语
通过本教程,你已掌握了使用LangChain和OpenAI构建聊天机器人的核心方法。这个基础框架可以扩展为客服机器人、教育助手等复杂应用。建议进一步学习LangChain的Agent和Chain概念,开发更智能的AI系统。