НачатьНачать бесплатно

Включение многоходового диалога с памятью

Вы почти готовы поделиться обновлённым чат-ботом с администрацией школы! Чтобы студенты могли комфортно пользоваться им, важно дать им возможность задавать уточняющие вопросы. Если первый ответ чат-бота окажется неполным, студенты смогут скорректировать вопрос в ходе диалога. Сейчас вы адаптируете функцию потоковой передачи так, чтобы поддерживать несколько ходов разговора: чат-бот будет выводить как вопрос пользователя, так и свой ответ. Для включения памяти LangGraph будет отправлять языковой модели полную историю переписки при каждом уточняющем вопросе. Параметры config уже заданы для одного пользователя:

config = {"configurable": {"thread_id": "1"}}

Это упражнение является частью курса

Проектирование агентных систем с LangChain

Посмотреть курс

Инструкции к упражнению

  • Для каждого хода диалога выведите вопрос пользователя query из списка queries.
  • Выполните итерацию по msg и metadata с помощью app.stream(), передав query в качестве content объекта HumanMessage вместе с config, и объедините значения msg.content.
  • Чтобы извлечь ответы чат-бота, выведите msg.content, исключив все сообщения msg типа HumanMessage, и добавьте новую строку перед следующим вопросом.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# Print the user query first for every interaction 
def user_agent_multiturn(queries):  
    for ____ in ____:
        print(f"User: {____}")
        
        # Stream through messages corresponding to queries, excluding metadata 
        print("Agent: " + "".join(____.____ for ____, ____ in app.____(
                {"messages": [____(____=_____)]}, config, stream_mode="messages") 
            
            # Filter out the human messages to print agent messages
            if ____.____ and not isinstance(____, ____)) + "____")       

queries = ["Is `stressed desserts?` a palindrome?", "What about the word `kayak`?",
    "What happened on the May 8th, 1945?", "What about 9 November 1989?"]
user_agent_multiturn(queries)
Редактировать и запускать код