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
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).
| Nazwa | Argumenty wykonania | Wynik |
|---|---|---|
| answer_from_documents | question — pełne pytanie ustalone przez aplikację | Wynik RAG z odpowiedzią, źródłami i diagnostyką. |
| show_last_sources | Pusty obiekt {} | Kopia zapisanych źródeł oraz numer i ID tury ich pochodzenia. |
| get_document_metadata | document_id — jeden znany, jawnie podany identyfikator | Metadane dokumentu z katalogu zbudowanego na podstawie fragmentów. |
- Utwórz wynik narzędzia z polami name, status, executed, arguments, data, reason. Domyślnie status=rejected i executed=False.
- 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.
- 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.
- Wywołaj sprawdz_argumenty. Dodatkowe pole, nieznany dokument albo pytanie różne od standalone ma zatrzymać wykonanie.
- 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.
- Oddziel completed od error. completed oznacza, że funkcja zwróciła wynik, nie że odpowiedź merytoryczna jest poprawna.
python -m unittest sprawdz.Narzedzia -vJawny 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