保存聊天记录

34 阅读1分钟
# 导入操作系统模块,用于操作环境变量
import os
# 从 openai 导入 base_url(但在此代码中未使用)
from openai import base_url

# 从自定义的 config.load_key 模块导入 load_key 函数,用于加载API密钥
from config.load_key import load_key

# 设置 LangSmith 追踪功能为开启状态
os.environ["LANGSMITH_TRACING"] = "true"

# 设置 LangSmith 项目名称
os.environ["LANGSMITH_PROJECT"] = "firstLangChainDemo"

# 从配置文件加载 LangSmith API 密钥并设置到环境变量中
os.environ["LANGSMITH_API_KEY"] = load_key("LANGSMITH_API_KEY")

# 从 langchain_openai 模块导入 ChatOpenAI 类,用于与OpenAI模型交互
from langchain_openai import ChatOpenAI

# 检查环境变量中是否已存在 OPENAI_API_KEY,如果不存在则从配置文件加载
if not os.environ.get("OPENAI_API_KEY"):
    os.environ["OPENAI_API_KEY"] = load_key("OPENAI_API_KEY")

# 初始化 ChatOpenAI 实例,指定模型名称、API基础URL和API密钥
llm = ChatOpenAI(model="gpt-4o-mini", base_url="https://api.gptsapi.net/v1", api_key=os.environ["OPENAI_API_KEY"])

# 从 langchain_core.chat_history 导入 InMemoryChatMessageHistory,用于在内存中存储聊天历史
from langchain_core.chat_history import InMemoryChatMessageHistory

# 创建一个内存聊天历史记录实例
history = InMemoryChatMessageHistory()

# 向历史记录中添加用户消息"你是谁?"
history.add_user_message("你是谁?")

# 调用语言模型处理历史消息列表,获取AI回复
aimessage = llm.invoke(history.messages)

# 打印AI回复的内容
print(aimessage.content)

# 向历史记录中添加用户消息"请重复一次?"
history.add_message("请重复一次?")

# 再次调用语言模型处理包含之前对话的历史消息列表
aimessage2 = llm.invoke(history.messages)

# 打印第二次AI回复的内容
print(aimessage2.content)

# 将第二次AI回复的消息添加到历史记录中
history.add_message(aimessage2)
```
```