Skip to main content

给 OpenAI Functions Agent 添加内存

本笔记本介绍了如何给 OpenAI Functions agent 添加内存。

from langchain import (
LLMMathChain,
OpenAI,
SerpAPIWrapper,
SQLDatabase,
SQLDatabaseChain,
)
from langchain.agents import initialize_agent, Tool
from langchain.agents import AgentType
from langchain.chat_models import ChatOpenAI

API 参考:

llm = ChatOpenAI(temperature=0, model="gpt-3.5-turbo-0613")
search = SerpAPIWrapper()
llm_math_chain = LLMMathChain.from_llm(llm=llm, verbose=True)
db = SQLDatabase.from_uri("sqlite:///../../../../../notebooks/Chinook.db")
db_chain = SQLDatabaseChain.from_llm(llm, db, verbose=True)
tools = [
Tool(
name="Search",
func=search.run,
description="当你需要回答关于当前事件的问题时很有用。你应该提出有针对性的问题",
),
Tool(
name="Calculator",
func=llm_math_chain.run,
description="当你需要回答关于数学的问题时很有用",
),
Tool(
name="FooBar-DB",
func=db_chain.run,
description="当你需要回答关于 FooBar 的问题时很有用。输入应该是一个包含完整上下文的问题",
),
]
from langchain.prompts import MessagesPlaceholder
from langchain.memory import ConversationBufferMemory

agent_kwargs = {
"extra_prompt_messages": [MessagesPlaceholder(variable_name="memory")],
}
memory = ConversationBufferMemory(memory_key="memory", return_messages=True)

API 参考:

agent = initialize_agent(
tools,
llm,
agent=AgentType.OPENAI_FUNCTIONS,
verbose=True,
agent_kwargs=agent_kwargs,
memory=memory,
)
agent.run("hi")
> 进入新的对话链...
你好!今天我能帮你什么?
> 完成对话链。
'你好!今天我能帮你什么?'
agent.run("my name is bob")
> 进入新的对话链...
很高兴认识你,Bob!我今天能帮你什么?
> 完成对话链。
'很高兴认识你,Bob!我今天能帮你什么?'
agent.run("whats my name")
> 进入新的对话链...
你的名字是 Bob。
> 完成对话链。
'你的名字是 Bob。'