Podręcznik uczestnika z objaśnieniami, przykładami i ćwiczeniami do samodzielnej nauki do Modułu 5

9. Odpowiedzi do ćwiczeń

Najpierw wykonaj zadanie, potem porównaj rozumowanie. Definicje funkcji w rozdziałach są pełnymi przykładami implementacji. Klucz wyjaśnia zachowania i dowody, nie wymaga identycznego brzmienia każdej odpowiedzi.

Ćwiczenie 1. Zakres i stan

Zakres obejmuje trzy narzędzia odczytu. „Zrestartuj usługę” powinno dać rejected / forbidden_action bez narzędzia. Przykładowe rozszerzenie list_document_sections(document_id) może odczytywać sekcje znanego dokumentu; wymaga walidacji ID i limitu wyniku. To propozycja, nie część wdrożonego rejestru.

Dwa stany mają różne conversation_id i osobne listy. Dopisanie wiadomości w pierwszym nie zmienia drugiego. last_result zachowuje ostatni RAG, a turn_log także inne zakończenia. Jedno pole nie zastąpi obu znaczeń.

Ćwiczenie 2. Pętla i TLS

Spacje dają empty_message, 1001 znaków message_too_long, a 42 invalid_message. Sprawdzenie /exit przed RAG zapobiega niepotrzebnemu zapytaniu i błędowi brakującego checkpointu. input_fn pozwala testować sekwencję wiadomości.

TLS przy None ma w pilotażu dopuszczony kontekst i tekstową odmowę z answered. Przy 1.0 wszystkie wyniki odpadły: insufficient_context / below_threshold. no_usable_results nie jest nazwą stwierdzenia „tematu nie ma w dokumentach”. Ocenę oprzyj na rzeczywistych parametrach i diagnostyce.

Ćwiczenie 3. Historia i źródła

W stałej ścieżce R3 pierwsze trzy pytania uruchamiają RAG, czwarte odczytuje źródła tury 3. source_origin.result_id wskazuje zewnętrzne ID tury, nie rag.result_id. Nowy RAG z pustymi sources usuwa stare źródła, aby nie przypisać ich kolejnej odmowie.

Po /clear zaimek „jej” nie ma odniesienia. Historia wskazująca jednocześnie usługę i bazę też nie daje jednoznacznego wyboru. W obu przypadkach oczekiwane jest clarification_needed. Brak fragmentu o przywróceniu kopii w top-3 wyjaśnia odmowę w pilotażu, lecz nie dowodzi braku tej wiedzy w indeksie.

Ćwiczenie 4. Format, intencja, komunikat

Przypadek Oczekiwanie
Pytanie o stan tool_call → answer_from_documents.
Źródła są tool_call → show_last_sources, arguments={}.
Źródeł brak clarification_needed z wyjaśnieniem braku poprzedniej odpowiedzi.
Metadane DOC-INSTR get_document_metadata z właściwym ID.
Metadane bez ID clarification_needed bez zgadywania.
Wykres bez narzędzia no_suitable_tool.
Wykonanie restartu rejected.

Komentarz przed JSON powoduje parse_error; zachowaj surowy tekst. Poprawny JSON z niewłaściwą akcją to błąd selektora. Prośba o document_id przy show_last_sources to błędny komunikat mimo właściwego rodzaju zakończenia. W R4 tool_executed pozostaje false.

Ćwiczenie 5. Granica wykonania

Błędne top_k, bool jako próg i dodatkowe command dają invalid_arguments oraz zero wywołań dublera. Nieznana funkcja daje unknown_tool. Brak źródeł daje clarification_needed, ponieważ narzędzie istnieje. Ścieżka ../../sekret.txt nie jest znanym document_id.

Wyjątek i nadmierny wynik pojawiają się podczas lub po wywołaniu, dlatego mają tool_error. Druga próba w tej samej turze daje tool_rejected, także po odrzuceniu pierwszej. Macierz obejmuje 13 przypadków, lecz test limitu ma dwie próby, stąd 14 wpisów śladu i dwa wpisy z jednym result_id.

Ćwiczenie 6. Integracja i raport

Każde kontrolowane zakończenie przechodzi przez finalize_turn. Próba narzędzia ma ślad także przy odrzuceniu. Tura zakończona przed narzędziem, np. puste wejście, nie otrzymuje fikcyjnego wpisu tool_trace.

W pilotażu tura 2 błędnie wybrała show_last_sources dla pytania o stan. Nie zmieniaj logu na oczekiwane answer_from_documents. Tura 3 pokazała ograniczenie wyszukiwania; TLS rozdzielił odmowę od filtrowania. Po /clear powstaje nowa rozmowa od tury 1.

Kontroler sprawdza 11 wyników R6, powiązania oraz kompletność oceny i raportu. Nie ocenia prawdziwości odpowiedzi ani sensu uzasadnienia. Własna analiza ma wskazać konkretne pole albo fragment wspierający wniosek.

ENHANCER+ · Politechnika Warszawska · podręcznik do samodzielnej pracy · M5