您当前的位置:首页 > 计算机 > 编程开发 > 人工智能

LangChain 实战教程:构建带记忆的聊天机器人

时间:03-27来源:作者:点击数:
CDSY,CDSY.XYZ

前言

复制后 格式化下 填入环境变量即可运行

一、简介

在传统聊天机器人中,对话往往是“无状态”的——每次对话都独立处理,无法记住上下文。本教程将使用LangChain框架,构建一个能够记住对话历史的智能聊天机器人。


二、前置准备

  1. 安装依赖
pip install langchain langchain-openai python-dotenv
  1. 配置API密钥
    .env文件中添加:
OPENAI_API_KEY = "your-api-key"
# 或使用本地模型(如Llama2)的配置

三、核心实现步骤

1. 初始化基础组件
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory
from langchain_openai import ChatOpenAI

# 初始化大语言模型
llm = ChatOpenAI(temperature=0.5)  # 控制回答随机性

# 创建对话记忆模块
memory = ConversationBufferMemory()
2. 构建对话链
conversation = ConversationChain(
    llm=llm,
    memory=memory,
    verbose=True  # 显示内部思考过程
)
3. 实现对话循环
print("机器人:您好!我是您的AI助手,输入'exit'退出对话")
whileTrue:
    user_input = input("您:")

if user_input.lower() == 'exit':
print("对话已存档,下次再见!")
break

    response = conversation.predict(input=user_input)
print(f"机器人:{response}")

四、进阶功能实现

1. 记忆类型扩展

LangChain 提供多种记忆模式:

  • ConversationBufferWindowMemory
    :仅保留最近N轮对话
  • ConversationSummaryMemory
    :自动生成对话摘要
  • EntityMemory
    :重点记忆关键实体
from langchain.memory import ConversationSummaryMemory

summary_memory = ConversationSummaryMemory(llm=llm)
conversation = ConversationChain(llm=llm, memory=summary_memory)
2. 记忆持久化存储
# 保存对话历史到文件
import json

with open('chat_history.json', 'w') as f:
    json.dump(memory.load_memory_variables({}), f)

# 从文件加载历史
with open('chat_history.json') as f:
    memory.save_context({}, json.load(f))
3. 对话增强功能
from langchain.agents import Tool
from langchain.utilities import GoogleSearchAPIWrapper

search = GoogleSearchAPIWrapper()
tools = [
    Tool(
        name="Web Search",
        func=search.run,
        description="当需要实时信息时使用"
    )
]

# 结合搜索功能的对话链
conversation_with_search = initialize_agent(
    tools, 
    llm, 
    agent="conversational-react-description",
    memory=memory
)

五、关键参数解析

参数 说明 推荐值
temperature 控制回答创造性 0.2-0.7
max_token_limit 记忆存储上限 2000
k (窗口记忆) 保留最近对话轮数 3-5

六、实战演示

对话示例:

用户:我计划去巴黎旅行
机器人:巴黎是个浪漫的城市!需要我推荐景点吗?

用户:是的,请推荐三个必去的地方
机器人:1. 埃菲尔铁塔 2. 卢浮宫 3. 巴黎圣母院

用户:你刚才说的第一个景点是什么?
机器人:您指的是埃菲尔铁塔,建议日落时分参观...

七、注意事项

  1. 长期记忆会消耗更多Token
  2. 敏感信息需做脱敏处理
  3. 定期清理无效记忆
  4. 不同LLM的记忆能力存在差异
CDSY,CDSY.XYZ
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐