Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przed utworzeniem agentów sztucznej inteligencji warto zrozumieć technologię, która je obsługuje: duże modele językowe (LLMs). Ta strona zawiera zorientowane na deweloperów wprowadzenie do LLM: czym są, jak działają, w czym są dobre, a w czym nie — dzięki czemu możesz podejmować świadome decyzje podczas tworzenia agentów na podstawie nich.
Wskazówka
Jeśli masz już doświadczenie z LLMs i chcesz od razu przejść do budowania, przejdź do sekcji From LLMs to Agents.
Co to jest LLM?
Duży model językowy to sieć neuronowa wytrenowana na ogromnych ilościach danych tekstowych w celu przewidywania następnego tokenu w sekwencji. W ramach tego prostego celu szkoleniowego — biorąc pod uwagę wszystkie poprzednie tokeny, co będzie dalej? — model uczy się struktury języka i światowej wiedzy.
W istocie, LLM to po prostu dwie rzeczy:
- Wagi modelu — miliardy parametrów liczbowych poznanych podczas trenowania, które kodują wiedzę modelu.
- Kod architektury — struktura sieci neuronowej (zazwyczaj transformer), która uruchamia wagi w celu wygenerowania danych wyjściowych.
Wskazówka
Zdecydowanie zalecamy obejrzenie prezentacji Andreja Karpathy’ego „Deep Dive into LLMs like ChatGPT”, która obejmuje, jak są trenowane LLM-y, jak działają wewnętrznie oraz czego można się od nich spodziewać.
Tokeny: bloki konstrukcyjne
Modele LLM nie przetwarzają surowego tekstu znak po znaku — pracują z tokenami. Tokenizer dzieli tekst wejściowy na tokeny, które są jednostkami podrzędnymi wyrazów ze stałego słownictwa. Token może być pełnym wyrazem ("hello"), częścią wyrazu ("un" + "believ" + "able"), pojedynczym znakiem lub znakiem interpunkcyjnym.
Na przykład zdanie "Tokenizacja jest fascynujące!" może podzielić się na tokeny, takie jak:
["Token", "ization", " is", " fascinating", "!"]
Wskazówka
Zwróć uwagę na spacje przed niektórymi tokenami — tokenizacja nie zawsze pokrywa się z podziałem wyrazów.
Każdy token jest mapowany na liczbę (identyfikator w słownictwie modelu), a model operuje wyłącznie na tych liczbach — a nie na tekście. Gdy model generuje dane wyjściowe, generuje identyfikatory tokenów, które są następnie dekodowane z powrotem do tekstu.
Powyższe tokeny mogą być mapowane na następujące identyfikatory w słownictwie modelu:
[4421, 2860, 382, 33733, 0]
Zrozumienie tokenów ma znaczenie, ponieważ są one jednostką wszystkiego w usłudze LLM:
- Ceny są zwykle na token (tokeny wejściowe i tokeny wyjściowe)
- Okna kontekstowe są mierzone w tokenach (nie słowach lub znakach)
- Dłuższe zapytania używają większej liczby tokenów, są droższe i pozostawiają mniej miejsca na odpowiedź modelu
Ogólna zasada: 1 token jest równy około ¾ słowa w języku angielskim.
Wskazówka
Aby zobaczyć, jak tekst jest tokenizowany, to przydatny tokenizer online udostępniany przez OpenAI.
Jak są trenowane moduły LLM
Nowoczesne LLM przechodzą przez wiele etapów treningu, z których każdy opiera się na poprzednim, aby tworzyć coraz bardziej zdolne i przydatne modele.
Etap 1. Wstępne trenowanie
Wstępne trenowanie to miejsce, w którym model uczy się większość swojej wiedzy. Model jest karmiony ogromną ilością tekstu z Internetu — książek, artykułów, kodu, witryn internetowych — i uczy się przewidywać następny token na podstawie wszystkich poprzednich tokenów. Ten etap wymaga ogromnych obliczeń (tysięcy procesorów GPU przez tygodnie lub miesiące) i tworzy model podstawowy.
Model podstawowy jest zasadniczo aparatem uzupełniania tekstu. Po otrzymaniu polecenia generuje wiarygodne kontynuacje na podstawie wzorców w danych treningowych. Jednak model podstawowy nie jest szczególnie przydatny jako asystent — może kontynuować tekst w nieoczekiwany sposób, generować szkodliwą zawartość lub po prostu błądzić. Nie postępuje zgodnie z instrukcjami w sposób niezawodny.
Etap 2. Szkolenie po szkoleniu
Po szkoleniu model podstawowy przekształca się w przydatnego asystenta. Ten etap odbywa się w wielu fazach:
Dostrajanie z Nadzorem (SFT) — model jest trenowany na wyselekcjonowanych zestawach danych konwersacji o wysokiej jakości: przykładach stworzonych przez ludzi, idealnego zachowania asystenta. W tych przykładach pokazano model, jak postępować zgodnie z instrukcjami, odpowiadać na pytania pomocne, odrzucać szkodliwe żądania i wyraźnie formatować odpowiedzi. SFT uczy modelu roli pomocnego asystenta.
Uczenie się przez wzmocnienie na podstawie opinii człowieka (RLHF) — po SFT ludzcy oceniający porównują pary odpowiedzi modelu i oceniają, która odpowiedź jest lepsza. Te dane preferencji są wykorzystywane do trenowania modelu nagrody, który jest następnie używany z uczeniem wzmacniającym w celu dalszego dostosowania LLM do odpowiedzi preferowanych przez ludzi. RLHF pomaga modelowi nauczyć się subtelnych różnic w jakości, które są trudne do uchwycenia w przykładach statycznych — takich jak bycie zwięzłym w przeciwieństwie do dokładnego lub wiedza, kiedy poprosić o wyjaśnienie. Zwykle działa to w niezweryfikowalnych domenach, w których nie ma jednej poprawnej odpowiedzi, w przeciwieństwie do problemów z wyraźnym celem lub prawem podstawowym, takim jak arytmetyka.
Wskazówka
Dla zainteresowanych czytelników, prosimy zapoznać się z wpisem na blogu OpenAI dotyczącym dostrajania instrukcji lub artykułem.
Etap 3: Rozumowanie poprzez uczenie przez wzmacnianie
Niedawno techniki uczenia wzmacniającego zostały zastosowane do uczenia modeli, aby rozumować krok po kroku przed udzieleniem ostatecznej odpowiedzi. Zamiast natychmiast odpowiadać, modele te uczą się generować łańcuch myśli — dzieląc problemy na podetapy, eksplorując alternatywy i weryfikując swoją pracę.
Jest to podejście szkoleniowe dotyczące modeli rozumowania (takich jak seria o OpenAI). Wynikiem są modele, które są znacznie lepsze w matematyce, logice, kodowaniu i złożonych problemach wieloetapowych kosztem większego opóźnienia i użycia tokenu (kroki rozumowania są również generowane jako tokeny).
Uwaga / Notatka
Istnieje wiele sposobów na osiągnięcie rozumowania w LLMs. Zapoznaj się z tym wpisem, aby zapoznać się ze szczegółowym omówieniem: rozumowanie w dużych modelach językowych. Uczenie wzmacniające jest najbardziej potężnym podejściem, ponieważ umożliwia modelowi uczenie się z własnego procesu rozumowania. Takie podejście zwykle działa w domenach weryfikowalnych, takich jak matematyka, logika i kodowanie. Dlatego wynikowe modele są znacznie lepsze w tych zadaniach.
Wskazówka
Nie musisz rozumieć wszystkich szczegółów trenowania, aby tworzyć agentów, ale znajomość tych etapów pomaga wyjaśnić, dlaczego modele zachowują się inaczej. Model podstawowy kończy tekst. Model SFT + RLHF jest zgodny z instrukcjami. Model rozumowania myśli krok po kroku. Podczas wybierania modelu dla agenta te różnice wpływają bezpośrednio na możliwości, koszty i opóźnienia.
Jak działa wnioskowanie
Kiedy wysyłasz żądanie do LLM, model generuje swoją odpowiedź jeden token na raz przez proces nazywany generowaniem autoregresywnym:
- Pełny monit (komunikat systemowy, historia konwersacji, dane wejściowe użytkownika) jest konwertowany na tokeny i wprowadzany do modelu.
- Model przetwarza wszystkie tokeny wejściowe i generuje rozkład prawdopodobieństwa na podstawie swojego słownictwa — przewidując, który token najprawdopodobniej przyjdzie dalej.
- Token jest wybierany z tego rozkładu (pod wpływem temperatury i innych parametrów próbkowania).
- Ten nowy token jest dołączany do pełnej sekwencji, a cała zaktualizowana sekwencja jest wprowadzana z powrotem do modelu w celu wygenerowania następnego tokenu.
- Powtarza się to, dopóki model nie wygeneruje tokenu zatrzymania lub osiągnie limit długości.
Ten proces iteracyjny oznacza, że koncepcyjnie model uwzględnia całą sekwencję tokenów dla każdego wygenerowanego tokenu. Modele LLM mają stałe okno kontekstowe — maksymalną liczbę tokenów, które mogą obsłużyć. Wszystko musi pasować: polecenie, historia konwersacji, dowolny kontekst wstrzyknięty oraz tokeny, które model generuje jako odpowiedź.
Wskazówka
W praktyce nowoczesne aparaty wnioskowania LLM używają optymalizacji, takich jak KV-cache — buforowanie obliczeń pośrednich z wcześniej przetworzonych tokenów, dzięki czemu każdy nowy token nie wymaga ponownego przetwarzania pełnej sekwencji od podstaw. Dlatego generowanie pierwszego tokenu (fazy "wstępnego wypełniania", która przetwarza wszystkie tokeny wejściowe) trwa dłużej niż generowanie kolejnych tokenów (faza "dekodowania", która przetwarza jeden token naraz przy użyciu pamięci podręcznej).
Context window (e.g., 128K tokens)
┌────────────────────────────────────────────────────────┐
│ System │ History │ User │ ← Generated response → │
│ instructions│ │ input │ │
│ (input tokens) │ (output tokens) │
└────────────────────────────────────────────────────────┘
Nowoczesne modele oferują okna kontekstowe od 4K do ponad 1 mln tokenów, ale okno kontekstu jest zawsze skończone. Jest to budżet pamięci roboczej — wszystko, co model musi wiedzieć, musi się w nim mieścić.
Ważna
Ponieważ wnioskowanie jest autoregresywne (jeden token na raz), dłuższe odpowiedzi wymagają proporcjonalnie więcej czasu na wygenerowanie. Każdy token wymaga pełnego przejścia przez model. Dlatego przesyłanie strumieniowe — wysyłanie tokenów do klienta w miarę ich generowania, a nie oczekiwanie na pełną odpowiedź — jest typowym wzorcem w aplikacjach agentów.
Kluczowe pojęcia dla deweloperów
Uzupełnianie czatów: podstawowy wzorzec interfejsu API
Dostęp do nowoczesnych modułów LLM jest uzyskiwany za pośrednictwem interfejsu API uzupełniania czatów , który używa formatu wiadomości ustrukturyzowanych:
| roli | Purpose |
|---|---|
| System | Ustawia zachowanie, persona i ograniczenia modelu (instrukcje) |
| Użytkownik | Dane wejściowe lub pytanie człowieka |
| Asystent | Poprzednie odpowiedzi modelu (w kontekście wielozwrotowym) |
Typowe żądanie wygląda następująco (uproszczone):
Messages:
[system] "You are a helpful assistant that answers questions about weather."
[user] "What's the weather like in Seattle?"
Model przetwarza wszystkie komunikaty w oknie kontekstu i generuje następną odpowiedź asystenta. Ten bezstanowy wzorzec żądanie-odpowiedź jest podstawą, na której opierają się agenci.
Uwaga / Notatka
W zależności od modelu i interfejsu API dokładny format i pola komunikatów mogą się różnić. Poniżej te komunikaty są konwertowane na format, który może wyglądać następująco: <system>...</system><user>...</user><assistant>...</assistant><user>...</user><assistant>, który następnie będzie tokenizowany i przetwarzany przez model.
Temperatura i determinizm
Temperatura kontroluje losowość danych wyjściowych modelu:
- Temperatura = 0: Bardziej deterministyczna — model wybiera najbardziej prawdopodobny token za każdym razem
- Temperatura > 0: Bardziej kreatywne — próbki modeli z szerszego rozkładu
W przypadku aplikacji agentów niższe temperatury (0–0,3) są zwykle preferowane dla niezawodnego, spójnego zachowania. Wyższe temperatury (0,7–1,0) odpowiadają zadaniam kreatywnym.
Ważna
Nawet przy zerowej temperaturze duże modele językowe (LLMs) nie są w pełni deterministyczne. Małe różnice mogą wystąpić z powodu arytmetyki zmiennoprzecinkowej, przetwarzania wsadowego oraz różnic w infrastrukturze. Nie projektuj systemów, które zależą od identycznych danych wyjściowych dla identycznych danych wejściowych.
Co LLMs są dobre w
LLM-y excelują w zadaniach, które obejmują zrozumienie języka oraz generowanie.
- Rozumowanie i analiza — rozbijanie problemów, porównywanie opcji, objaśnianie pojęć
- Generowanie zawartości — pisanie artykułów, wiadomości e-mail, raportów i kodu
- Podsumowanie — destylowanie długich dokumentów w zwięzłe kluczowe punkty
- Tłumaczenie — konwertowanie między językami naturalnymi lub między formatami (proza JSON ↔)
- Generowanie kodu — pisanie, wyjaśnianie i debugowanie kodu w wielu językach
- Klasyfikacja i wyodrębnianie — kategoryzowanie tekstu, wyodrębnianie danych strukturalnych z danych wejściowych bez struktury
- Wielomodalne zrozumienie — wiele nowoczesnych llms może przetwarzać obrazy, dźwięk i wideo obok tekstu, umożliwiając zadania takie jak opisywanie obrazu, transkrypcja mowy lub analizowanie zawartości wizualnej
- Dane wyjściowe ze strukturą — generowanie odpowiedzi w precyzyjnych formatach, takich jak JSON lub XML, co jest niezbędne do wywoływania narzędzi, wyodrębniania danych i integracji z systemami podrzędnymi
Wskazówka
Funkcje wielomodalne działają, ponieważ obrazy, dźwięk i inne modalności mogą być również konwertowane na tokeny — podobnie jak tekst. Wyspecjalizowane kodery przekształcają te dane wejściowe w sekwencje tokenów, które model przetwarza wraz z tokenami tekstowymi w tym samym oknie kontekstu. Podstawowy mechanizm pozostaje taki sam: wszystko to tokeny.
Z czym zmagają się modele LLM
Zrozumienie ograniczeń usługi LLM ma kluczowe znaczenie dla tworzenia niezawodnych agentów:
| Limitation | Co to oznacza dla agenta |
|---|---|
| Brak wiedzy w czasie rzeczywistym | Dane treningowe modelu mają datę graniczną. Nie wie o wydarzeniach po treningu. |
| Omamy | LLMs mogą generować przekonujące, ale faktycznie niepoprawne odpowiedzi. "Generują brzmiący wiarygodnie tekst, zamiast pobierać zweryfikowane fakty." |
| Brak pamięci trwałej | Każde wywołanie interfejsu API jest bezstanowe. Model nie pamięta poprzednich konwersacji, chyba że zostaną one uwzględnione w oknie kontekstowym. |
| Ograniczona matematyka i logika | Podczas ulepszania modele LLM mogą popełniać błędy w precyzyjnych obliczeniach i formalnej logice. |
| Niedeterministyczny | Ten sam monit może generować różne odpowiedzi między wywołaniami. |
| Brak możliwości działania | Moduły LLM generują tekst — nie mogą samodzielnie wysyłać wiadomości e-mail, wysyłać zapytań do baz danych ani wywoływać interfejsów API. |
Uwaga / Notatka
Wiele z tych ograniczeń to dokładnie to, na co agenci są zaprojektowani, aby rozwiązać. Narzędzia zapewniają agentom możliwość działania lub pozyskiwania wiedzy w czasie rzeczywistym, a nawet uruchamiania kodu w celu uzasadniania odpowiedzi, a sesje zapewniają pamięć ciągłą. Zobaczysz, jak rozwiązać każdy z tych problemów podczas przechodzenia przez tę podróż.
Jak LLM-y uczą się używać narzędzi
Moduły LLM mogą generować tylko tokeny — nie mogą samodzielnie przeglądać sieci web, wykonywać zapytań do bazy danych ani wywoływać API. Jak więc "używać" narzędzi? Odpowiedź jest zaskakująco prosta: są one wytrenowane w celu wyprowadzania specjalnej sekwencji tokenów reprezentujących wywołanie narzędzia, a kod zewnętrzny interpretuje te dane wyjściowe i wykonuje rzeczywistą pracę.
Użycie narzędzia to tylko generowanie tokenów
Pamiętaj, że model LLM generuje dane wyjściowe jednym tokenem naraz. Podczas potreningowego dostrajania modele są dostrajane na przykładach obejmujących interakcje z narzędziami. W poniższych przykładach przedstawiono model w formacie ustrukturyzowanym — gdy model określa, że musi używać narzędzia, zamiast generować odpowiedź w języku naturalnym, generuje tokeny zgodne z określonym schematem, takie jak:
{
"tool": "get_weather",
"arguments": { "location": "Seattle" }
}
W modelu nie różni się to zasadniczo od generowania żadnego innego tekstu. Nadal przewiduje następny token. Ponieważ został on wytrenowany na tysiącach przykładów tego, kiedy i jak wygenerować te ustrukturyzowane dane wyjściowe, uczy się, kiedy narzędzie będzie pomocne, którego narzędzia należy użyć i jakie argumenty należy podać — wszystkie wyrażone jako sekwencja tokenów.
Uwaga / Notatka
Różni dostawcy modeli używają różnych formatów dla wywołań narzędzi (wywołań funkcji JSON, tagów przypominających kod XML, tokenów specjalnych), ale zasada jest taka sama: model generuje dane wyjściowe ze strukturą, które sygnalizują "Chcę wywołać to narzędzie za pomocą tych argumentów".
Jak modele uczą się, kiedy wywoływać narzędzia
Podczas trenowania model widzi definicje narzędzi zawarte w wierszu polecenia — każde narzędzie opisane przez nazwę, opis tego, co robi, oraz parametry, które akceptuje. Przykłady trenowania przedstawiają wzorzec:
- Użytkownik zadaje pytanie , które wymaga informacji zewnętrznych lub akcji.
- Model generuje wywołanie narzędzia zamiast odpowiadać bezpośrednio — ponieważ dane szkoleniowe pokazały, że jest to prawidłowe zachowanie, gdy model nie ma samych informacji.
- Wynik narzędzia pojawia się w konwersacji (udostępniany przez kod zewnętrzny podczas zbierania danych treningowych).
- Model generuje ostateczną odpowiedź , która zawiera wynik narzędzia.
Dzięki temu trenowaniu model uczy się osądu, kiedy wywołać narzędzie (w porównaniu z odpowiedzią na własną wiedzę), które narzędzie do wyboru z dostępnych opcji oraz jak sformułować argumenty na podstawie żądania użytkownika.
Dlaczego to ma znaczenie
Zrozumienie, że użycie narzędzi to tylko generowanie tokenów, wyjaśnia kilka ważnych kwestii.
- LLM nigdy niczego nie wykonuje. Generuje ono tylko żądanie. Kod aplikacji (lub struktura agenta) jest odpowiedzialny za analizowanie wywołania narzędzia, wykonywanie funkcji i przekazywanie wyniku z powrotem. Ta separacja jest kluczową granicą bezpieczeństwa.
- Jakość narzędzi zależy od trenowania. Możliwość modelu do efektywnego używania narzędzi zależy od stopnia, w jakim został dopracowany pod kątem przykładów użycia tych narzędzi. To dlatego niektóre modele są lepsze w wywoływaniu narzędzi niż inne.
- Opisy narzędzi są częścią podpowiedzi. Definicje narzędzi, które udostępniasz, używają tokenów w oknie kontekstowym. Więcej narzędzi oznacza mniej tokenów dostępnych dla historii konwersacji i odpowiedzi modelu.
- Model może popełniać błędy. Podobnie jak może powodować halucynacje faktów, może generować wywołania narzędzi z nieprawidłowymi argumentami, użyć niewłaściwego narzędzia lub wywołać narzędzie, gdy nie powinno. Zabezpieczenia i walidacja mają znaczenie.
Jak ta funkcja wywoływania narzędzi jest podłączona do pełnej pętli wykonywania — w której agent iteracyjnie korzysta z narzędzi, obserwuje wyniki i decyduje, co zrobić dalej — stanowi most od LLM do agentów, omówiony na następnej stronie.
Jak łączy się to z agentami
Sam LLM jest potężnym, ale ograniczonym systemem, który przyjmuje tekst i generuje tekst. Aby tworzyć przydatne aplikacje, należy dodać warstwy na górze:
| Konieczność | Wyłącznie LLM | Z platformą Agent Framework |
|---|---|---|
| Zachowanie ukierunkowane | Ręczne tworzenie monitów systemowych | Agent z instrukcjami i tożsamością |
| Dane w czasie rzeczywistym | Niedostępne | Narzędzia (narzędzia funkcji, serwery MCP) |
| Podejmowanie akcji | Niemożliwe | Wywoływanie narzędzia za pomocą przepływów zatwierdzania |
| Pamięć | Ponowne wysyłanie konwersacji za każdym razem | Sesje i providenci kontekstu |
| Reliability | Mam nadzieję, że monit działa | Oprogramowanie pośredniczące dla poręczy i przesłonięć |
Struktura agenta obsługuje te warstwy, dzięki czemu można skoncentrować się na logice aplikacji, a nie na ponownym tworzeniu infrastruktury LLM.
Dowiedz się więcej
- Co to są duże modele językowe (LLMs)? — omówienie typów llM i przypadków użycia Microsoft Azure
- Szczegółowe omówienie LLM, takich jak ChatGPT — trzygodzinne wprowadzenie Andreja Karpatiego obejmujące sposób trenowania modeli językowych, ich działanie oraz czego można się po nich spodziewać.