W ciągu ostatnich dwóch lat liczba frameworków do budowy agentów AI eksplodowała. Jeszcze niedawno większość projektów powstawała w LangChain. Dzisiaj do wyboru mamy OpenAI Agents SDK, Pydantic AI, Agno, Haystack, LangGraph, LlamaIndex, Google ADK, Semantic Kernel i kilkanaście kolejnych rozwiązań.
Naturalnie pojawia się pytanie:
Od którego frameworka warto zacząć projekt?
Odpowiedź może być zaskakująca.
Nie zaczynaj od frameworka
Na początku nie potrzebujesz frameworka.
Jeżeli Twój agent wykonuje prostą pętlę – odbiera zapytanie, wywołuje model, korzysta z narzędzi i zwraca odpowiedź – to zwykłe wywołania API i kilkadziesiąt linii Pythona są często najlepszym rozwiązaniem. Dają pełną kontrolę nad kodem, łatwiejsze debugowanie, brak ukrytej logiki, prostsze wdrażanie i mniej zależności.
def run_agent(query: str) -> str:
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": query}],
)
return response.choices[0].message.
Framework zaczyna mieć sens dopiero wtedy, gdy projekt rośnie.
Kiedy framework naprawdę pomaga?
Dobre frameworki rozwiązują problemy, których samemu nie chce się implementować. Najczęściej są to: pamięć agenta, orkiestracja wielu agentów, zarządzanie narzędziami, tracing, observability, RAG, workflow oraz deployment.
Observability (obserwowalność) to możliwość zrozumienia, co dokładnie dzieje się wewnątrz agenta na podstawie generowanych przez niego danych. Obejmuje logi, które zapisują zdarzenia, błędy i decyzje, metryki, takie jak czas odpowiedzi, liczba tokenów, koszt czy odsetek błędów, oraz traces, pokazujące pełną ścieżkę wykonania — od zapytania użytkownika, przez wywołania modelu i narzędzi, aż po końcową odpowiedź. Dzięki observability można szybciej znaleźć przyczynę błędnej odpowiedzi, wykryć wolne lub kosztowne kroki i sprawdzić, dlaczego agent podjął konkretną decyzję.
Jeżeli Twój projekt dochodzi do tego etapu, warto sięgnąć po gotowe rozwiązania.
OpenAI Agents SDK – najmniejszy próg wejścia
Jeżeli dopiero zaczynasz przygodę z agentami, warto spojrzeć na OpenAI Agents SDK.
OpenAI Agents SDK to framework zaprojektowany z myślą o tworzeniu nowoczesnych aplikacji agentowych bez zbędnej warstwy abstrakcji. Zamiast narzucać własny sposób budowania aplikacji, dostarcza niewielki zestaw prostych komponentów, które można łatwo zintegrować z istniejącym kodem Python.
1 2agent = Agent( 3 name="Assistant", 4 instructions="You are a helpful assistant", 5) 6result = Runner.run_sync( 7 agent, 8 "Write a haiku about recursion in programming.", 9)
Framework oferuje bardzo prosty model programowania, eleganckie przekazywanie zadań pomiędzy agentami, wbudowany tracing i niewielką liczbę pojęć do opanowania. To dobry wybór do MVP, prototypów, warsztatów i nauki.
W większych projektach może jednak zabraknąć bardziej rozbudowanych mechanizmów pamięci i orkiestracji.
Najważniejsze elementy frameworka to Agents, czyli definiowanie wyspecjalizowanych agentów z własnymi instrukcjami i zachowaniem, oraz Tools – integracja z funkcjami Pythona, bazami danych, API i zewnętrznymi systemami. Handoffs pozwalają przekazywać zadania pomiędzy agentami bez konieczności budowania skomplikowanej logiki sterującej, a Guardrails kontrolują poprawność odpowiedzi oraz bezpieczeństwo działania agentów. Tracing automatycznie śledzi cały przebieg wykonania aplikacji, co znacząco ułatwia debugowanie i optymalizację, natomiast Sessions automatycznie zarządzają historią konwersacji pomiędzy uruchomieniami agenta. Framework oferuje też mechanizmy human in the loop, angażujące człowieka w przebieg działania agenta, a także obsługę sandboxa, realtime i voice agents – agentów pracujących w izolowanym środowisku, obsługujących połączenia głosowe w czasie rzeczywistym oraz pełne pipeline’y głosowe (speech-to-text, agent, text-to-speech).
Jedną z największych zalet OpenAI Agents SDK jest to, że pozwala rozpocząć od bardzo prostych aplikacji, a następnie stopniowo rozwijać je o kolejne możliwości. Dzięki temu nie trzeba od razu projektować złożonego systemu wieloagentowego.
Agno – ciekawy wybór dla agentów
Jeżeli budujesz klasyczne systemy agentowe, obecnie jednym z ciekawszych frameworków jest Agno.
1from agno.models.openai import OpenAIChat 2from agno.tools.duckduckgo import DuckDuckGoTools 3 4agent = Agent( 5 model=OpenAIChat(id="gpt-4o"), 6 tools=[DuckDuckGoTools()], 7 markdown=True, 8) 9 10agent.print_response("Tell me about a breaking news story from New York.")
Jego największe zalety to wbudowana pamięć i obsługa wielu agentów, a do tego ogromna liczba integracji – ponad 100 gotowych toolkitów, np. GitHub, Slack czy Postgres. Agno oferuje też gotowy AgentOS z produkcyjnym API (ponad 50 endpointów, SSE i WebSockets), bezpieczeństwo oparte na JWT/RBAC oraz izolację wielu użytkowników i tenantów, a także wbudowaną obserwowalność w postaci tracingu OpenTelemetry, historii uruchomień i logów audytowych. Do tego dochodzą mechanizmy human approval do zatwierdzania działań agenta przez człowieka, harmonogramowanie zadań (cron) oraz gotowe interfejsy do Slacka, Telegrama, WhatsAppa i Discorda. Framework wyróżnia się też prostym deploymentem do chmury i bardzo szybkim rozwojem projektu.
To framework nastawiony przede wszystkim na aplikacje agentowe. Sprawdza się tam, gdzie agent planuje, korzysta z narzędzi, wykonuje zadania i współpracuje z innymi agentami. To główna rekomendacja dla tego typu zastosowań.
Haystack – w systemach RAG
Jeżeli głównym celem projektu jest Retrieval-Augmented Generation, sytuacja wygląda inaczej.
Tutaj zdecydowanie wyróżnia się Haystack.
Framework oferuje hybrydowe wyszukiwanie, rankery, integrację z bazami dokumentów oraz pipeline’y osadzone w modularnej architekturze. Ma też hooki cyklu życia agenta (before_llm, before_tool, on_exit) do guardraili i własnej logiki, natywną obsługę przetwarzania asynchronicznego i strumieniowania token po tokenie, a także niezależność od dostawcy modelu – integracje z OpenAI, Anthropic, Mistral, Cohere, Hugging Face, Google, AWS Bedrock i modelami lokalnymi.
Haystack jest mniej nastawiony na konwersacyjnych agentów, a bardziej na profesjonalne systemy wyszukujące wiedzę. Dlatego świetnie sprawdza się w chatbotach firmowych, wyszukiwarkach dokumentów, systemach Knowledge Base i aplikacjach Enterprise AI.
1from haystack.components.retrievers.in_memory import InMemoryEmbeddingRetriever 2from haystack.components.generators.chat import OpenAIChatGenerator 3 4rag_pipeline = Pipeline() 5rag_pipeline.add_component( 6 "retriever", 7 InMemoryEmbeddingRetriever(document_store), 8) 9rag_pipeline.add_component("llm", OpenAIChatGenerator()) 10rag_pipeline.connect("retriever", "llm") 11 12result = rag_pipeline.run({"retriever": {"query": question}})
Pydantic AI – Python w najlepszym wydaniu
Pydantic AI bardzo szybko zdobywa popularność. Dlaczego?
Przede wszystkim dlatego, że nie próbuje ukrywać Pythona. Zamiast tworzyć własny język definiowania agentów, wykorzystuje typowanie, Pydantic, dependency injection i zwykłe funkcje Pythona. Do tego dochodzi Pydantic Graph, który pozwala budować wieloetapowe przepływy agentowe jako jawne, typowane grafy. Poszczególne węzły mogą odpowiadać za konkretne zadania, a przejścia między nimi wynikają bezpośrednio z typów zwracanych przez kod. Dzięki temu routing, stan i logika całego procesu pozostają czytelne, przewidywalne i łatwe do testowania.
Framework wspiera praktycznie każdego dostawcę modeli — OpenAI, Anthropic, Gemini, DeepSeek, Grok, Ollama i wielu innych. Oferuje również wbudowaną obserwowalność dzięki integracji z Pydantic Logfire i OpenTelemetry, obsługę Model Context Protocol (MCP), standardów strumieni zdarzeń UI oraz durable execution, czyli wznawianie pracy agentów po przejściowych awariach i restartach.
Dzięki temu kod jest czytelny i łatwy w utrzymaniu. Jeżeli na co dzień pracujesz z FastAPI, bardzo szybko odnajdziesz się również w Pydantic AI.
1 2agent = Agent("openai:gpt-4o") 3 4result_sync = agent.run_sync("What is the capital of Italy?") 5print(result_sync.output)
LangGraph – pełna kontrola nad przepływem agenta
Warto na wstępie przypomnieć, czym jest LangChain, skoro to właśnie ten zespół stoi za LangGraph. LangChain to jeden z pierwszych i najpopularniejszych frameworków do budowy aplikacji opartych na LLM – pozwala łączyć modele, narzędzia, źródła danych i pamięć w tzw. “chainy”, czyli łańcuchy kolejnych wywołań. LangGraph powstał jako rozwinięcie tego ekosystemu, odpowiadające na potrzebę bardziej elastycznego, grafowego sterowania przepływem agenta, niż pozwalała na to liniowa struktura chainów.
Jeżeli Twój projekt wymaga precyzyjnego sterowania przebiegiem pracy agenta – rozgałęzień, pętli, cofania się do wcześniejszych kroków czy złożonej współpracy wielu agentów – naturalnym wyborem staje się LangGraph.
W przeciwieństwie do wysokopoziomowych frameworków, LangGraph nie ukrywa logiki sterującej za gotowymi abstrakcjami. Aplikację modeluje się jako graf, w którym węzły reprezentują poszczególne kroki (np. wywołanie modelu, użycie narzędzia, podjęcie decyzji), a krawędzie określają, w jakiej kolejności i pod jakimi warunkami te kroki są wykonywane. Dzięki temu można budować przepływy znacznie bardziej złożone niż liniowa pętla agenta – z pętlami, rozgałęzieniami warunkowymi i wieloma agentami współdzielącymi wspólny stan. Framework oferuje wbudowany checkpointing i trwały stan, dzięki czemu agent może wznowić działanie dokładnie w miejscu, w którym zostało przerwane, mechanizmy human-in-the-loop pozwalające zatrzymać wykonanie i poczekać na decyzję człowieka, streaming zdarzeń i tokenów w czasie rzeczywistym, a także natywną integrację z LangSmith do śledzenia, debugowania i ewaluacji przebiegu grafu. Do produkcyjnego wdrażania służy LangGraph Platform, umożliwiający skalowalne uruchamianie długo działających, stanowych agentów.
1 2def should_continue(state: MessagesState): 3 last = state["messages"][-1] 4 return "tool_node" if last.tool_calls else END 5 6 7graph = StateGraph(MessagesState) 8graph.add_node("llm", call_model) 9graph.add_node("tool_node", tool_node) 10graph.add_edge(START, "llm") 11graph.add_conditional_edges("llm", should_continue) 12 13app = graph.compile()
Ta elastyczność ma swoją cenę. LangGraph ma wyższy próg wejścia niż OpenAI Agents SDK czy Pydantic AI i wymaga myślenia o aplikacji w kategoriach stanu i grafu, a nie prostego kodu proceduralnego. Dlatego sprawdza się przede wszystkim tam, gdzie standardowa pętla agenta przestaje wystarczać: w złożonych systemach wieloagentowych, workflow z wieloma punktami decyzyjnymi oraz aplikacjach wymagających pełnej kontroli i audytowalności każdego kroku.
Jak wybrać framework?
Można przyjąć prostą zasadę:
| Potrzeba | Rekomendacja |
|---|---|
| Prosty agent | Brak frameworka |
| Zaawansowani agenci | Agno / OpenAI Agents |
| System RAG | Haystack |
| Maksymalna kontrola i typowanie | Pydantic AI |
| Złożone grafy workflow | LangGraph |
Nie istnieje jeden framework idealny dla wszystkich projektów.
Najważniejsza zmiana, jaką obserwujemy w 2026 roku, polega na tym, że odchodzimy od filozofii “framework do wszystkiego”. Zamiast tego wybierają narzędzia dopasowane do konkretnego problemu — albo wręcz pozostają przy prostym kodzie Pythona i bezpośrednich wywołaniach API.
Jeżeli budujesz pierwszego agenta, zacznij od kilku funkcji i prostego loopa. Gdy pojawią się wymagania dotyczące pamięci, orkiestracji czy RAG, wtedy dopiero sięgnij po odpowiedni framework.
To podejście pozwala zachować prostotę, ograniczyć zależności i uniknąć przedwczesnego komplikowania architektury.
Podsumowanie
Ekosystem frameworków do budowy agentów AI rozwija się niezwykle dynamicznie, jednak paradoksalnie najlepszym wyborem na początku projektu często jest… brak frameworka. W wielu przypadkach prosty kod Pythona i bezpośrednie wywołania API zapewniają większą kontrolę, łatwiejsze debugowanie i mniejszą złożoność niż rozbudowane biblioteki.
Frameworki zaczynają przynosić realną wartość dopiero wtedy, gdy aplikacja wymaga zaawansowanych funkcji, takich jak pamięć, orkiestracja wielu agentów, rozbudowany RAG, tracing czy zarządzanie narzędziami. Wśród obecnych rozwiązań wyróżnia się Agno jako najlepszy wybór do systemów agentowych, Haystack do aplikacji RAG, Pydantic AI dla projektów stawiających na bezpieczeństwo typów i pełną kontrolę nad kodem oraz OpenAI Agents SDK jako lekkie rozwiązanie do prototypów i aplikacji.
Widać również zmieniające się trendy rynkowe. Coraz więcej zespołów odchodzi od rozbudowanych frameworków ogólnego przeznaczenia, takich jak LangChain, na rzecz prostszych architektur lub wyspecjalizowanych narzędzi. Głównymi powodami migracji są łatwiejsze utrzymanie kodu, większa przewidywalność działania oraz niższy koszt rozwoju i debugowania. Ostatecznie wybór frameworka powinien wynikać z rzeczywistych potrzeb projektu, a nie z jego popularności.




