Agenty AI zasadniczo różnią się od chatbotów. Chatbot czeka na input użytkownika i odpowiada. Agent autonomicznie realizuje cele, wywołuje narzędzia, rozumuje o problemach i podejmuje działania bez udziału człowieka na każdym kroku.
To rozróżnienie ma znaczenie, ponieważ agenty mogą zautomatyzować całe przepływy pracy. Agent kwalifikacji leadów ocenia potencjalnych klientów, wzbogaca ich dane i przypisuje ich handlowcom - wszystko bez ingerencji człowieka. Agent triage’u treści kategoryzuje zgłoszenia wsparcia, kieruje je do specjalistów i eskaluje przypadki brzegowe do ludzi.
W tym przewodniku dowiesz się, jak projektować niezawodnych agentów, integrować ich z systemami biznesowymi, zapobiegać typowym awariom i mierzyć ich wpływ. Omówimy realne wzorce stosowane na produkcji w firmach automatyzujących kwalifikację leadów, przetwarzanie dokumentów i obsługę klienta na dużą skalę.
Czym są agenty AI i czym różnią się od chatbotów?
Definicja agentów AI (autonomiczne systemy, które postrzegają, decydują, działają)
Agent AI to system programowy, który:
- Postrzega swoje środowisko (czyta input, wyniki narzędzi, pamięć)
- Rozumuje o najlepszym działaniu (używa LLM do planowania)
- Działa, wywołując narzędzia lub podejmując kroki w kierunku celu
- Dostosowuje się na podstawie informacji zwrotnej i wyników
Agenty są zorientowane na cel. Definiujesz cel (“Oceń i zakwalifikuj tego leada”), a agent sam znajduje sposób, jak go osiągnąć.
Kluczowa różnica: chatboty są reaktywne; agenty są autonomiczne
Chatboty: użytkownik inicjuje → model odpowiada
Użytkownik: "Jaki jest status mojego zamówienia?"
Chatbot: [Wyszukuje zamówienie, odpowiada]
Użytkownik: "Czy możesz je anulować?"
Chatbot: [Anuluje zamówienie, odpowiada]
Użytkownik napędza każdą interakcję. Chatbot jest bezstanowy - każda wiadomość jest niezależna.
Agenty: zorientowane na cel, podejmują działania bez inputu użytkownika na każdym kroku
Cel agenta: "Zakwalifikuj i oceń tego leada"
1. Agent obserwuje: [Dane leada z CRM]
2. Agent rozumuje: "Muszę wzbogacić te dane i go ocenić"
3. Agent działa: Wywołuje API wzbogacania
4. Agent obserwuje: [Wzbogacone dane]
5. Agent rozumuje: "Wynik to 85, przypisz topowemu handlowcowi"
6. Agent działa: Aktualizuje CRM, wysyła powiadomienie
7. Gotowe. Brak potrzeby interwencji człowieka.
Agent pracuje w kierunku zdefiniowanego celu, autonomicznie podejmując wiele decyzji i wywołań narzędzi.
Dlaczego agenty są ważne dla przepływów pracy
Automatyzacja na dużą skalę (obsługa tysięcy zadań bez udziału człowieka)
Ręczna kwalifikacja leadów: 5 minut na leada × 100 leadów = 500 godzin/miesiąc. Koszt: 10 000 USD/miesiąc (przy 20 USD/godz.).
Napędzane agentem: 10 sekund na leada × 100 leadów = 16 godzin/miesiąc. Koszt: 100 USD (wywołania API agenta). Oszczędność: 99%.
Agenty zwielokrotniają pojemność zespołu bez zatrudniania.
Rozumowanie wieloetapowe (dzielenie złożonych problemów na podzadania)
Złożone zadania wymagają wielu kroków:
- Kwalifikacja leadów: Ocena → Wzbogacenie → Przypisanie → Powiadomienie
- Triage dokumentów: Ekstrakcja → Klasyfikacja → Routing → Archiwizacja
- Obsługa klienta: Zrozumienie → Przeszukanie bazy wiedzy → Wygenerowanie odpowiedzi → Routing w razie potrzeby
Agenty obsługują to rozumowanie automatycznie. Ty definiujesz cel; agent dzieli go na kroki.
Użycie narzędzi (agenty wywołują API, bazy danych, usługi zewnętrzne)
Agenty to “ręce”. Wywołują API, aby:
- Odpytywać bazy danych
- Aktualizować systemy CRM
- Wysyłać e-maile lub wiadomości Slack
- Wywoływać usługi zewnętrzne (wzbogacanie danych, przetwarzanie płatności)
Pojedynczy agent może zorkiestrować 5-10 wywołań narzędzi, aby zakończyć przepływ pracy.
Zachowanie adaptacyjne (uczenie się z informacji zwrotnej, dostosowanie podejścia)
Agenty mogą się poprawiać z czasem. Jeśli agent błędnie klasyfikuje dokumenty, przekazujesz mu informację zwrotną. Agent uczy się i dostosowuje strategię promptów.
Kluczowe komponenty agenta AI (pętla agenta)
Pętla rozumowania agenta (z opisem diagramu)
Rdzeniem każdego agenta jest pętla:
┌─────────────────────────────────────────┐
│ START: Agent otrzymuje cel │
└────────────────┬────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ OBSERWUJ: Czytaj input, wyniki narzę- │
│ dzi, pamięć, środowisko │
└────────────────┬────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ ROZUMUJ: LLM decyduje o następnym │
│ działaniu (które narzędzie?) │
└────────────────┬────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ DZIAŁAJ: Wykonaj wywołanie narzędzia │
│ lub zakończ zadanie │
└────────────────┬────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ INFORMACJA ZWROTNA: Oceń wynik, │
│ zaktualizuj pamięć, sprawdź │
│ czy cel osiągnięty │
└────────────────┬────────────────────────┘
│
├─→ Cel nie osiągnięty? Wróć do OBSERWUJ
│
└─→ Cel osiągnięty lub max kroków? GOTOWE
Obserwacja: agent postrzega stan (input, środowisko, wyniki narzędzi)
Agent czyta:
- Początkowy input (dane leada, tekst dokumentu, pytanie klienta)
- Wyniki narzędzi z poprzednich kroków (odpowiedzi API, zapytania do bazy)
- Pamięć (historia rozmowy, wcześniejsze decyzje, baza wiedzy)
- Bieżący stan (co zostało zrobione, co zostało)
Rozumowanie: LLM decyduje o następnym działaniu (planowanie, wybór narzędzia)
LLM otrzymuje prompt taki jak:
Jesteś agentem kwalifikacji leadów. Twoim celem jest ocenić i zakwalifikować tego leada.
Dostępne narzędzia:
1. enrich_lead(lead_id) - Pobierz dodatkowe dane o leadzie
2. score_lead(lead_data) - Oceń na podstawie kryteriów
3. assign_to_sales_rep(lead_id, rep_id) - Przypisz leada do handlowca
4. send_notification(rep_id, message) - Powiadom handlowca
Bieżący stan:
- Lead ID: 12345
- Firma: Acme Corp
- Przychód: Nieznany (trzeba wzbogacić)
- Status: Jeszcze nieoceniony
Co należy zrobić dalej?
LLM odpowiada: “Najpierw powinienem wzbogacić leada, aby uzyskać dane o przychodach, potem ocenić, potem przypisać.”
Działanie: wykonaj wywołanie narzędzia lub zrób krok w kierunku celu
Agent wykonuje wybrane narzędzie:
result = enrich_lead(lead_id=12345)
# Returns: {'revenue': '$10M', 'industry': 'SaaS', 'employees': 150}
Informacja zwrotna: oceń wynik, w razie potrzeby skoryguj strategię
Agent sprawdza: Czy wywołanie narzędzia się powiodło? Czy przybliżyło cel? Zaktualizuj pamięć i kontynuuj pętlę.
Pętla: powtarzaj, aż cel zostanie osiągnięty lub osiągnięty max kroków
Agent powtarza obserwację → rozumowanie → działanie → informację zwrotną aż do:
- Osiągnięcia celu (“Lead oceniony i przypisany”)
- Osiągnięcia maksymalnej liczby kroków (zapobiega nieskończonym pętlom)
- Wystąpienia błędu (eskaluj do człowieka)
Integracja narzędzi (“ręce” agenta)
Definiowanie narzędzi (sygnatury funkcji, opisy, parametry)
Narzędzia to funkcje, które agent może wywołać. Zdefiniuj je jasno:
tools = [
{
"name": "enrich_lead",
"description": "Get additional company data about a lead (revenue, employees, industry)",
"parameters": {
"lead_id": {"type": "string", "description": "Unique identifier of the lead"}
}
},
{
"name": "score_lead",
"description": "Score a lead on a scale of 0-100 based on fit criteria",
"parameters": {
"lead_data": {"type": "object", "description": "Lead information including revenue, industry, etc."}
}
}
]
Jasne opisy pomagają LLM wybrać właściwe narzędzie.
Wywoływanie narzędzi (jak agenty wybierają i wywołują narzędzia)
LLM odpowiada wywołaniem narzędzia:
{
"thought": "I need to enrich this lead to get revenue data",
"action": "enrich_lead",
"action_input": {"lead_id": "12345"}
}
Twój framework agenta wykonuje narzędzie i przekazuje wynik z powrotem do LLM.
Obsługa wyników narzędzi (parsowanie odpowiedzi, odzyskiwanie po błędach)
Obsługuj zarówno sukces, jak i porażkę:
def execute_tool(tool_name, tool_input):
try:
if tool_name == "enrich_lead":
result = crm_api.enrich(tool_input['lead_id'])
return {"status": "success", "data": result}
except Exception as e:
return {"status": "error", "message": str(e)}
Jeśli narzędzie zawiedzie, agent powinien spróbować innego podejścia lub eskalować do człowieka.
Systemy pamięci (co agenty zapamiętują)
Pamięć krótkoterminowa (bieżący kontekst rozmowy)
Robocza pamięć agenta: bieżący input, wyniki narzędzi, kroki rozumowania. Zwykle przechowywana w oknie kontekstu (prompt).
Przykład: agent kwalifikacji leadów pamięta:
- Oryginalne dane leada
- Wyniki wzbogacania
- Wynik oceny
- Który handlowiec został przypisany
Pamięć długoterminowa (baza wiedzy, wcześniejsze interakcje)
Trwała pamięć: wcześniejsze decyzje, nauczone wzorce, baza wiedzy.
Zastosowania:
- Baza wiedzy: Agent pobiera odpowiednie artykuły przy odpowiadaniu na pytania klientów
- Historia decyzji: Agent uczy się, które leady się konwertowały (poprawia scoring)
- Logi interakcji: Agent pamięta poprzednie interakcje z klientem
Zaimplementuj z bazami wektorowymi (Pinecone, Weaviate) do wyszukiwania semantycznego.
Ograniczenia pamięci (ograniczenia okna kontekstu)
LLM mają skończone okna kontekstu (4K-128K tokenów). Agenty nie mogą pamiętać wszystkiego. Strategie:
- Podsumowania: Kompresuj stare rozmowy do streszczeń
- Retrieval-augmented generation (RAG): Pobieraj tylko istotną pamięć w razie potrzeby
- Pamięć hierarchiczna: Trzymaj niedawne interakcje w krótkoterminowej, starsze w długoterminowej
Kręgosłup rozumowania (“mózg”)
Wybór LLM (GPT-4, Claude, modele open source)
- GPT-4: Najlepsze rozumowanie, obsługuje złożone zadania. Koszt: 0,03-0,06 USD za 1K tokenów.
- Claude 3.5 Sonnet: Silne rozumowanie, długi kontekst (200K tokenów). Koszt: 0,003-0,015 USD za 1K tokenów.
- Open source (LLaMA 4): Tańszy (0,01-0,03 USD za 1M tokenów), konfigurowalny, przyjazny prywatności.
Dla większości agentów Claude lub modele open source są wystarczające i tańsze.
Tryby rozumowania (Chain-of-Thought, Tree-of-Thought, Reflexion)
- Chain-of-thought: Agent myśli krok po kroku. “Muszę wzbogacić → ocenić → przypisać.”
- Tree-of-thought: Agent eksploruje wiele ścieżek i wybiera najlepszą. Wolniejsze, ale dokładniejsze w złożonych problemach.
- Reflexion: Agent krytykuje własny output, ponawia próbę w razie potrzeby. Zmniejsza halucynacje.
Przykład promptu reflexion:
Agent: "Przypiszę tego leada handlowcowi John."
Krytyk: "Chwila, sprawdziłeś, czy John nie ma już maksymalnej liczby?"
Agent: "Słuszna uwaga. Najpierw sprawdzę obciążenie Johna."
Kompromisy: szybkość vs. dokładność
- Szybkie agenty: Rozumowanie single-turn, brak walidacji narzędzi. 2-5 sekund na zadanie. 85% dokładności.
- Dokładne agenty: Rozumowanie wieloetapowe, walidacja, reflexion. 10-30 sekund na zadanie. 95% dokładności.
Wybierz szybkość dla czasu rzeczywistego (obsługa klienta). Wybierz dokładność dla wysokich stawek (decyzje finansowe).
Typy agentów i kiedy używać każdego
Agenty reaktywne (proste, szybkie, bezstanowe)
Jak działają (jednorazowa tura: input → akcja)
Agenty reaktywne podejmują jedną decyzję i działają. Bez planowania wieloetapowego.
Input: "Jaki jest stan mojego konta?"
→ Agent odpytuje bazę danych
→ Agent odpowiada ze stanem
Gotowe.
Najlepsze do: prostego użycia narzędzi, wywołań API, natychmiastowych odpowiedzi
- Q&A obsługi klienta (wyszukanie zamówienia, sprawdzenie stanu)
- Proste wywołania API (pogoda, cena akcji)
- Potrzebne natychmiastowe odpowiedzi (< 2 s opóźnienia)
Przykład: chatbot obsługi klienta z wyszukiwaniem w bazie wiedzy
def customer_service_agent(question):
# 1. Search knowledge base
articles = search_kb(question)
# 2. LLM picks best article
response = llm.complete(f"""
Question: {question}
Relevant articles: {articles}
Provide an answer based on these articles.
""")
# 3. Return response
return response
Opóźnienie: 1-3 sekundy. Koszt: 0,001-0,01 USD za zapytanie.
Agenty planujące (zorientowane na cel, rozumowanie wieloetapowe)
Jak działają (dekompozycja celu na podzadania, wykonanie planu)
Agenty planujące dzielą złożone cele na kroki.
Cel: "Zakwalifikuj i przypisz tego leada"
→ Agent planuje: [wzbogacenie, ocena, przypisanie, powiadomienie]
→ Agent wykonuje każdy krok
→ Agent weryfikuje osiągnięcie celu
Gotowe.
Najlepsze do: złożonych przepływów pracy, zadań badawczych, analizy danych
- Kwalifikacja leadów (wzbogacenie → ocena → przypisanie)
- Przetwarzanie dokumentów (ekstrakcja → klasyfikacja → przechowywanie)
- Zadania badawcze (wyszukiwanie → streszczenie → kompilacja)
Przykład: agent kwalifikacji leadów (ocena → wzbogacenie → przypisanie)
def lead_qualification_agent(lead_id):
lead = crm.get_lead(lead_id)
# Step 1: Enrich
enriched = enrich_lead(lead)
# Step 2: Score
score = score_lead(enriched)
# Step 3: Assign
best_rep = find_best_sales_rep(score)
crm.assign_lead(lead_id, best_rep)
# Step 4: Notify
send_slack(f"New qualified lead assigned to {best_rep}")
return {"lead_id": lead_id, "score": score, "assigned_to": best_rep}
Opóźnienie: 5-15 sekund. Koszt: 0,02-0,05 USD na leada.
Agenty uczące się (adaptacyjne, poprawiają się w czasie)
Jak działają (uwzględniają informacje zwrotne, dostosowują zachowanie)
Agenty uczące się stają się lepsze z informacją zwrotną.
Początkowo: Agent klasyfikuje dokument jako "Faktura" (60% pewności)
Informacja zwrotna od człowieka: "W rzeczywistości to Paragon"
Agent się uczy: Dostosowuje prompty klasyfikacyjne
Następnym razem: Ten sam dokument sklasyfikowany jako "Paragon" (90% pewności)
Najlepsze do: procesów długotrwałych, personalizacji, optymalizacji
- Rekomendacje treści (uczy się preferencji użytkownika)
- Routing obsługi klienta (uczy się, który agent najlepiej obsługuje jakie problemy)
- Optymalizacja cen (uczy się, które ceny najlepiej konwertują)
Przykład: agent rekomendacji treści (uczy się preferencji użytkownika)
def recommendation_agent(user_id):
# Get user history
history = db.get_user_history(user_id)
# LLM recommends based on patterns
recommendation = llm.complete(f"""
User history: {history}
Based on past preferences, what should we recommend?
""")
# Show recommendation, collect feedback
feedback = user_feedback # thumbs up/down
# Store feedback for future recommendations
db.log_feedback(user_id, recommendation, feedback)
return recommendation
Z czasem rekomendacje się poprawiają, ponieważ agent uczy się preferencji użytkownika.
Agenty hierarchiczne (agenty zarządzające innymi agentami)
Jak działają (agent nadzorujący deleguje specjalistom)
Agent nadzorujący koordynuje wyspecjalizowanych agentów.
Nadzorca: "Obsłuż to zgłoszenie wsparcia"
├─ Agent klasyfikujący: "To problem z rozliczeniami"
├─ Agent specjalista rozliczeń: "Zwróć 50 USD"
└─ Agent powiadomień: "Wyślij e-mail potwierdzający"
Najlepsze do: przepływów pracy w przedsiębiorstwie, automatyzacji na dużą skalę
- Tworzenie treści (badanie → pisanie → edycja → publikacja)
- Złożona obsługa klienta (triage → rozwiązanie → eskalacja)
- Pipeline’y przetwarzania danych (ekstrakcja → transformacja → ładowanie)
Przykład: pipeline tworzenia treści (badanie → pisanie → edycja → publikacja)
def content_pipeline_agent(topic):
# Supervisor delegates
research = research_agent(topic)
draft = writer_agent(research)
edited = editor_agent(draft)
published = publisher_agent(edited)
return {"topic": topic, "status": "published"}
Każdy wyspecjalizowany agent jest zoptymalizowany pod swoje zadanie. Nadzorca orkiestruje.
Najlepsze narzędzia i frameworki agentów AI w 2026 (tabela porównawcza)
Kryteria oceny
Zdolność rozumowania (Chain-of-Thought, planowanie, reflexion)
Jak zaawansowane jest myślenie agenta. Proste agenty używają chain-of-thought. Złożone agenty używają planowania i reflexion.
Integracja narzędzi (jak łatwo dodać własne narzędzia)
Czy możesz łatwo podłączyć API, bazy danych, systemy CRM? Czy potrzebujesz własnego kodu?
Krzywa uczenia (czas konfiguracji, jakość dokumentacji)
Jak szybko deweloper może mieć działającego agenta? Platformy no-code są szybsze; frameworki Python bardziej elastyczne.
Model cenowy (darmowy, per wywołanie API, subskrypcja)
Niektóre frameworki są open source (darmowe). Inne pobierają opłatę za wywołanie API lub subskrypcję.
Najlepsze zastosowania
Pod co jest zoptymalizowane każde narzędzie?
Tabela porównawcza: najlepsze narzędzia i frameworki agentów AI (2026)
| Narzędzie | Typ frameworka | Zdolność rozumowania | Integracja narzędzi | Krzywa uczenia | Cena | Najlepsze do |
|---|---|---|---|---|---|---|
| n8n | Wizualny builder workflow | Chain-of-thought | 500+ integracji | Niska | Darmowy + płatny | Użytkownicy nietechniczni, szybka konfiguracja |
| CrewAI | Framework Python | Planowanie + reflexion | Własne narzędzia (Python) | Średnia | Open source | Deweloperzy, złożone agenty |
| Autogen | Framework Python | Rozumowanie multi-agent | Własne narzędzia | Wysoka | Open source | Badania, systemy multi-agent |
| LangGraph | Framework Python | Planowanie + zarządzanie stanem | Ekosystem LangChain | Średnia | Open source | Złożone przepływy, śledzenie stanu |
| FlowHunt | Platforma natywna | Chain-of-thought + planowanie | Natywne + integracje API | Niska | Subskrypcja | Automatyzacja workflow, łatwość użycia |
| Lindy.ai | Platforma no-code | Chain-of-thought | 100+ integracji | Bardzo niska | Freemium | Nietechniczni, szybkie agenty |
| Gumloop | Platforma no-code | Chain-of-thought | 50+ integracji | Bardzo niska | Freemium | Prosta automatyzacja, szablony |
Kluczowe różnice:
- No-code (n8n, FlowHunt, Lindy.ai): Szybkie budowanie, ograniczona personalizacja. Dobre do standardowych przepływów.
- Frameworki Python (CrewAI, Autogen, LangGraph): Elastyczne, potężne, stromsza krzywa uczenia. Dobre do złożonej logiki.
- Open source (CrewAI, Autogen, LangGraph): Darmowe, ale zarządzasz infrastrukturą. Płatne platformy obsługują hosting.
Jak wybrać odpowiednie narzędzie do swojego przypadku użycia
- Szybki prototyp (< 1 tydzień): Użyj no-code (FlowHunt, n8n, Lindy.ai)
- Złożony agent z własną logiką: Użyj frameworka Python (CrewAI, LangGraph)
- System multi-agent (agenty koordynujące): Użyj Autogen
- Produkcyjna automatyzacja workflow: Użyj FlowHunt (zarządzany, monitorowany, skalowalny)
Budowanie pierwszego agenta: architektura krok po kroku
Zdefiniuj cel i zakres agenta
Jaki problem rozwiązuje?
Bądź konkretny. Źle: “Zautomatyzuj zarządzanie leadami.” Dobrze: “Oceń leady 0-100, wzbogać o dane firmowe, przypisz handlowcom na podstawie obłożenia.”
Jakie są metryki sukcesu?
- Dokładność: % poprawnych decyzji (cel: > 90%)
- Opóźnienie: Czas wykonania zadania (cel: < 10 sekund)
- Koszt: Wywołania API na zadanie (cel: < 0,05 USD)
- Stopień automatyzacji: % zadań zakończonych bez ingerencji człowieka (cel: > 80%)
Jakie są ograniczenia (opóźnienie, koszt, dokładność)?
Kompromisy:
- Przepływy w czasie rzeczywistym: Wymagają < 5 s opóźnienia. Używaj szybkich modeli, mniej wywołań narzędzi.
- Przepływy wsadowe: Mogą tolerować 5-30 minut. Używaj dokładniejszego rozumowania, więcej wywołań narzędzi.
- Wrażliwe na koszt: Używaj modeli open source, mniej wywołań API.
- Krytyczne dla dokładności: Używaj drogich modeli (GPT-4), wieloetapowej walidacji.
Zaprojektuj pętlę agenta
Co agent będzie obserwował?
Dane wejściowe: dane leada, tekst dokumentu, pytanie klienta, kontekst z pamięci.
Jaki tryb rozumowania (prosty chain-of-thought vs. planowanie)?
- Chain-of-thought: Szybki, prosty. “Zrobię krok 1, potem krok 2.”
- Planowanie: Wolniejsze, dokładniejsze. “Zaplanujmy najpierw wszystkie kroki, potem wykonamy.”
Jakich narzędzi potrzebuje?
Wypisz API, bazy danych, usługi, które agent będzie wywoływał.
Przykład dla kwalifikacji leadów:
- API CRM (pobierz/zaktualizuj leada)
- API wzbogacania danych (pobierz dane firmy)
- Model scoringowy (oceń leada)
- Serwis powiadomień (wyślij Slack/e-mail)
Skąd wie, kiedy przestać?
Zdefiniuj warunek sukcesu. “Przestań, gdy lead jest oceniony i przypisany.”
Zdefiniuj też maks. kroków, aby zapobiec nieskończonym pętlom. “Przestań po 10 krokach, niezależnie od czegokolwiek.”
Zaimplementuj i przetestuj
Pseudokod lub prawdziwy przykład kodu (CrewAI lub FlowHunt)
Przykład CrewAI:
from crewai import Agent, Task, Crew
# Define agents
enrichment_agent = Agent(
role="Data Enrichment Specialist",
goal="Enrich lead data with company information",
tools=[enrich_tool]
)
scoring_agent = Agent(
role="Lead Scoring Expert",
goal="Score leads based on fit criteria",
tools=[score_tool]
)
assignment_agent = Agent(
role="Sales Manager",
goal="Assign leads to best sales rep",
tools=[assign_tool, notify_tool]
)
# Define tasks
enrich_task = Task(
description="Enrich this lead: {lead_id}",
agent=enrichment_agent
)
score_task = Task(
description="Score the enriched lead",
agent=scoring_agent
)
assign_task = Task(
description="Assign lead to best rep and notify",
agent=assignment_agent
)
# Run crew
crew = Crew(agents=[enrichment_agent, scoring_agent, assignment_agent],
tasks=[enrich_task, score_task, assign_task])
result = crew.kickoff(inputs={"lead_id": "12345"})
Strategia testowania (testy jednostkowe wywołań narzędzi, testy integracyjne pętli)
def test_enrichment_tool():
result = enrich_tool("lead_123")
assert result['revenue'] is not None
assert result['employees'] is not None
def test_scoring_agent():
lead = {"company": "Acme", "revenue": "10M", "employees": 50}
score = score_agent(lead)
assert 0 <= score <= 100
def test_full_loop():
result = lead_qualification_agent("lead_123")
assert result['assigned_to'] is not None
assert result['score'] > 0
Debugowanie typowych problemów (nieskończone pętle, halucynacje, złe narzędzia)
- Nieskończone pętle: Dodaj limit kroków. Loguj każdy krok. Monitoruj powtarzające się akcje.
- Halucynacje: Dodaj walidację. Sprawdzaj wyjścia wobec danych źródłowych.
- Złe narzędzia: Popraw opisy narzędzi. Dodaj walidację narzędzia przed wykonaniem.
Prawdziwy przykład: agent kwalifikacji leadów
Cel: oceniaj leady, wzbogacaj dane, przypisuj do zespołu sprzedaży
def lead_qualification_agent(lead_id):
"""
Autonomous agent that qualifies leads.
1. Fetches lead from CRM
2. Enriches with company data
3. Scores based on fit criteria
4. Assigns to best sales rep
5. Notifies rep
"""
Narzędzia: API CRM, serwis wzbogacania danych, model scoringowy
tools = {
"get_lead": crm.get_lead,
"enrich_lead": enrichment_api.enrich,
"score_lead": scoring_model.score,
"find_best_rep": crm.find_available_rep,
"assign_lead": crm.assign,
"send_notification": slack.send
}
Omówienie pseudokodu (obserwuj leada → oceń → wzbogać → przypisz)
# Step 1: Observe
lead = get_lead(lead_id)
print(f"Observing lead: {lead['company']}")
# Step 2: Reason (LLM decides next action)
# LLM: "I need to enrich this lead first"
# Step 3: Act
enriched = enrich_lead(lead)
print(f"Enriched: revenue={enriched['revenue']}")
# Step 4: Feedback + Loop
# LLM: "Now I'll score"
# Step 5: Act
score = score_lead(enriched)
print(f"Score: {score}")
# Step 6: Reason
# LLM: "Score is {score}, should assign to top rep"
# Step 7: Act
best_rep = find_best_rep(score)
assign_lead(lead_id, best_rep)
send_notification(best_rep, f"New lead: {lead['company']}")
print(f"Assigned to {best_rep}")
Wyniki: metryki dokładności, opóźnienia, kosztu
- Dokładność: 94% (ocena leada zgodna z ręczną weryfikacją)
- Opóźnienie: 8 sekund (5 wywołań narzędzi, 3 kroki rozumowania LLM)
- Koszt: 0,03 USD na leada (wywołania API GPT-4 + API wzbogacania)
- Przepustowość: 450 leadów/godz. (jedna instancja agenta)
- Stopień automatyzacji: 87% (13% eskalowanych do człowieka do przeglądu)
Integracja agentów z systemami biznesowymi
Wzorce integracji API
REST API (najczęstsze)
Większość agentów wywołuje REST API. Użyj standardowego klienta HTTP:
def call_crm_api(endpoint, method="GET", data=None):
url = f"https://api.crm.com/{endpoint}"
headers = {"Authorization": f"Bearer {api_key}"}
if method == "GET":
response = requests.get(url, headers=headers)
elif method == "POST":
response = requests.post(url, json=data, headers=headers)
return response.json()
Webhooki (wyzwalacze agentów sterowane zdarzeniami)
Wyzwalaj agenty przy zdarzeniach (nowy lead, przychodzący e-mail, wysłanie formularza):
@app.post("/webhook/new_lead")
def on_new_lead(lead_data):
# Trigger agent asynchronously
queue.enqueue(lead_qualification_agent, lead_data['id'])
return {"status": "queued"}
Uwierzytelnianie i bezpieczeństwo (klucze API, OAuth, rate limiting)
- Klucze API: Przechowuj w environment variables, nie w kodzie
- OAuth: Dla integracji skierowanych do użytkownika (Salesforce, HubSpot)
- Rate limiting: Szanuj limity API. Wdróż logikę backoff i retry
from ratelimit import limits, sleep_and_retry
@sleep_and_retry
@limits(calls=100, period=60) # 100 calls per minute
def call_api(endpoint):
return requests.get(f"https://api.example.com/{endpoint}")
Integracja z bazami danych
Tylko odczyt (agent odpytuje dane)
Agent czyta dane klienta, poprzednie interakcje, bazę wiedzy:
def get_customer_history(customer_id):
query = "SELECT * FROM interactions WHERE customer_id = %s"
return db.execute(query, (customer_id,))
Operacje zapisu (agent przechowuje decyzje/wyniki)
Agent zapisuje decyzje do bazy:
def store_lead_score(lead_id, score, assigned_to):
db.execute(
"UPDATE leads SET score = %s, assigned_to = %s WHERE id = %s",
(score, assigned_to, lead_id)
)
Transakcje i spójność (zapewnienie integralności danych)
Używaj transakcji dla operacji wieloetapowych:
with db.transaction():
score = score_lead(lead)
db.update_lead_score(lead_id, score)
rep = find_best_rep(score)
db.assign_lead(lead_id, rep)
# All-or-nothing: if any step fails, rollback
Integracja z CRM i narzędziami biznesowymi
Wzorce integracji Salesforce, HubSpot, Pipedrive
Używaj oficjalnych SDK:
from salesforce import SalesforceAPI
sf = SalesforceAPI(api_key=key)
# Update lead
sf.update_lead(lead_id, {
'score': 85,
'assigned_to': 'john@acme.com',
'status': 'qualified'
})
Integracja Slack, e-mail, Jira (agent wysyła powiadomienia/aktualizacje)
from slack_sdk import WebClient
slack = WebClient(token=slack_token)
# Notify sales rep
slack.chat_postMessage(
channel="john",
text=f"New qualified lead: {lead['company']} (score: {score})"
)
Uwierzytelnianie i zakres uprawnień
Używaj zakresów OAuth, aby ograniczyć, co mogą robić agenty:
# Agent can only read leads, update scores
# Cannot delete leads or access sensitive data
oauth_scopes = ["leads:read", "leads:update"]
Przepływy human-in-the-loop
Kiedy agenty potrzebują zatwierdzenia przez człowieka
Decyzje wysokiego ryzyka: transakcje finansowe, zwroty dla klientów, wyjątki od polityki.
if decision_risk_score > 0.7:
# Route to human for approval
escalate_to_human(decision, reason="High risk")
else:
# Agent executes decision
execute_decision(decision)
Wzorce eskalacji (decyzje wysokiego ryzyka, przypadki brzegowe)
def lead_qualification_with_escalation(lead_id):
score = score_lead(lead_id)
if score > 80:
# High confidence, assign directly
assign_lead(lead_id, best_rep)
elif 50 < score < 80:
# Medium confidence, route to human
escalate_to_human(lead_id, "Review and assign")
else:
# Low score, reject
reject_lead(lead_id)
Pętle zwrotne (ludzie korygują błędy agenta)
@app.post("/feedback/lead_score")
def on_score_feedback(lead_id, actual_score, agent_score):
# Store feedback
db.log_feedback(lead_id, agent_score, actual_score)
# Retrain model on feedback (periodic)
if should_retrain():
retrain_scoring_model()
Typowe awarie agentów i jak im zapobiegać
Nieskończone pętle (agent utyka, powtarzając tę samą akcję)
Przyczyna: słaba definicja celu, narzędzie, które nie prowadzi do postępu
# Bad: Agent keeps calling same tool
Agent myśli: "I need to get lead data"
→ Wywołuje get_lead()
→ Nadal brak wzbogaconych danych
→ Wywołuje get_lead() ponownie
→ Nieskończona pętla
Zapobieganie: limit kroków, śledzenie postępu, różnorodność narzędzi
max_steps = 10
steps_taken = 0
while steps_taken < max_steps:
action = llm.decide_next_action()
if action == last_action:
# Same action twice, break loop
break
execute_action(action)
steps_taken += 1
Odzyskiwanie: timeout, eskalacja do człowieka
try:
result = agent.run(timeout=30) # 30 second timeout
except TimeoutError:
escalate_to_human("Agent loop timeout")
Halucynacje (agent wymyśla fakty lub wyniki narzędzi)
Przyczyna: tendencja LLM do konfabulacji, słabe opisy narzędzi
# Bad: Agent hallucinates tool output
Agent: "I called enrich_lead, got revenue=$100M"
Rzeczywistość: enrich_lead() returned null (API failed)
Agent made up the result
Zapobieganie: Retrieval-Augmented Generation (RAG), walidacja narzędzi, fact-checking
def execute_tool_safely(tool_name, params):
try:
result = execute_tool(tool_name, params)
# Validate result
if result is None:
return {"error": "Tool returned null"}
if not validate_result(result):
return {"error": "Result failed validation"}
return result
except Exception as e:
return {"error": str(e)}
Użyj RAG, aby osadzić agenta w faktach:
# Instead of: "Summarize this article"
# Use: "Summarize this article, citing specific passages"
knowledge_base = vector_db.search(query)
prompt = f"""
Summarize this article. Only cite specific passages.
Article: {article}
Knowledge base: {knowledge_base}
"""
Odzyskiwanie: fallback do człowieka, retry z innym rozumowaniem
def robust_agent_call(goal, retries=3):
for attempt in range(retries):
try:
result = agent.run(goal)
# Validate result
if validate(result):
return result
except Exception as e:
if attempt == retries - 1:
escalate_to_human(goal)
else:
time.sleep(2 ** attempt) # Backoff
Nieprawidłowe użycie narzędzi (agent wywołuje złe narzędzie lub ze złymi parametrami)
Przyczyna: niejednoznaczne opisy narzędzi, słabe rozumowanie
# Bad: Ambiguous tool description
"update_lead - Update a lead"
# Good: Clear description
"update_lead - Update a lead's score, status, or assigned_to field.
Parameters: lead_id (required), score (0-100), status (qualified/disqualified),
assigned_to (sales rep email)"
Zapobieganie: jasna dokumentacja narzędzi, trening użycia narzędzi, walidacja przed wykonaniem
# Validate before execution
tool_call = llm.decide_tool_call()
if not validate_tool_call(tool_call):
# Tool call is invalid, ask LLM to fix
llm.correct_tool_call(tool_call)
else:
execute_tool(tool_call)
def validate_tool_call(call):
tool = tools[call['name']]
required_params = tool['required_parameters']
for param in required_params:
if param not in call['params']:
return False
return True
Odzyskiwanie: obsługa błędów, sugerowanie właściwego narzędzia, retry
try:
result = execute_tool(tool_call)
except ToolExecutionError as e:
# Suggest correct tool
correct_tool = suggest_correct_tool(e)
llm.suggest_retry(correct_tool)
Przekroczenia kosztów (agent używa zbyt wielu wywołań API)
Przyczyna: nieefektywne rozumowanie, zbędne wywołania narzędzi
# Bad: Agent calls same tool multiple times
Agent: "Let me get lead data"
→ Wywołuje get_lead()
→ Wywołuje get_lead() ponownie (zapomniał, że już to zrobił)
→ Wywołuje get_lead() trzeci raz
Koszt: 3x wyższy niż potrzeba
Zapobieganie: limity budżetu, deduplikacja wywołań, cachowanie
budget = {"tokens": 10000, "api_calls": 50}
spent = {"tokens": 0, "api_calls": 0}
def execute_with_budget(action):
global spent
if spent['api_calls'] >= budget['api_calls']:
raise BudgetExceededError()
result = execute_action(action)
spent['api_calls'] += 1
return result
Wdróż cachowanie:
cache = {}
def get_lead_cached(lead_id):
if lead_id in cache:
return cache[lead_id]
result = crm_api.get_lead(lead_id)
cache[lead_id] = result
return result
Odzyskiwanie: monitorowanie kosztów, throttling, fallback do tańszego modelu
if cost_this_hour > budget_per_hour:
# Switch to cheaper model
switch_to_model("gpt-3.5-turbo") # Cheaper than GPT-4
Problemy z opóźnieniem (agent zbyt wolny do użycia w czasie rzeczywistym)
Przyczyna: wiele kroków rozumowania, wolne odpowiedzi narzędzi
Agent wykonujący 5 sekwencyjnych wywołań API po 1 sekundzie każde = 5+ sekund opóźnienia.
Zapobieganie: równoległe wykonywanie narzędzi, cachowanie, szybsze modele
# Parallel execution
import asyncio
async def parallel_agent(lead_id):
lead = await get_lead_async(lead_id)
# Call multiple tools in parallel
enrichment, scoring = await asyncio.gather(
enrich_lead_async(lead),
score_lead_async(lead)
)
return (enrichment, scoring)
Używaj szybszych modeli:
# Instead of GPT-4 (slower, more accurate)
# Use GPT-3.5-turbo (faster, still accurate enough)
model = "gpt-3.5-turbo" # 200ms latency vs 500ms for GPT-4
Odzyskiwanie: timeout, zwracanie częściowych wyników, kolejkowanie async
try:
result = agent.run(timeout=5) # 5 second timeout
return result
except TimeoutError:
# Return partial results
return partial_result
# Queue for async completion
queue.enqueue(complete_agent, lead_id)
Mierzenie wydajności agenta i ROI
Kluczowe metryki do śledzenia
Dokładność (% poprawnych decyzji/akcji)
Porównaj output agenta z referencją (przegląd człowieka, faktyczne wyniki).
correct = 0
total = 100
for decision in agent_decisions:
if decision == human_review[decision.id]:
correct += 1
accuracy = correct / total * 100 # e.g., 94%
Opóźnienie (czas wykonania zadania)
Mierz czas end-to-end od wejścia do wyjścia.
start = time.time()
result = agent.run(input_data)
latency = time.time() - start # e.g., 8.5 seconds
Koszt na zadanie (wywołania API, obliczenia, przegląd człowieka)
cost = (llm_api_calls * llm_cost) + (tool_calls * tool_cost) + (human_review_rate * hourly_rate)
# e.g., $0.03 per lead
Satysfakcja użytkowników (jeśli human-in-the-loop)
Ankietuj użytkowników: “Jak bardzo jesteś zadowolony z decyzji agenta?”
Stopień automatyzacji (% zadań zakończonych bez ingerencji człowieka)
automated = tasks_completed_by_agent
total = all_tasks
automation_rate = automated / total * 100 # e.g., 87%
Obliczanie ROI
Baza: koszt procesu ręcznego (godziny ludzkie × stawka godzinowa)
Manual lead qualification:
- 100 leads/month
- 5 minutes per lead
- 500 hours/month
- $20/hour = $10,000/month
Koszt agenta: infrastruktura + wywołania API + nadzór człowieka
Agent-driven:
- 100 leads/month
- $0.03 per lead (API calls)
- $3 total API cost
- $500/month human review (10% escalation)
- $100/month infrastructure
Total: $603/month
Okres zwrotu: kiedy koszt agenta < koszt ręczny
Savings per month: $10,000 - $603 = $9,397
ROI: 1,557% (9,397 / 603)
Payback period: < 1 month (immediate)
Przykład: ROI agenta kwalifikacji leadów
Manual process:
- 500 leads/month
- 5 min per lead = 2,500 hours = $50,000/month
Agent process:
- 500 leads/month
- $0.03 per lead = $15
- 5% escalation (25 leads) = $250 human time
- Infrastructure = $500
Total: $765/month
Savings: $50,000 - $765 = $49,235/month
ROI: 6,436%
Ciągłe doskonalenie
Monitoruj metryki w czasie
# Track daily metrics
daily_metrics = {
'accuracy': 0.94,
'latency': 8.5,
'cost_per_task': 0.03,
'automation_rate': 0.87
}
Testuj A/B różne konfiguracje agenta
# Test 1: GPT-4 (more accurate, slower)
# Test 2: GPT-3.5-turbo (faster, slightly less accurate)
# Measure: accuracy, latency, cost
# Choose based on your priorities
Wykorzystuj informację zwrotną do poprawy dokładności
# Collect human feedback on agent mistakes
feedback = db.get_feedback()
# Retrain agent (adjust prompts, add examples)
agent.retrain(feedback)
# Measure: accuracy improves from 94% to 96%
Skaluj udanych agentów, wycofuj tych bez wyników
Monitoruj ROI. Jeśli agent nie dostarcza wartości, wycofaj go. Skaluj udanych agentów do innych zespołów.
Najczęściej zadawane pytania
Sekcja FAQ jest automatycznie renderowana z frontmatter i pojawia się poniżej.
{{ cta-dark-panel heading=“Buduj agentów bez zbędnej złożoności” description=“Natywna platforma agentów FlowHunt obsługuje integrację narzędzi, obsługę błędów i monitorowanie. Zacznij budować autonomiczne przepływy pracy w kilka minut - nie tygodni.” ctaPrimaryText=“Wypróbuj FlowHunt za darmo” ctaPrimaryURL=“https://app.flowhunt.io/sign-in" ctaSecondaryText=“Zarezerwuj demo” ctaSecondaryURL=“https://www.flowhunt.io/demo/" gradientStartColor="#7c3aed” gradientEndColor="#ec4899” gradientId=“cta-ai-agents” }}

