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