Dodawanie dostawców kontekstu

Na poprzedniej stronie pokazano, jak oprogramowanie pośredniczące opakowuje potok wykonywania agenta z problemami krzyżowymi — rejestrowaniem, zabezpieczeniami, obsługą błędów — bez dotykania podstawowej logiki agenta. Jednak oprogramowanie pośredniczące zajmuje się uruchamianiem agenta, a nie tym, co agent wie. Do tej pory wiedza agenta pochodzi z dwóch miejsc: jego danych szkoleniowych oraz tego, co użytkownik mówi w bieżącej interakcji.

To jest problem. Przydatny agent potrzebuje więcej niż to. Musi przypomnieć sobie, co użytkownik powiedział trzy zakręty temu, znać preferencje użytkownika lub ściągnąć istotne fakty z bazy wiedzy — wszystko , zanim zacznie generować odpowiedź. Narzędzia mogą pobierać informacje, ale są reaktywne: model musi zdecydować się na ich wywołanie. Jeśli model nie zdaje sobie sprawy, że potrzebuje kontekstu, nie będzie o niego pytać.

Dostawcy kontekstu rozwiązują ten problem. Są to składniki, które są uruchamiane przed i po każdym wywołaniu agenta, aktywnie wstrzykiwając odpowiednie informacje do okna kontekstu i opcjonalnie wyodrębniając stan z odpowiedzi, która ma być przechowywana do użytku w przyszłości. Zapewniają one pamięć agenta, personalizację i dostęp do wiedzy zewnętrznej — bez zmieniania instrukcji lub kodu agenta.

Kiedy ją zastosować

Dodaj dostawców kontekstu do agenta, gdy:

  • Agent potrzebuje historii konwersacji — powinien pamiętać, co zostało powiedziane w poprzednich zwrotach, a nie tylko obecny komunikat.
  • Chcesz wstrzyknąć dane specyficzne dla użytkownika — profile, preferencje, szczegóły konta lub stan sesji — aby agent mógł personalizować odpowiedzi.
  • Potrzebna jest generacja rozszerzona o pobieranie (RAG) — automatyczne pobieranie odpowiednich dokumentów lub faktów z bazy wiedzy przed każdą odpowiedzią.
  • Agent wymaga instrukcji dynamicznych — kontekstu, który zmienia się między wywołaniami na podstawie godziny dnia, lokalizacji użytkownika lub innych warunków środowiska uruchomieniowego.
  • Chcesz rozdzielić źródło danych z logiki agenta — agent nie musi wiedzieć, skąd pochodzi kontekst, tylko że jest dostępny.

Dlaczego nie tylko używać narzędzi?

Narzędzia i dostawcy kontekstu zapewniają agentom dostęp do informacji zewnętrznych, ale działają zasadniczo na różne sposoby:

Aspekt Tools Dostawcy kontekstu
Wyzwalacz Reaktywne — model decyduje, kiedy wywołać narzędzie Proaktywne — jest uruchamiane automatycznie przed każdym wywołaniem
Kontrola Oparte na modelu: model wybiera narzędzie, kiedy i z jakimi argumentami Sterowany przez deweloperów: decydujesz, jaki kontekst jest zawsze dostępny
Widoczność Model musi wiedzieć, że istnieje narzędzie i ocenia, czy jest to istotne Kontekst jest wstrzykiwany w sposób przezroczysty — model widzi go jako część zachęty
Przypadek użycia Akcje i wyszukiwania na żądanie: "przeszukaj sieć Web", "wykonaj zapytanie dotyczące bazy danych" Zawsze obecny kontekst: historia konwersacji, profile użytkowników, wstępnie załadowana wiedza
Koszt tokenu Tokeny są zużywane tylko wtedy, gdy narzędzie jest wywoływane Tokeny wydawane na każde wywołanie (kontekst jest zawsze wyświetlany w wierszu polecenia)

Żadna z nich nie jest ściśle lepsza. Wielu agentów używa obu tych metod: dostawców kontekstu dla informacji, które powinny być zawsze obecne (historia, profil użytkownika, podstawowa wiedza) i narzędzia do informacji, które agent powinien pobrać na żądanie (wyniki wyszukiwania na żywo, zapytania bazy danych, wywołania interfejsu API).

Wskazówka

Dobra reguła: jeśli agent powinien mieć te informacje za każdym razem, gdy jest uruchamiany, użyj dostawcy kontekstu. Jeśli agent powinien pobrać go tylko wtedy, gdy jest to istotne, użyj narzędzia.

Jak działają dostawcy kontekstu

Dostawcy kontekstu uczestniczą w dwufazowym cyklu życia każdego wywołania agenta:

┌──────────────────────────────────────────────────────────────┐
│  Caller: agent.run("What's the return policy?")              │
└──────────────┬───────────────────────────────────────────────┘
               ▼
┌──────────────────────────────────────────────────────────────┐
│  BEFORE RUN — each context provider injects context          │
│                                                              │
│  • History provider loads past conversation messages         │
│  • Memory provider retrieves relevant facts/preferences      │
│  • RAG provider searches knowledge base and adds results     │
│  • Custom provider injects user profile, time, location      │
└──────────────┬───────────────────────────────────────────────┘
               ▼
┌──────────────────────────────────────────────────────────────┐
│  Agent core — model sees original input + all injected       │
│  context and generates a response                            │
└──────────────┬───────────────────────────────────────────────┘
               ▼
┌──────────────────────────────────────────────────────────────┐
│  AFTER RUN — each context provider processes the response    │
│                                                              │
│  • History provider saves the new messages                   │
│  • Memory provider extracts facts to remember for later      │
│  • Custom provider updates session state                     │
└──────────────────────────────────────────────────────────────┘

Najważniejsze kwestie:

  1. Dostawcy kontekstu są uruchamiani automatycznie. Rejestrujesz je raz podczas tworzenia agenta. Następnie uczestniczą w wywołaniach, nie wymagając dodatkowego kodu z twojej strony.
  2. Wielu dostawców współpracuje ze sobą. Możesz zarejestrować kilku dostawców kontekstu — dostawcę historii, dostawcę RAG i dostawcę niestandardowego — a wszyscy przyczyniają się do tego samego okna kontekstowego. Ich wkłady są scalane w kolejności rejestracji.
  3. Dostawcy mają dwa haki. Hak typu 'before' wprowadza kontekst (komunikaty, instrukcje, narzędzia) do polecenia. After hook przetwarza odpowiedź — przechowuje komunikaty, wyodrębnia dane lub aktualizuje stan.
  4. Dostawcy są świadomi sesji. Dostawcy kontekstu otrzymują bieżącą sesję, aby mogli ładować i przechowywać dane o określonym zakresie konwersacji. Zobacz Sesje , aby dowiedzieć się, jak działa zarządzanie sesjami.

Wskazówka

Aby uzyskać szczegółowy widok, gdzie dostawcy kontekstu znajdują się w pełnym potoku wykonawczym agenta — razem z oprogramowaniem pośredniczącym i klientem czatu — zobacz Architektura potoku agenta.

Zarządzanie oknem kontekstu

Każdy fragment kontekstu, który wprowadzasz, korzysta z tokenów z okna kontekstu modelu. Historia rośnie wraz z każdym zakrętem. Rezultaty RAG włączają fragmenty dokumentu. Profile użytkowników dodają metadane. Jeśli suma przekroczy limit modelu, najstarsze lub najmniej istotne informacje zostaną obcięte — potencjalnie tracąc ważny kontekst.

Zarządzanie oknami kontekstowymi jest krytycznym czynnikiem podczas korzystania z dostawców kontekstu: strategie kompaktowania podsumowują lub przycinają starszą historię, aby zachować limity tokenów przy zachowaniu kluczowych informacji. Zobacz Kompaktowanie.

Wskazówka

Aby uzyskać praktyczne doświadczenie z dostawcami pamięci i kontekstu, zobacz Krok 4: pamięć w samouczku Wprowadzenie.

Ważna

Nie zaleca się obsługi bardzo długiego okna kontekstowego, ponieważ wydajność modelu może ulec pogorszeniu w miarę wzrostu okna kontekstowego. Jeśli agent zacznie mieć obniżoną wydajność, rozważ użycie strategii kompaktowania w celu zmniejszenia rozmiaru kontekstu.

Zagadnienia do rozważenia

Kwestie wymagające rozważenia Szczegóły
Budżet tokenu Każdy wstrzykiwany kontekst zużywa tokeny. Uważnie monitoruj całkowity rozmiar kontekstu — szczególnie w przypadku łączenia wielu dostawców. Jeśli kontekst rośnie bez ograniczeń, ważne informacje są obcięte w trybie dyskretnym.
Opóźnienie pobierania Dostawcy kontekstu, którzy wysyłają zapytania do usług zewnętrznych (baz danych, indeksów wyszukiwania, interfejsów API) dodają opóźnienie do każdego wywołania. Użyj buforowania, rejestrowania połączeń i operacji asynchronicznych, aby zapewnić szybkie odzyskiwanie.
Relevance Wstrzykiwanie nieistotnego kontekstu nie powoduje po prostu marnowania tokenów — może aktywnie obniżyć wydajność odpowiedzi modelu przez rozcieńczenie sygnału. Upewnij się, że dostawcy wprowadzają ukierunkowane, istotne informacje.
Staleness Kontekst buforowany lub wstępnie załadowany może stać się nieaktualny. Zaprojektuj dostawców, aby odświeżali dane w odpowiednich odstępach czasu, i rozważ, czy w twoim przypadku użycia akceptowalny jest nieco przestarzały kontekst.
Możliwość komponowania Gdy wielu dostawców przyczynia się do tego samego okna kontekstowego, ich wkłady mogą oddziaływać w nieoczekiwany sposób. Testuj dostawców razem, nie tylko indywidualnie, aby zapewnić, że wspólny kontekst ma sens.

Następne kroki

Teraz, gdy agent ma narzędzia, umiejętności, oprogramowanie pośredniczące i dostawców kontekstu, następnym krokiem jest agentów jako narzędzia — tworzenie agentów poprzez użycie jednego agenta jako narzędzia dla innego, co umożliwia specjalizację i delegowanie.

Głębiej: