Kim są agenci AI? Jak to działa, dzięki prostej pętli agenta, którą można uruchomić
Agent AI nie tylko odpowiada. Wyznacza sobie cel, wybiera działania, sprawdza rezultaty i idzie dalej. Dowiedz się, co jest w środku, wykonaj małą pętlę w Pythonie i zrozum ryzyko, zanim zaufasz jednemu.
- Agent AI to zazwyczaj model językowy działający w pętli z narzędziami i celem.
- Pętla jest prosta: zdecyduj, działaj, obserwuj wynik i powtarzaj aż do skutku.
- Model jedynie sugeruje działania. Twój kod je uruchamia, czyli tam, gdzie egzekwujesz reguły.
- Agenci mogą zapętlać lub nadużywać narzędzi, dlatego należy ustawić limity kroków i wymagać zgody na ryzykowne działania.
Zapytaj chatbota o spóźnione zamówienie, a otrzymasz kilka porad. Zapytaj agenta AI, a on sprawdzi zamówienie, sprawdzi opóźnienie, zastosuj kupon i złoży raport. Różnica polega na tym, że agent może podejmować działania i reagować na to, co się dzieje, zamiast dawać tylko jedną odpowiedź.
W marketingu termin ten jest naciągany, dlatego w tym przewodniku skupiono się na tym, jak faktycznie działają te systemy. Aby było to konkretne, zbudowaliśmy małą pętlę agenta w Pythonie 3.13 i uruchomiliśmy ją, a poniższe dane wyjściowe pochodzą z tych uruchomień. Nasz „model” to funkcja skryptowa, a nie prawdziwy model sztucznej inteligencji, dzięki czemu pętla może zostać uruchomiona i przetestowana przez każdego. Pokazuje strukturę kontroli, a nie inteligencję. Nie znasz jeszcze podstaw? Najpierw przeczytaj co to jest model dużego języka.
Kim jest agent AI?
Nie ma jednej uzgodnionej definicji. W obecnej praktyce agent AI to oprogramowanie, które realizuje swój cel, wielokrotnie decydując, co dalej, używając narzędzi do oddziaływania na świat i dostosowując się na podstawie wyników. Zwykle proces decyzyjny opiera się na dużym modelu językowym.
Pomyśl o różnicy między osobą udzielającą wskazówek a osobą, która załatwia sprawę. Pierwszy odpowiada raz. Drugi wychodzi, stwierdza, że sklep jest zamknięty, próbuje innego i wraca dopiero, gdy praca zostanie wykonana.
Chatbot, przepływ pracy czy agent?
| Wpisz | Kto decyduje o krokach? | Czy może działać? | Przykład |
|---|---|---|---|
| Chatbot | Użytkownik prowadzi w każdej turze | Zwykle nie | Odpowiada na pytania z tekstu |
| Naprawiono przepływ pracy | Deweloper z góry | Tak, po ustalonych ścieżkach | Podsumuj każdy bilet, a następnie skieruj go |
| Agent AI | Model w czasie wykonywania | Tak, w granicach | Bada i rozwiązuje zgłoszenie |
Istnieją one w szerokim spektrum, a wiele przydatnych systemów jest mieszanką. Kluczowym pytaniem jest, jaka część ścieżki jest ustalana w czasie wykonywania.
Co kryje się w środku agenta
| Część | Rola |
|---|---|
| Modelka | Decyduje o kolejnym kroku na podstawie celu i tego, co wydarzyło się do tej pory |
| Instrukcje | Cel, zasady i ograniczenia, którymi powinien się kierować |
| Narzędzia | Funkcje, których może żądać, takie jak wyszukiwanie lub wywoływanie interfejsu API |
| Pamięć | To, co wie z wcześniejszych kroków lub poprzednich sesji |
| Pętla sterująca | Zwykły kod uruchamiający narzędzia i wymuszający ograniczenia |
Pętla agenta
- Zdecyduj. Model przygląda się celowi i historii, a następnie wybiera akcję lub stwierdza, że jest ona zakończona.
- Akt. Twój kod uruchamia żądane narzędzie.
- Obserwuj. Wynik zostanie dodany do historii.
- Powtarzaj, aż cel zostanie osiągnięty lub osiągnięty zostanie limit.
To jest sedno większości agentów. Wyrafinowanie leży głównie w modelu, narzędziach i zabezpieczeniach wokół tej pętli.
Pętla, którą możesz uruchomić
Nasz mały agent zajmuje się opóźnionymi zamówieniami. Ma dwa narzędzia, a jedno z nich wymaga zgody człowieka, ponieważ jest kosztowne:
ORDERS = {
"A100": {"status": "delayed", "days_late": 6},
"B200": {"status": "shipped", "days_late": 0},
}
def get_order(order_id):
return ORDERS.get(order_id, {"error": "order not found"})
def issue_voucher(order_id, amount):
return {"voucher": f"V-{order_id}", "amount": amount}
TOOLS = {"get_order": get_order, "issue_voucher": issue_voucher}
NEEDS_APPROVAL = {"issue_voucher"}
A oto sama pętla. Jest to zwykły kod i każda zasada bezpieczeństwa znajduje się tutaj, a nie w modelu:
def run_agent(goal, model, approve, max_steps=5):
history = []
for step in range(1, max_steps + 1):
decision = model(goal, history)
if "finish" in decision:
return decision["finish"]
name, args = decision["tool"], decision["args"]
if name in NEEDS_APPROVAL and not approve(name, args):
result = {"denied": True}
else:
result = TOOLS[name](**args)
history.append({"tool": name, "result": result})
return None # stopped: step limit reached
Aby użyć prawdziwego modelu, należy zastąpić funkcję model wywołaniem API LLM, przekazując mu cel, historię i opis swoich narzędzi. Pętla pozostaje prawie taka sama.
Co się działo w naszych biegach
Wypróbowaliśmy pięć sytuacji ze skryptową funkcją decyzyjną i zarejestrowaliśmy każdy krok.
Opóźnione zamówienie z zatwierdzonym kuponem
step 1: get_order({'order_id': 'A100'}) -> {'status': 'delayed', 'days_late': 6}
step 2: issue_voucher({'order_id': 'A100', 'amount': 200}) -> {'voucher': 'V-A100', 'amount': 200}
step 3: finish -> Sorry for the delay. Voucher V-A100 issued.
Każdy krok wykorzystywał wynik poprzedniego. Kupon został rozpatrzony dopiero po potwierdzeniu opóźnienia.
To samo zamówienie, z odmową zatwierdzenia
step 2: issue_voucher({'order_id': 'A100', 'amount': 200}) -> {'denied': True}
step 3: finish -> Your order is late. A person will review compensation.
Człowiek powiedział nie, narzędzie nigdy nie działało, a agent dostosował swoją odpowiedź.
Nieznane zamówienie
step 1: get_order({'order_id': 'Z999'}) -> {'error': 'order not found'}
step 2: finish -> I could not find that order.
Pomocne jest zapewnienie narzędziom jasnych komunikatów o błędach. Prawdziwy model potrafi je przeczytać i zareagować rozsądnie, zamiast zgadywać.
Model, który utknął
Zamieniliśmy także błędną funkcję decyzyjną, która powtarzała tę samą akcję w nieskończoność:
step 1: get_order({'order_id': 'B200'}) -> {'status': 'shipped', 'days_late': 0}
step 2: get_order({'order_id': 'B200'}) -> {'status': 'shipped', 'days_late': 0}
step 3: get_order({'order_id': 'B200'}) -> {'status': 'shipped', 'days_late': 0}
stopped: step limit reached
Agenci naprawdę mogą wpaść w takie pętle, a każdy krok z prawdziwym modelem kosztuje. Bez max_steps ten nigdy by się nie skończył.
Jak działają narzędzia
To najbardziej źle rozumiana część. Model językowy nie może sam niczego uruchomić. Generuje ustrukturyzowany tekst informujący, jakiego narzędzia chce i z jakimi argumentami. Twój kod decyduje, czy go uruchomić. Dlatego pętla jest właściwym miejscem do sprawdzania uprawnień, sprawdzania poprawności i logowania.
Dostawcy modeli oferują narzędzia lub funkcje wywołujące to. Model Context Protocol (MCP) to otwarty standard umożliwiający łączenie modeli z narzędziami i danymi, a nasz artykuł na temat Playwright MCP pokazuje jedno zastosowanie. Napisz jasne nazwy i opisy narzędzi, ponieważ model opiera się na nich przy prawidłowym wyborze.
Wskazówka: Zacznij od narzędzi tylko do odczytu. Agent, który może tylko wyszukiwać informacje, jest znacznie mniej niebezpieczny niż ten, który może wysyłać, usuwać lub płacić. Dodawaj dostęp do zapisu po jednym narzędziu na raz, gdy już zobaczysz, jak się zachowuje.
Pamięć
| Wpisz | Trzyma | Przykład |
|---|---|---|
| Krótkoterminowe | Historia bieżącego zadania | Lista history w naszej pętli |
| Długoterminowe | Fakty przechowywane pomiędzy sesjami | Preferencje użytkownika w bazie danych |
| Wiedza | Dokumenty, które są odzyskiwane w razie potrzeby | RAG przy użyciu osadzeń |
Długie zadania mogą przekraczać okno kontekstowe modelu, dlatego systemy często podsumowują starsze kroki. Podsumowania mogą powodować utratę szczegółów, co jest jednym z powodów, dla których długoletni agenci mogą zboczyć z kursu.
Systemy wieloagentowe
Niektóre systemy dzielą pracę pomiędzy kilku wyspecjalizowanych agentów, takich jak planista, badacz i recenzent. Może to pomóc w przypadku dużych zadań, które są starannie podzielone. Zwiększa także koszty, więcej sposobów na awarię i trudniejsze debugowanie. Najpierw wypróbuj jednego agenta z dobrymi narzędziami i podziel go tylko wtedy, gdy istnieje wyraźny powód.
Ryzyka i ograniczenia
- Złe działania. Błąd chatbota to złe zdanie. Błędem agenta może być wysłany e-mail lub usunięty rekord.
- Szybki wstrzyknięcie. Strona internetowa lub wiadomość e-mail, którą czyta agent, mogą zawierać ukryte instrukcje. Traktuj wszystkie dane wyjściowe narzędzia jako niezaufane dane, a nie jako polecenia.
- Błędy łączone. Mały błąd na początku może skierować każdy kolejny krok w złym kierunku.
- Koszt i opóźnienie. Każdy krok może być innym wywołaniem modelu, więc zadanie może być znacznie wolniejsze i droższe niż pojedynczy monit.
- Niespójność. Ten sam cel może przy każdym uruchomieniu przebiegać inną ścieżką, co utrudnia testowanie.
- Odpowiedzialność. Za to, co robi system, odpowiadają ludzie, dlatego należy prowadzić dokumentację.
Poręcze, które mają znaczenie
- Najmniejsze uprawnienia. Daj każdemu agentowi tylko narzędzia i dostęp, których potrzebuje.
- Ludzka zgoda na wszystko, co jest kosztowne, nieodwracalne lub zewnętrzne, tak jak ma to miejsce w naszym demo.
- Trudne limity kroków, czasu i wydatków.
- Weryfikuj dane wejściowe narzędzia w kodzie i nie polegaj na instrukcjach do modelu.
- Zapisuj każdy krok, aby zobaczyć, dlaczego coś się stało. Zobacz monitorowanie a obserwowalność.
- Testuj na rzeczywistych scenariuszach, łącznie z awariami. Sprawdź wyniki końcowe i indywidualne odpowiedzi. Nasz przewodnik po najlepszych praktykach dotyczących agentów AI zawiera dalsze informacje na temat wdrażania.
Kiedy skorzystać z agenta
| Użyj agenta, kiedy | Użyj czegoś prostszego, kiedy |
|---|---|
| Kroki nie mogą być znane z góry | Kroki są zawsze takie same |
| Zadanie wymaga kilku narzędzi | Jeden monit może wykonać zadanie |
| Wyniki zmieniają to, co stanie się później | Stały przepływ pracy by się sprawdził |
| Błędy są tanie i można je naprawić | Błędy są kosztowne i trudne do naprawienia |
Asystenci kodowania są dziś jednym z najbardziej dojrzałych przykładów, ponieważ potrafią czytać pliki, uruchamiać testy, sprawdzać błędy i próbować ponownie, a wynik sprawdza człowiek. Zestaw testów daje im wyraźny sygnał sukcesu. Nasz przewodnik po szybkiej inżynierii dotyczy także pisania dobrych instrukcji dla agentów. Zacznij od najprostszej rzeczy, która może zadziałać, ponieważ dobrze podpowiedziana pojedyncza rozmowa często pokonuje skomplikowanego agenta.
Podsumowanie
Agent AI jest mniej tajemniczy, niż się wydaje: model, trochę narzędzi i pętla z ograniczeniami. Najtrudniejszą częścią jest zaufanie, a nie kod. Aby dowiedzieć się, jak się zachowują, weź naszą małą pętlę, podłącz ją do prawdziwego modelu za pomocą narzędzi tylko do odczytu i obserwuj logi, jak to działa. Wkrótce zobaczysz, gdzie świeci i gdzie potrzebuje człowieka.
Najczęstsze pytania
Czym w prostych słowach jest agent AI?
To oprogramowanie, które dąży do celu, wybierając działania, korzystając z narzędzi i sprawdzając wyniki w pętli, a nie dając tylko jedną odpowiedź.
Jaka jest różnica między chatbotem a agentem AI?
Chatbot odpowiada głównie na każdą wiadomość. Agent może zaplanować kilka kroków, wywołać narzędzia i zmienić kurs w zależności od tego, co wydarzy się po drodze.
Czy agenci AI potrzebują dużego modelu językowego?
Większość współczesnych wykorzystuje LLM do podejmowania decyzji, chociaż szersza koncepcja agentów oprogramowania jest starsza i może wykorzystywać reguły lub inne metody sztucznej inteligencji.
Czy agenci AI są bezpieczni?
Niosą ze sobą realne ryzyko, w tym niewłaściwe działania i szybkie zastrzyki. Ograniczaj ich uprawnienia, wymagaj zgody na ryzykowne kroki, ustalaj twarde limity i rejestruj wszystko.
Czy agent AI może zastąpić programistę lub testera?
Ogólnie nie dzisiaj. Mogą poradzić sobie z wieloma dobrze zdefiniowanymi zadaniami, ale ludzie nadal muszą wyznaczać cele, przeglądać wyniki i brać odpowiedzialność za wynik.
Ucz się dalej
Potrzebujesz pomocy przy testowaniu, WordPressie lub SEO?
Pomagamy zespołom dostarczać lepsze oprogramowanie i rozwijać ich witryny. Powiedz nam, nad czym pracujesz, a my zaproponujemy jasny następny krok.
Więcej poradników na testowanie, sztuczna inteligencja i nowoczesny rozwój
Podobał Ci się ten artykuł? Wybierz temat i przejdź bezpośrednio do naszych najnowszych tutoriali.
Wyjaśnienie halucynacji AI: dlaczego modele językowe tworzą rzeczy i jak je zmniejszyć
Wyjaśniono halucynacje AI: czym są, dlaczego powstają w modelach językowych, typowe typy, jak je zredukować za pomocą uziemień i podpowiedzi oraz pr…
Przeczytaj artykuł →DevOpsWyjaśnienie zmiennych środowiskowych: pliki .env, sekrety i konfiguracja wykonana prawidłowo
Zmienne środowiskowe wyjaśnione na przykładach Pythona, które przeprowadziliśmy: ich odczytywanie i ustawianie, dlaczego każda wartość jest ciągiem …
Przeczytaj artykuł →Tworzenie oprogramowaniaWyjaśnienie ograniczenia szybkości interfejsu API: algorytmy, nagłówki i obsługa błędów 429
Ograniczanie szybkości API wyjaśnione za pomocą przeprowadzonej przez nas symulacji: zasobnik tokenów, stałe okno, przesuwane okno, 429 odpowiedzi, …
Przeczytaj artykuł →Automatyzacja testówWyśmiewanie w Pythonie: unittest.mock, patch i błędy, które sprawiają, że testy kłamią
Wyśmiewanie w Pythonie za pomocą unittest.mock, przetestowane: Mock i zwracana wartość, efekt uboczny, łatanie tam, gdzie używana jest nazwa, specyf…
Przeczytaj artykuł →Testowanie oprogramowaniaWyjaśnienie zasięgu kodu: pokrycie linii i oddziału oraz co naprawdę oznacza 100%
Wyjaśnienie pokrycia kodu za pomocą prawdziwego pliku cover.py: pokrycie linii, gałęzi i warunków, przeczytanie raportu, dlaczego 100% pokrycia może…
Przeczytaj artykuł →Bazy danych i SQLDELETE vs TRUNCATE vs DROP w SQL: różnice, wycofywanie i kiedy używać każdego z nich
DELETE vs TRUNCATE vs DROP wyjaśnione za pomocą przetestowanego SQL: co każdy usuwa, wycofywanie, wyzwalacze, resetowanie tożsamości, prędkość i czy…
Przeczytaj artykuł →Bazy danych i SQLWyjaśnienie widoków SQL: tworzenie, używanie i unikanie pułapek wraz z przykładami
Widoki SQL wyjaśnione za pomocą zapytań, które uruchomiliśmy: tworzenie widoku, wyniki na żywo, ukrywanie kolumn, wydajność, widoki z możliwością ak…
Przeczytaj artykuł →Tworzenie oprogramowaniaInterfejs TypeScript a typ: rzeczywiste różnice, testowane za pomocą kompilatora
Interfejs TypeScript a typ, sprawdzony z prawdziwym kompilatorem: co oba mogą zrobić, co tylko jeden, łączenie deklaracji, rozszerzenia a przecięcia…
Przeczytaj artykuł →Tworzenie oprogramowaniaPython *args i **kwargs wyjaśnione: elastyczne funkcje z przejrzystymi przykładami
Python *args i **kwargs wyjaśnione za pomocą uruchomionego przez nas kodu: pakowanie i rozpakowywanie, kolejność parametrów, argumenty zawierające t…
Przeczytaj artykuł →Tworzenie oprogramowaniaFunkcje Lambda w Pythonie: składnia, rzeczywiste zastosowania i kiedy ich nie używać
Funkcje lambda w Pythonie wyjaśnione za pomocą uruchomionego przez nas kodu: składnia, sortowanie za pomocą klucza, mapa i filtr, domknięcia, pułapk…
Przeczytaj artykuł →Sztuczna inteligencjaKim są agenci AI? Jak one działają, dzięki prostej pętli agenta, którą możesz uruchomić
Kim są agenci AI? Prosty przewodnik po pętli agenta, narzędziach, pamięci i poręczach, z małą pętlą w Pythonie, którą uruchomiliśmy, prawdziwymi zag…
Przeczytaj artykuł →DevOpsMonitorowanie a obserwowalność: prawdziwa różnica z logami, wskaźnikami i śladami
Wyjaśnienie monitorowania a obserwowalności: znane i nieznane awarie, dzienniki, metryki i ślady, opis incydentu przy kasie, złote sygnały, OpenTele…
Przeczytaj artykuł →DevOpsWoluminy platformy Docker a mocowania powiązań: utrwalanie danych kontenera we właściwy sposób
Wyjaśniono woluminy Dockera a montowanie powiązań: dlaczego dane kontenera znikają, nazwane woluminy, montowanie powiązań, tmpfs, przykłady tworzeni…
Przeczytaj artykuł →Automatyzacja testówTDD vs BDD: kluczowe różnice, jedna funkcja zbudowana w obie strony i kiedy używać każdej z nich
TDD vs BDD wyjaśnione za pomocą jednej funkcji rabatowej zbudowanej w obie strony: refaktoryzacja czerwono-zielona z uruchomionym przez nas kodem, s…
Przeczytaj artykuł →Tworzenie oprogramowaniaGit merge vs rebase: różnice, przykłady i kiedy czego używać
Git merge vs rebase wyjaśnione na prawdziwym wyniku logu, z tabelą porównawczą, złotą zasadą rebase i bezpiecznym procesem pracy zespołu.
Przeczytaj artykuł →Tworzenie oprogramowaniaPython list comprehension: składnia, przykłady i kiedy jej unikać
Python list comprehension wyjaśnione: składnia, filtrowanie, if-else, zagnieżdżone pętle, zmierzone czasy i sytuacje, w których zwykła pętla for jes…
Przeczytaj artykuł →Bazy danych i SQLSQL JOIN – wyjaśnienie z przykładami (Inner, Left, Right, Full)
Zrozum złączenia SQL krok po kroku na przykładowych tabelach i zapytaniach: INNER, LEFT, RIGHT, FULL, CROSS i SELF, plus typowe błędy i wskazówki wy…
Przeczytaj artykuł →