Budowa asystenta dokumentów

4. Narzędzia tylko do odczytu

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

Narzędzie jest zwykłą funkcją Pythona o określonym wejściu i wyjściu. Model nie otrzymuje prawa wykonywania dowolnego kodu. W narzedzia.py znajdziesz gotowe funkcje trzech narzędzi i walidator argumentów. Twoim zadaniem jest uzupełnienie wykonaj(call, context).

NazwaArgumenty wykonaniaWynik
answer_from_documentsquestion — pełne pytanie ustalone przez aplikacjęWynik RAG z odpowiedzią, źródłami i diagnostyką.
show_last_sourcesPusty obiekt {}Kopia zapisanych źródeł oraz numer i ID tury ich pochodzenia.
get_document_metadatadocument_id — jeden znany, jawnie podany identyfikatorMetadane dokumentu z katalogu zbudowanego na podstawie fragmentów.
  1. Utwórz wynik narzędzia z polami name, status, executed, arguments, data, reason. Domyślnie status=rejected i executed=False.
  2. Jeśli tool_attempted jest już prawdą, odrzuć wywołanie. W przeciwnym razie od razu ustaw tę flagę — także nieudana próba zużywa limit.
  3. Dopuść wyłącznie obiekt z polami action i arguments. Nazwę sprawdź w stałym słowniku REGISTRY. Nie używaj eval, exec ani wyszukiwania funkcji po nazwach w całym programie.
  4. Wywołaj sprawdz_argumenty. Dodatkowe pole, nieznany dokument albo pytanie różne od standalone ma zatrzymać wykonanie.
  5. Dopiero po walidacji ustaw executed=True i uruchom funkcję z rejestru. Sprawdź, czy wynik jest słownikiem możliwym do zapisania jako JSON i mieści się w limicie 120000 znaków.
  6. Oddziel completed od error. completed oznacza, że funkcja zwróciła wynik, nie że odpowiedź merytoryczna jest poprawna.
python -m unittest sprawdz.Narzedzia -v

Jawny identyfikator: pytanie „Pokaż metadane DOC-INSTR” pozwala odczytać ten dokument. „Pokaż jego metadane” wymaga doprecyzowania. W tym ćwiczeniu nie odgadujemy ID na podstawie poprzednich źródeł ani wyboru modelu.

Sprawdź przed przejściem dalej

  • Nieznana nazwa nigdy nie uruchamia funkcji.
  • Druga próba w tej samej turze zostaje odrzucona.
  • Katalog nie akceptuje sprzecznych wersji metadanych tego samego document_id.

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