Dekompozycja zadania: sekwencyjnie, równolegle czy dynamicznie
Po tej lekcji wiesz, jak zdecydować, czy dzielić zadanie, i czy kroki mają iść po kolei, naraz, czy wybiera je model.
W jednej minucie
Dekompozycja zadania to rozbicie zadania na mniejsze podzadania, z których każde obsługuje osobne wywołanie modelu1.
Nasza rekomendacja: o kształcie podziału decydują dwa pytania. Czy kroki są znane z góry? Czy zależą od siebie?
Zacznij od najprostszego rozwiązania i dokładaj złożoność tylko wtedy, gdy jest potrzebna1.
Po co dzielić zadanie
Podział zamienia jedno trudne wywołanie w kilka prostszych.
Anthropic nazywa systemami agentowymi zarówno workflow, jak i agentów1. Ich podstawowym budulcem jest rozszerzony LLM: model z wyszukiwaniem, narzędziami i pamięcią1.
Kroki zależne: sekwencyjnie
Gdy każdy krok potrzebuje wyniku poprzedniego, ustawiasz kroki w łańcuch: każde wywołanie przetwarza wynik poprzedniego1.
- Zaryswynik kroku 1
- Bramkasprawdzenie kodem
- Tekstwejście: zarys
Między krokami możesz dodać sprawdzenia w kodzie, które pilnują, czy proces idzie we właściwą stronę1. Ten kształt pasuje, gdy zadanie da się czysto rozbić na stałe podzadania1.
Piszesz zarys dokumentu, sprawdzasz, czy spełnia kryteria, i dopiero potem piszesz dokument na jego podstawie1.
Kroki niezależne: równolegle
Gdy podzadania nie zależą od siebie, uruchamiasz je naraz, a wyniki łączysz kodem1.
flowchart TD Z[Zadanie] --> A[Podzadanie A] Z --> B[Podzadanie B] Z --> C[Podzadanie C] A --> W[Połączenie wyników] B --> W C --> W
- Sekcjonowanie: niezależne podzadania idą naraz1.
- Głosowanie: to samo zadanie uruchamiasz kilka razy, żeby dostać różne wyniki1.
To działa, gdy podzadania da się wykonać naraz dla szybkości albo gdy potrzebujesz kilku perspektyw dla większej pewności1.
Kroków nie da się przewidzieć
Gdy nie wiesz z góry, jakie będą podzadania, dzieli je sam model.
- Zadaniewejście
- Orkiestratordzieli zadanie
- Pracownicypodzadania
- Syntezałączy wyniki
Centralny model dzieli zadanie dynamicznie, zleca podzadania pracownikom i łączy ich wyniki1. Podzadania nie są zdefiniowane z góry, tylko wynikają z konkretnego wejścia1.
W kodzie liczba plików do zmiany i rodzaj zmiany zależą od zadania1. Gdy nie da się przewidzieć nawet liczby kroków i ustalić stałej ścieżki, zostaje Agent1.
Jak wybrać
Wybór kształtu podziału sprowadza się do kilku pytań.
| Sytuacja | Kształt | Wzorzec |
|---|---|---|
| Kroki znane z góry, każdy zależy od poprzedniego1 | Po kolei | łańcuch |
| Podzadania są niezależne1 | Naraz | równolegle |
| Wejścia są różnych rodzajów1 | Wybór ścieżki | routing |
| Podzadań nie da się przewidzieć1 | Dynamicznie | orkiestrator |
Kolumna „Kształt” to nasze uproszczenie. Wzorce pochodzą z artykułu Anthropic.
- Sprawdź, czy w ogóle dzielić. Często wystarcza jedno dobrze zoptymalizowane wywołanie1.
- Znajdź zależności. Kroki zależne idą po kolei, a niezależne mogą iść naraz.
- Oceń, czy kroki są znane z góry. Jeśli nie, rozważ orkiestratora albo agenta1.
- Mierz wynik. Dokładaj złożoność tylko wtedy, gdy wyraźnie poprawia efekty1.
Częste błędy
Większość błędów to dobór złego kształtu podziału albo zbyt wczesna złożoność.
| Błąd | Skutek | Co zrobić |
|---|---|---|
| Podział tam, gdzie wystarczy jedno wywołanie | Wyższy koszt i opóźnienie1 | Najpierw sprawdź pojedyncze wywołanie |
| Równolegle przy zależnych krokach | Krok nie ma danych wejściowych | Ustaw kroki w łańcuch |
| Sztywny łańcuch przy nieprzewidywalnym zadaniu | Stała ścieżka nie pasuje do danych1 | Rozważ orkiestratora |
| Złożoność bez pomiaru | Brak dowodu, że poprawia wyniki1 | Mierz i dokładaj stopniowo |
Kolumna „Co zrobić” to nasza rada, nie cytat ze źródeł.
Anthropic radzi zacząć od bezpośrednich wywołań API, bo wiele wzorców mieści się w kilku linijkach kodu1.
Pytania sprawdzające
Kiedy dzielisz zadanie na kroki po kolei, a kiedy naraz?
Po kolei, gdy każdy krok potrzebuje wyniku poprzedniego. Naraz, gdy podzadania są niezależne, a wyniki łączysz kodem.
Nie wiesz z góry, ile plików trzeba zmienić w repozytorium. Jaki kształt podziału wybierasz?
Dynamiczny: orkiestrator dzieli zadanie na podzadania na podstawie wejścia, bo stała ścieżka nie przewidzi liczby plików.
Czym różni się łańcuch od orkiestratora z pracownikami?
W łańcuchu kroki są ustalone z góry w kodzie. W orkiestratorze podzadania wybiera model na podstawie konkretnego wejścia.
Dlaczego nie dzielić każdego zadania na kroki „na zapas”?
Bo systemy agentowe często płacą za lepszy wynik kosztem i opóźnieniem. Zacznij od pojedynczego wywołania i dokładaj złożoność, gdy poprawia wyniki.
Podsumowanie
- Dekompozycja to rozbicie zadania na podzadania, z których każde obsługuje osobne wywołanie.
- Zależne kroki idą po kolei, niezależne naraz.
- Gdy podzadań nie da się przewidzieć, dzieli je model (orkiestrator).
- Podział kosztuje czas i pieniądze, więc zacznij od najprostszego rozwiązania.
- Złożoność dokładaj dopiero wtedy, gdy poprawia wyniki.
Źródła
- Building effective agents — Anthropic Engineeringopublikowano 2024-12-19 · sprawdzone 2026-11-02