Как взаимодействуют create_history_aware_retriever и RunnableWithMessageHistory при совместном использовании?Python

Программы на Python
Anonymous
Как взаимодействуют create_history_aware_retriever и RunnableWithMessageHistory при совместном использовании?

Сообщение Anonymous »

Я создаю чат-бота, следуя примеру Conversational RAG в документации langchain: https://python.langchain.com/v0.2/docs/ ... t_history/
Итак на данный момент мне удалось создать бота с историей чата, точно так же, как в примере, только со своей моделью и ретривером:

Код: Выделить всё

retriever = load_embeddings()
llm = load_llm()
history_aware_retriever = contextualize_llm_with_chat_history(model=llm, embeddings_retriever=retriever)
rag_chain = create_qa_llm_chain(chat_history_chain=history_aware_retriever, model=llm)
Когда я представляю RunnableWithMessageHistory, я сталкиваюсь с ошибкой только при использовании потокового вызова модели:

Код: Выделить всё

def get_session_history(session_id: str) -> BaseChatMessageHistory:
if session_id not in store:
store[session_id] = ChatMessageHistory()
return store[session_id]

store = {}

conversational_rag_chain = RunnableWithMessageHistory(
rag_chain,
get_session_history,
input_messages_key="input",
history_messages_key="chat_history",
output_messages_key="answer",
)
Если я использую разговорную_rag_chain.invoke(), я получаю ожидаемую информацию. Однако когда я решаю транслировать его:

Код: Выделить всё

for chunk in conversational_rag_chain.stream({"input": question}, config={"configurable": {"session_id": "abc123"}}):
print(chunk)
Перед началом потоковой передачи я вижу в консоли следующее:

Код: Выделить всё

Error in RootListenersTracer.on_chain_end callback: KeyError('answer')
Error in callback coroutine: KeyError('answer')
Я не понимаю, что означает эта ошибка, поскольку поток запускается, как и ожидалось, сразу после этих двух сообщений.
Я вижу, что я не тот только один с этой проблемой: https://github.com/langchain-ai/langchain/issues/24713

Подробнее здесь: https://stackoverflow.com/questions/788 ... nteract-wh

Вернуться в «Python»