Skip to main content

Deterministyczne wywoływanie narzędzi i próbkowanie gramatyczne

DLA AGENTÓW AIChatGPTClaude

Technologia gwarantująca 100% poprawność składniową argumentów narzędzi agenta dzięki maskowaniu gramatycznemu logitów (GBNF / Outlines) oraz ścisłej walidacji schematów Pydantic/Zod.

1. Przegląd koncepcji i problem systemowy

Autonomiczny agent jest tak silny, jak niezawodna jest jego ability do wywoływania narzędzi:

  • Wyobraź sobie agenta, który po 10 minutach skomplikowanych obliczeń próbuje zapisać wynik w bazie danych za pomocą execute_sql, ale pomija przecinek w argumentach JSON lub zostawia niedomknięty nawias klamrowy.
  • Bez kontroli gramatycznej runtime rzuca błąd parsowania, agent wpada w panikę, zaczyna poprawiać swoje wywołanie i marnuje setki tokenów na bezcelowe próby regeneracji.

Deterministic Tool Calling eliminuje probabilistyczny chaos. To zestaw metod gwarantujących, że żaden bajt argumentów wygenerowany przez model nie może wyjść poza ściśle zdefiniowaną strukturę danych.

2. Taksonomia architektoniczna i model mentalny

[ PROMPT SYSTEMOWY + SCHEMAT JSON ]
                                       │
                                       ▼
                       [ MODEL GENERUJE NASTĘPNY TOKEN ]
                                       │
                                       ▼
                     ┌───────────────────────────────────┐
                     │     LOGIT MASKING ENGINE (GBNF)   │
                     │  Czy token jest dozwolony przez schemat? │
                     └───┬───────────────────────────┬───┘
                         │ TAK                       │ NIE
                         ▼                           ▼
                 [ Token przyjęty ]         [ Prawdopodobieństwo = -INF ]
                 (np. ':')                  (token zablokowany)
                         │
                         ▼
             [ 100% POPRAWNE WYWOŁANIE NARZĘDZIA ]
  1. Schema-to-Grammar Compilation: Schemat narzędzia (zdefiniowany przez Pydantic lub Zod) jest automatycznie translowany do wyrażenia regularnego lub gramatyki bezkontekstowej (GBNF/EBNF).
  2. Runtime Logit Pruning: Na każdym kroku generowania silnik inferencyjny odcina tokeny, które złamałyby ważność JSON-a lub naruszyły typ pola (np. zabronione jest generowanie liter, jeśli pole oczekuje wartości typu integer).

3. Praktyczne scenariusze inżynierskie w środowisku produkcyjnym

01. Bezbłędne wywołania złożonych API z typowaniem

Zastosowanie PydanticAI do wywołania narzędzia tworzenia płatności:

from pydantic import BaseModel, Field

class CreatePayment(BaseModel):
    account_id: str = Field(pattern=r"^ACC-[0-9]{6}$")
    amount_cents: int = Field(gt=0, le=100_000)
    currency: str = Field(pattern=r"^(USD|EUR|UAH)$")

Dzięki ścisłemu wywoływaniu model fizycznie nie może wygenerować kwoty ze znakiem minus ani niepoprawnego identyfikatora konta.

02. Wykonywanie komend systemu plików bez możliwości wstrzykiwania kodu

Narzędzie edycji plików wymaga precyzyjnych numerów linii start_line oraz end_line. Gramatyka gwarantuje, że parametry te są czystymi liczbami dodatnimi, co zapobiega niespodziewanym awariom utility sed lub wewnętrznych funkcji zastępowania tekstu.

4. Pułapki, typowe błędy i bezpieczeństwo

  • Over-Constrained Deadlocks: Jeśli gramatyka jest skonstruowana zbyt sztywno i model z powodu logicznego impasu nie wie, co wygenerować, może się zawiesić lub wypisywać nieskończone spacje. Zawsze zostawiaj pole explanation lub error_reason w schemacie jako wyjście awaryjne dla sytuacji nietypowych.
  • Wpływ na szybkość inferencji: Złożone gramatyki z głębokim zagnieżdżeniem mogą zwiększać czas do pierwszego tokenu (TTFT) o 10–20%.

5. Strategiczny wniosek dla inżyniera roku 2026

Niezawodność wywołań narzędzi to granica między „demo-zabawkami” a bojowymi autonomicznymi agentami. Przejście wszystkich narzędzi na deterministyczne dekodowanie gramatyczne eliminuje 95% głupich błędów składniowych i czyni zachowanie systemu przewidywalnym.

/ Najczęściej zadawane pytaniaSchema.org FAQPage

FAQ: Deterministyczne wywoływanie narzędzi i próbkowanie gramatyczne

Modele LLM generują tokeny sekwencyjnie na podstawie prawdopodobieństw. Jeśli kontekst jest przeciążony lub argument zawiera nieprawidłowo uciekane cudzysłowy, znaki nowej linii czy nawiasy zamykające, model może zwrócić JSON o błędnej składni (błąd `JSON.parse`).
/ Linki wewnętrzne
Wszystkie hasła