目标
完成本教程后,你将拥有一个基于LangChain和GPT-4o的聊天机器人,支持上下文记忆、自定义提示词和流式输出。
环境准备
1. 安装依赖
pip install langchain langchain-openai python-dotenv
2. 设置API密钥
创建.env文件:
OPENAI_API_KEY=your-api-key-here
第一步:基础聊天机器人
1.1 初始化模型
from langchain_openai import ChatOpenAI
from dotenv import load_dotenv
load_dotenv()
llm = ChatOpenAI(model="gpt-4o", temperature=0.7)
1.2 创建简单对话
from langchain.schema import HumanMessage, AIMessage
messages = [HumanMessage(content="你好!")]
response = llm.invoke(messages)
print(response.content)
第二步:添加记忆功能
使用ConversationBufferMemory存储历史消息。
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain
memory = ConversationBufferMemory()
conversation = ConversationChain(llm=llm, memory=memory)
print(conversation.predict(input="你好!"))
print(conversation.predict(input="我叫小明。"))
print(conversation.predict(input="我的名字是什么?"))
第三步:自定义提示词
通过PromptTemplate定制机器人的角色和回复风格。
from langchain.prompts import PromptTemplate
template = """你是一个乐于助人的AI助手。请用中文回答。
历史对话:
{history}
用户:{input}
AI:"""
prompt = PromptTemplate(input_variables=["history", "input"], template=template)
conversation = ConversationChain(llm=llm, prompt=prompt, memory=memory)
第四步:流式输出
实现逐字输出,提升用户体验。
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
llm = ChatOpenAI(model="gpt-4o", streaming=True, callbacks=[StreamingStdOutCallbackHandler()])
第五步:部署为Web服务(可选)
使用FastAPI创建API接口。
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Message(BaseModel):
content: str
@app.post("/chat")
async def chat(message: Message):
response = llm.invoke([HumanMessage(content=message.content)])
return {"reply": response.content}
总结
通过以上步骤,你已成功搭建一个具备记忆和自定义能力的AI聊天机器人。你可以进一步集成外部知识库、工具调用等高级功能。