Budowa asystenta dokumentów

3. Pamięć rozmowy i pełne pytanie

Lokalne chatboty, agenci i systemy RAG z własną bazą wiedzy

Praktyka po kursie · bez GUI

Asystent dokumentów w konsoli

Od działającego RAG do rozmowy i kontrolowanych narzędzi

Orientacyjny czas: 30 min · Tryb pracy: najpierw własna próba, potem przykład

Otwórz pamiec.py w wersji Start. Uzupełnisz nowy_stan, rozwin_pytanie i zapamietaj. Pozostałe funkcje pomocnicze są gotowe. Przed pisaniem kodu rozrysuj różnicę między historią rozmowy a ostatnimi źródłami.

Zadanie do samodzielnego wykonania

  1. nowy_stan() ma za każdym razem zwracać nowy słownik, własny conversation_id, next_turn=1, puste history i last_sources, source_origin=None i tool_attempted=False.
  2. rozwin_pytanie(question, history) ma zwrócić original, standalone, history_used i clarification. Pełne pytanie przepuszczaj bez zmian. Dla niejasnego zaimka zwróć standalone=None i prośbę o doprecyzowanie.
  3. Sprawdź tematy wcześniejszych pytań, pomijając prośby o źródła i metadane. Uwzględnij zmianę tematu także po błędzie wyboru narzędzia — użytkownik mógł już zapytać o inny obiekt. Jeśli jedynym tematem jest usługa docassist-api, rozwiń „Jak sprawdzić jej stan?” do pełnego pytania. Drugi obsługiwany wzorzec zawiera słowo failed i dotyczy nieudanego uruchomienia po zmianie konfiguracji.
  4. zapamietaj(state, result) ma przechować maksymalnie history_turns ostatnich poprawnych wiadomości z wynikami. Skróć przechowywaną odpowiedź do 1200 znaków. Zwiększ numer tury także po odrzuconym pustym wejściu, ale nie dodawaj pustego wejścia do historii.
  5. Aktualizuj źródła tylko po wykonaniu answer_from_documents. Wynik answered zastępuje źródła; error albo insufficient_context je czyści. Metadane i pokazanie źródeł pozostawiają ich pochodzenie bez zmian.

Pamięć nie jest bazą wiedzy. Resolver czyta wcześniejsze pytania, a nie traktuje wygenerowanych odpowiedzi jako faktów. Nowe pytanie merytoryczne, również rozwinięte z historii, uruchamia nowe wyszukiwanie i generację RAG.

Przykłady do sprawdzenia

Historia i wiadomośćOczekiwane zachowanie
Brak historii → Jak sprawdzić jej stan?Doprecyzowanie bez wywołania modelu.
Stan docassist-api? → Jak sprawdzić jej stan?Pełne pytanie o usługę i świeży RAG.
Pytanie o usługę, potem o bazę danych → Jak sprawdzić jej stan?Doprecyzowanie: dwa możliwe obiekty.
Pokaż źródłaNie przekształcaj tej wiadomości w pytanie do dokumentów.
python -m unittest sprawdz.Pamiec -v

Te testy nie używają Ollama. Pełną aktualizację pamięci sprawdzisz później w grupie Przeplyw, gdy uzupełnisz krok asystenta. Krótkie okno pamięci może zapomnieć temat po kilku innych wiadomościach; wtedy użytkownik powinien podać pełne pytanie.

Materiał uzupełniający do modułów 1–6 · wersja 1.0 · 30.09.2026