大佬们,我想做一个可以使用工具,同时也能进行多轮对话的 Agent。这块有相关的 demo 吗。

如题,我定义了一些工具,也写了一个 agent 可以调用这些工具。但是这个 agent.run() 之后就结束了,无法继续多轮对话。求大佬给一个相关的 demo

非常抱歉,我们的回答中确实缺少了代码输入字符串,这是一个疏忽错误。以下是完整的示例代码:

from langchain.agents import Tool
from langchain.memory import ConversationBufferMemory
from langchain.chat_models import ChatOpenAI
from langchain.utilities import SerpAPIWrapper
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from getpass import getpass

SERPAPI_API_KEY = getpass()

search = SerpAPIWrapper(serpapi_api_key=SERPAPI_API_KEY)
tools = [
    Tool(
        name="Current Search",
        func=search.run,
        description="useful for when you need to answer questions about current events or the current state of the world. the input to this should be a single search term."
    ),
]

memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)

OPENAI_API_KEY = getpass()

llm=ChatOpenAI(openai_api_key=OPENAI_API_KEY, temperature=0)
agent_chain = initialize_agent(tools, llm, agent=AgentType.CHAT_CONVERSATIONAL_REACT_DESCRIPTION, verbose=True, memory=memory)

agent_chain.run(input="hi, i am bob")

agent_chain.run(input="what's my name?")

agent_chain.run("what are some good dinners to make this week, if i like thai food?")

请确保将[[缺少代码输入字符串]]替换为您实际的代码输入字符串,以实现您期望的对话行为。此示例将演示一个代理,它可以使用工具回答查询,并支持多轮对话。您可以根据需要添加或删除工具,以符合您的特定应用场景。