Как передать валидный chat_history для агента?

# Функция для ответа ИИ на сообщения пользователя
@app.on_message(filters.text)
async def handle_message(app, message):
    try:
        username = message.from_user.username

        if username in target_users:
            chat_manager = ChatManager([], username)
            chat_manager.set_memory()

            # Получаем текст сообщения
            user_message = message.text
            # На основе пользовательского сообщения генерируем ответ
            output       = chat_manager.response_for_user(user_message)
            breakpoint()
            await app.send_message(username, output)
    except Exception as e:
        print(f"Ошибка при получении сообщения от пользователя: {e}")

app.run()

set_memory:

def set_memory(self):
        self.memory = self.get_memory()

вот логика ответа на сообщение пользователя в телеграм:

def response_for_user(self, user_message):
        try: 
            llm = ChatOpenAI(
                openai_api_key = os.environ["OPENAI_API_KEY"],
                model_name     = "gpt-4-1106-preview",
                temperature    = 0.0
            )

            tool_csv = create_csv_agent(
                OpenAI(temperature=0),
                "orders.csv",
                verbose    = True,
                agent_type = AgentType.ZERO_SHOT_REACT_DESCRIPTION
            )

            tools = [
                Tool(
                    name        = "CSV поиск",
                    func        = tool_csv.run,
                    description = (
                        "используй этот инструмент, для поиска в базе данных csv"
                    )
                )
            ]

            agent = initialize_agent(
                agent                 = "chat-conversational-react-description",
                tools                 = tools,
                llm                   = llm,
                verbose               = True,
                max_iterations        = 3,
                early_stopping_method = "generate",
                memory                = self.get_memory(),
                input_variables       = ["chat_history", "input"]
            )

            sys_msg = """
                Assistant - это обширная языковая модель, разработанная OpenAI.
                Assistant разработан таким образом, чтобы иметь возможность ...
            """
            
            new_prompt = agent.agent.create_prompt(
                system_message = sys_msg,
                tools          = tools
            )
            
            agent.agent.llm_chain.prompt = new_prompt
            output                       = agent.run(user_message)
            
            breakpoint()
            return output
        except Exception as e:
            print(e)

в get_memory получаю память:

def get_memory(self):
    return VectorStoreRetrieverMemory(
        retriever=self.initialize_memory(), memory_key="chat_history", input_key="input"
    )

initialize_memory:

def initialize_memory(self):
        global database

        current_username  = self.username
        embedding_fn      = OpenAIEmbeddings()
        persist_directory = f"./db_mem/{current_username}"

        if not os.path.exists(persist_directory) or os.listdir(persist_directory):
            vectorstore = Chroma(
                embedding_function=embedding_fn, persist_directory=persist_directory
            )
            vectorstore.persist()
        else:
            vectorstore = Chroma(embedding_fn)

        print("Инициализация векторной бд для памяти")
        
        db_name                = f"db_{current_username}"
        self.database[db_name] = vectorstore
        retriever              = vectorstore.as_retriever(search_kwargs=dict(k=4))

        return retriever

получаю ошибку при отправке сообщения пользователем:

variable chat_history should be a list of base messages, got input:

Что вы можете предложить?


Ответы (0 шт):