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
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
- 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.
- 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.
- 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.
- 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.
- 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ła | Nie przekształcaj tej wiadomości w pytanie do dokumentów. |
python -m unittest sprawdz.Pamiec -vTe 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