Cum implementeaza efectiv agentii AI abilitatile: comparatie completa intre platforme

AI Agents LLM Context Management Agent Frameworks

Introducere

Fiecare framework de agenti AI se confrunta cu aceeasi intrebare fundamentala: cum faci un LLM bun la ceva specific? Modelul in sine are cunostinte generale vaste, dar cand ai nevoie ca acesta sa faca o revizuire de cod, sa implementeze infrastructura sau sa navigheze in Minecraft — are nevoie de instructiuni specializate, acces la instrumente si context de domeniu.

Aceasta este problema injectarii abilitatilor. Si fiecare framework major o rezolva diferit.

Unele platforme incarca totul in prompt-ul de sistem de la inceput. Altele folosesc incarcarea lenta, dezvaluind capacitatile doar cand agentul are nevoie de ele. Cateva folosesc baze de date vectoriale pentru a recupera abilitati relevante pe baza similaritatii semantice. Diferentele nu sunt academice — afecteaza direct costurile de token-uri, fiabilitatea agentului si cate abilitati poate gestiona realist un agent.

Am analizat 11 platforme majore de agenti AI pentru a intelege exact unde ajung abilitatile in prompt, cand se incarca, cat costa in token-uri si cum supravietuiesc cand fereastra de context se umple. Aceasta nu este o comparatie superficiala de functionalitati. Am analizat codul sursa, documentatia si diagramele de arhitectura pentru a cartografia mecanismele precise de injectare ale fiecarei platforme.

Tabelul comparativ principal

Iata prezentarea completa inainte de a intra in detalii.

Mecanismele de injectare: unde, cand si cum

PlatformaPunctul de injectareCand se incarcaMecanism
Claude CodeSystem-reminder (metadate) + mesaj de conversatie (corp)Metadate la inceputul sesiunii; corp la /command sau potrivire automataFramework-ul injecteaza metadate; instrumentul Skill incarca corpul complet la activare
CrewAIPrompt-ul sarcinii (adaugat inainte de apelul LLM)La fiecare executie de sarcina prin _finalize_task_prompt()format_skill_context() adauga toate corpurile abilitatilor la prompt
LangChain Deep AgentsPrompt de sistem (metadate) + istoric conversatie (corp)Metadate la pornire; corp cand agentul apeleaza read_file()SkillsMiddleware injecteaza indexul; agentul incarca corpul prin instrumentul de fisiere
OpenAI Responses APIContext prompt utilizator (gestionat de platforma)La skill_reference in apelul APIPlatforma adauga metadate; modelul citeste SKILL.md complet la invocare
OpenAI Agents SDKDefinitii de instrumente (amanate prin ToolSearchTool)Nume de namespace la creare; scheme la apelul ToolSearchTooltool_namespace() + ToolSearchTool() pentru descoperire progresiva
AutoGen TeachabilityMesaj utilizator modificat (memo-uri recuperate injectate)La fiecare tura — recuperare din baza vectoriala inainte de fiecare apel LLMMiddleware-ul intercepteaza mesajul, interogheaza ChromaDB, injecteaza top-K potriviri
Semantic KernelScheme de apelare functii + continut sablon promptToate schemele la pornire; continut sablon la invocarea functieikernel.add_plugin() inregistreaza totul; kernel.invoke() randeaza sabloanele
MetaGPTSablon prompt actiune (randat in apelul LLM)Cand _act() al Rolului se declanseaza pentru o Actiune specificaAction.run() formateaza PROMPT_TEMPLATE, trimite prin aask()
VoyagerPrompt de generare cod (cod de abilitati recuperat)Inainte de fiecare generare de cod; cautare prin similaritate de embeddingsSkillLibrary.retrieve_skills() injecteaza top-5 ca exemple few-shot
DSPyDemo-uri few-shot compilate in prompt-urile modulului PredictCompilate offline de optimizator; fixe la rulareBootstrapFewShot / MIPROv2 selecteaza cele mai bune demo-uri; Predict le randeaza in prompt
SuperAGIScheme de instrumente in lista de instrumente a agentuluiCrearea agentului — toate instrumentele din toolkit inregistrate din startBaseToolkit.get_tools() inregistreaza totul ca instrumente de apelare functii
CAMEL-AIScheme de functii + mesaj de sistem al roluluiCrearea agentului — toate instrumentele inregistrate din startChatAgent(tools=[*toolkit.get_tools()]) incarca totul la initializare

Persistenta, costul in token-uri si comportamentul permanent

PlatformaPrezent mereu?PersistentaCostul in token-uri
Claude CodeMetadate: DA. Corp: doar dupa activareLa nivel de sesiune. La compactare: reatasat (5K/abilitate, limita 25K)~250 caractere/metadate abilitate; 1% din bugetul de context
CrewAIDA — corp complet in fiecare prompt de sarcinaInjectare proaspata per sarcina; fara persistenta intre sarciniCorp complet la fiecare apel. Limita soft de 50K caractere
LangChain Deep AgentsMetadate: DA. Corp: la cerereCorpul ramane in istoricul conversatiei; abilitatile subagentilor izolate~100 token-uri/metadate abilitate; corp platit o singura data (~3.302 token-uri)
OpenAI Responses APINume+descriere: DA. Corp complet: la invocareDoar un singur raspuns API; fara persistenta intre apeluriGestionat de platforma
OpenAI Agents SDKLista de namespace-uri: DA. Scheme: la cerereDoar o singura rulare; redescoperire per sesiuneMinimal pana la activare
AutoGen TeachabilityNU — doar memo-uri relevante per turaIntre sesiuni prin ChromaDB; persista nedefinit~3-5 memo-uri per tura (variabil)
Semantic KernelToate schemele: DA. Sabloane: la invocareIn memorie per instanta kernel; fara persistenta intre sesiuniToate schemele prezente mereu
MetaGPTNU — doar sablonul Actiunii curenteDoar executia unei singure actiuniUn sablon per tura
VoyagerNU — top-5 recuperate per sarcinaPersistenta pe durata de viata in baza vectoriala~500-2.000 token-uri per exemplu de abilitate
DSPyDA — demo-uri compilate integrateSerializabil in JSON; persista intre sesiuniFix dupa compilare (3-8 demo-uri/modul)
SuperAGIDA — toate schemele prezente mereuIn cadrul sesiunii agentuluiToate schemele prezente mereu
CAMEL-AIDA — toate schemele + prompt de rolIn cadrul sesiunii de conversatieToate schemele prezente mereu
Logo

Pregătit să îți dezvolți afacerea?

Începe perioada de probă gratuită astăzi și vezi rezultate în câteva zile.

Ce inseamna de fapt „injectarea abilitatilor"

Inainte de a intra in comparatie, sa definim spatiul problemei. Fereastra de context a unui agent AI — textul total pe care LLM-ul il vede la fiecare apel — are o dimensiune fixa. Fiecare token de instructiune, istoric de conversatie, definitie de instrument si date recuperate concureaza pentru spatiu in acea fereastra.

O „abilitate" in contextul agentului este orice pachet structurat de expertiza care schimba modul in care agentul se comporta. Aceasta poate fi:

  • Instructiuni care ii spun agentului cum sa abordeze un domeniu specific (ghiduri de revizuire cod, liste de verificare pentru implementare)
  • Definitii de instrumente care ofera agentului functii apelabile (integrari API, operatiuni cu fisiere)
  • Exemple few-shot care ii arata agentului cum arata o iesire buna
  • Cunostinte recuperate din baze de date vectoriale sau documente externe

Mecanismul de injectare — unde si cand intra acest continut in context — determina trei proprietati critice:

  1. Eficienta token-urilor: Cate token-uri consuma abilitatea si este acest cost platit chiar si cand abilitatea nu este necesara?
  2. Fiabilitate: Va folosi agentul in mod constant abilitatea cand este relevanta, sau ar putea rata indiciul?
  3. Scalabilitate: Cate abilitati poate accesa agentul inainte ca supraincarcarea contextului sa degradeze performanta?

Fiecare framework face compromisuri diferite pe aceste trei dimensiuni. Sa le examinam pe fiecare.

Spectrul injectarii: de la permanent activ la la cerere

Pe toate cele 11 platforme, abordarile de injectare a abilitatilor se situeaza de-a lungul unui spectru de la „totul incarcat din start" la „nimic incarcat pana nu este cerut explicit".

La un capat, platforme precum CrewAI, SuperAGI si CAMEL-AI injecteaza continutul complet al fiecarei abilitati activate in fiecare apel LLM. Agentul are intotdeauna expertiza completa disponibila. Simplu, fiabil, dar costisitor in token-uri.

La celalalt capat, Claude Code, LangChain Deep Agents si OpenAI Responses API folosesc dezvaluirea progresiva — agentul vede doar numele si scurte descrieri ale abilitatilor la pornire, iar continutul complet se incarca la cerere. Eficient, scalabil, dar necesita ca agentul sa recunoasca cand are nevoie de o abilitate.

La mijloc, AutoGen Teachability si Voyager folosesc recuperarea semantica pentru a injecta doar cele mai relevante abilitati per tura, creand un model de injectare dinamic, sensibil la context.

Si apoi sunt abordari unice: DSPy compileaza exemple few-shot optimizate offline si le integreaza permanent in prompt-urile modulelor. MetaGPT codifica abilitatile ca sabloane de actiune care se activeaza doar cand un rol specific trece la o actiune specifica.

Sa examinam fiecare in detaliu.

Claude Code: dezvaluire progresiva pe trei niveluri

Claude Code three-layer progressive disclosure: always-on metadata, on-activation skill body, on-demand resources

Claude Code implementeaza una dintre cele mai sofisticate arhitecturi de injectare a abilitatilor, folosind un sistem de dezvaluire progresiva pe trei niveluri care echilibreaza constientizarea cu eficienta token-urilor.

Nivelul 1: mereu in context

La inceputul sesiunii, numele si descrierea fiecarei abilitati disponibile sunt injectate intr-un mesaj system-reminder — un bloc de metadate pe care modelul il vede intotdeauna. Aceasta costa aproximativ 250 de caractere per abilitate, consumand circa 1% din bugetul ferestrei de context pentru toate descrierile de abilitati combinate (aproximativ 8K caractere ca buget de rezerva, configurabil prin variabila de mediu SLASH_COMMAND_TOOL_CHAR_BUDGET).

In mod similar, instrumentele amanate — instrumente ale caror scheme JSON complete nu au fost inca incarcate — apar ca o lista doar de nume in blocurile system-reminder. Incepand cu Claude Code v2.1.69, chiar si instrumentele de sistem integrate precum Bash, Read, Edit, Write, Glob si Grep sunt amanate prin ToolSearch, reducand contextul instrumentelor de sistem de la aproximativ 14-16K token-uri la circa 968 token-uri.

Agentul vede suficient pentru a sti ce este disponibil fara a plati costul in token-uri al definitiilor complete.

Nivelul 2: la activare

Cand un utilizator tasteaza o comanda slash (de ex., /commit) sau modelul potriveste automat o abilitate pe baza descrierii sale, corpul complet SKILL.md este incarcat ca mesaj de conversatie prin instrumentul Skill. Acest corp contine instructiunile complete — uneori mii de token-uri de ghidare detaliata.

Detaliu important: preprocesarea shell ruleaza prima (orice directive !command din fisierul de abilitati se executa si iesirea lor inlocuieste directiva), iar odata incarcat, corpul abilitatii ramane in conversatie pentru restul sesiunii.

Nivelul 3: la cerere

Resursele suplimentare — documente de referinta, scripturi, fisiere de resurse — sunt citite doar cand modelul decide explicit sa foloseasca instrumentul Read pentru a le accesa. Acestea nu se incarca niciodata automat.

Comportamentul la compactarea contextului

Cand conversatia se apropie de limita de context si se declanseaza compactarea, Claude Code reataseaza cele mai recent invocate abilitati cu un buget de 5K token-uri per abilitate si un maxim combinat de 25K. Abilitatile invocate cel mai recent au prioritate. Abilitatile mai vechi pot fi eliminate complet.

Aceasta arhitectura pe trei niveluri inseamna ca un agent cu 20+ abilitati disponibile plateste un cost initial minim, dar poate accesa expertiza completa pe oricare dintre ele intr-o singura tura.

CrewAI: injectare completa in fiecare prompt de sarcina

CrewAI skill injection: full body appended to every task prompt via format_skill_context()

CrewAI adopta abordarea opusa dezvaluirii progresive. Cand o abilitate este activata pentru un agent, continutul sau complet este injectat in fiecare prompt de sarcina pe care agentul il executa.

Cum functioneaza

Abilitatile in CrewAI sunt directoare autonome, fiecare cu un fisier SKILL.md continand frontmatter YAML (nume, descriere, licenta, compatibilitate, instrumente permise) si un corp markdown. Sistemul de abilitati face distinctia intre abilitati si instrumente: abilitatile injecteaza instructiuni si context care modeleaza modul in care agentul gandeste, in timp ce instrumentele ofera functii apelabile pentru actiuni.

In timpul initializarii agentului, Agent.set_skills() apeleaza discover_skills() pentru a scana directoarele de abilitati la nivel de metadate, apoi activate_skill() pentru a citi corpurile complete ale abilitatilor. La momentul executiei sarcinii, _finalize_task_prompt() apeleaza format_skill_context() pentru fiecare abilitate activata si adauga tot continutul formatat al abilitatilor la prompt-ul sarcinii.

LLM-ul primeste: [mesaj de sistem] + [prompt sarcina + TOATE corpurile abilitatilor]

Implicatii privind token-urile

CrewAI impune o avertizare soft la 50.000 de caractere per abilitate, dar nicio limita stricta. Documentatia recomanda pastrarea abilitatilor concentrate si concise, deoarece injectarile mari in prompt dilueaza atentia modelului — o preocupare reala avand in vedere cercetarile privind degradarea contextului.

Compromisul este direct: agentul are intotdeauna expertiza completa disponibila (fiabilitate ridicata), dar costul in token-uri creste liniar cu numarul de abilitati per sarcina (eficienta scazuta). Pentru agenti cu 1-2 abilitati concentrate, aceasta functioneaza bine. Pentru agenti care au nevoie de seturi largi de capabilitati, devine costisitor rapid.

Fara persistenta intre sarcini

Fiecare sarcina primeste o injectare proaspata. Nu exista acumulare de continut de abilitati intre sarcini — ceea ce este de fapt o caracteristica, nu un defect. Inseamna ca fiecare sarcina incepe cu un context curat, evitand problemele de invechire pe care persistenta bazata pe sesiune le poate crea.

LangChain Deep Agents: incarcare controlata de agent prin SkillsMiddleware

LangChain Deep Agents three-tier skill loading: index via SkillsMiddleware, full content via read_file, deep dive on demand

LangChain Deep Agents implementeaza un sistem sofisticat de abilitati bazat pe middleware, in care agentul insusi decide cand sa incarce continutul complet al abilitatilor — un adevarat model de dezvaluire progresiva in care agentul controleaza activarea.

Cele trei niveluri

Nivelul 1 (Index): SkillsMiddleware parseaza tot frontmatter-ul SKILL.md la pornire si injecteaza un index usor in prompt-ul de sistem. Acest index contine doar nume si descrieri, costind aproximativ 278 token-uri per abilitate fata de 3.302 token-uri pentru continutul complet.

Nivelul 2 (Continut complet): Cand agentul determina ca o abilitate este relevanta, apeleaza read_file() pe calea SKILL.md a abilitatii. Acesta este un apel normal de instrument — framework-ul nu injecteaza corpul; agentul ia o decizie deliberata de a-l incarca. Continutul complet intra in istoricul conversatiei ca rezultat al instrumentului.

Nivelul 3 (Aprofundare): Materialele de suport, documentele de referinta si scripturile sunt accesate doar cand agentul le citeste explicit.

Eficienta token-urilor in practica

Cu 12 abilitati, dezvaluirea progresiva reduce contextul de la aproximativ 30.000 token-uri (toate incarcate) la circa 600 token-uri (doar indexul), extinzandu-se la 2.000-5.000 cand abilitatile relevante sunt incarcate pentru o sarcina specifica. Aceasta inseamna o reducere potentiala de 83-98% a consumului de token-uri legate de abilitati.

Mai multe surse de abilitati pot fi stratificate, iar cand numele se suprapun, ultima sursa castiga. Fisierele de peste 10 MB sunt sarite automat.

Diferenta cheie fata de Claude Code

In timp ce Claude Code foloseste un instrument Skill dedicat pentru a declansa incarcarea, Deep Agents reutilizeaza instrumentul read_file existent al agentului. Aceasta inseamna ca mecanismul de incarcare este transparent — agentul citeste fisierele de abilitati in acelasi mod in care citeste orice alt fisier. Dezavantajul este ca nu exista un comportament special de compactare: continutul abilitatilor care intra in istoricul conversatiei este supus trimierii standard a mesajelor LangChain, fara tratament prioritar.

OpenAI Responses API si Agents SDK: incarcare amanata gestionata de platforma

OpenAI deferred tool loading: three deferral strategies with platform-managed tool_search

OpenAI implementeaza injectarea abilitatilor prin doua mecanisme distincte dar aliniate filozofic: tipul de instrument tool_search al Responses API si ToolSearchTool al Agents SDK.

Tipul de instrument tool_search (disponibil pe GPT-5.4+) permite dezvoltatorilor sa amane suprafetele mari de instrumente pana la rulare. Sunt disponibile trei strategii de amanare:

  • Amanare individuala de functie: @function_tool(defer_loading=True) — modelul vede numele si descrierea functiei, dar schema parametrilor este amanata. Economiseste token-uri la nivel de parametri.
  • Amanare de namespace: tool_namespace(name=..., description=..., tools=[...]) — grupeaza functiile sub un singur namespace. Modelul vede doar numele si descrierea namespace-ului, economisind semnificativ mai multe token-uri.
  • Amanare server MCP: HostedMCPTool(tool_config={..., "defer_loading": True}) — amana intreaga suprafata de instrumente a serverului MCP.

Cand modelul determina ca are nevoie de un instrument specific, emite un apel tool_search. API-ul returneaza 3-5 definitii relevante de instrumente, injectate la sfarsitul ferestrei de context pentru a pastra cache-ul prompt-ului.

Agents SDK: ToolSearchTool

Agents SDK ofera un echivalent programatic. Namespace-urile de instrumente sunt inregistrate dar nu incarcate:

crm_tools = tool_namespace(
    name="crm",
    description="CRM management tools",
    tools=[...]
)
agent = Agent(tools=[*crm_tools, ToolSearchTool()])

La rulare, agentul vede doar numele namespace-urilor. Apeleaza ToolSearchTool("crm") pentru a descoperi si incarca schemele complete, apoi poate apela instrumente individuale din acel namespace.

Fara persistenta intre cereri

Fiecare cerere API este independenta. Instrumentele descoperite nu persista intre apeluri. Aceasta este cea mai fara stare abordare din comparatia noastra — curata, previzibila, dar necesitand redescoperire la fiecare cerere daca instrumentele se schimba.

AutoGen Teachability: recuperare semantica per tura

AutoGen Teachability per-turn retrieval loop: message intercept, ChromaDB query, memo injection, learning loop

Capacitatea Teachability a AutoGen adopta o abordare fundamental diferita de orice alt framework din aceasta comparatie. In loc sa injecteze continut static de abilitati, recupereaza dinamic „memo-uri" relevante dintr-o baza de date vectoriala ChromaDB la fiecare tura.

Bucla de recuperare per tura

Teachability inregistreaza un hook pe process_last_received_message care intercepteaza fiecare mesaj primit de la utilizator inainte ca agentul sa-l proceseze:

  1. Un TextAnalyzerAgent extrage conceptele cheie din mesajul primit
  2. Aceste concepte sunt folosite pentru a interoga ChromaDB (folosind embeddings Sentence Transformer in mod implicit)
  3. Cele mai relevante K memo-uri sunt recuperate (configurabil prin max_num_retrievals, implicit 10)
  4. Memo-urile recuperate sunt adaugate la textul mesajului inainte ca agentul sa-l vada

Important de retinut: mesajul modificat nu se propaga in istoricul conversatiei stocat — doar mesajul original este stocat. Aceasta previne acumularea continutului memo-urilor de-a lungul turelor.

Bucla de invatare

Dupa ce LLM-ul raspunde, un al doilea hook analizeaza raspunsul pentru noi cunostinte:

  1. TextAnalyzerAgent identifica noi cunostinte in raspuns
  2. Noi memo-uri sunt extrase ca perechi cheie-valoare (text de intrare -> text de iesire)
  3. Aceste memo-uri sunt stocate in ChromaDB, disponibile pentru turele si sesiunile viitoare

Aceasta creeaza o bucla autentica de invatare in care agentul acumuleaza expertiza in timp.

Persistenta intre sesiuni

AutoGen Teachability este una dintre cele doar trei platforme din comparatia noastra (alaturi de Voyager si DSPy) care pastreaza abilitatile intre sesiuni. Baza de date ChromaDB se afla pe disc, ceea ce inseamna ca un agent poate invata din interactiunile de luni si aplica acea cunostinta vineri.

Parametrul recall_threshold (implicit 1.5) controleaza cat de similar trebuie sa fie un mesaj cu un memo stocat pentru recuperare, iar reset_db poate sterge intreaga memorie cand este necesar.

Eficienta token-urilor

Deoarece doar memo-urile relevante sunt injectate per tura (de obicei 3-5), costul in token-uri este limitat natural indiferent de cat de mare creste baza de date de memo-uri. Un agent cu 10.000 de memo-uri stocate plateste totusi doar pentru cele cateva cele mai relevante pentru tura curenta.

Semantic Kernel: scheme de plugin-uri ca definitii de instrumente permanent prezente

Semantic Kernel two injection paths: function calling with all schemas always present and prompt template rendering

Semantic Kernel de la Microsoft adopta o abordare directa: plugin-urile sunt colectii de obiecte KernelFunction inregistrate cu Kernel-ul, iar schemele lor sunt expuse LLM-ului ca definitii de instrumente de tip apelare functii.

Doua cai de injectare

Apelarea functiilor: Cand ToolCallBehavior.AutoInvokeKernelFunctions este setat, toate functiile inregistrate sunt trimise LLM-ului ca instrumente disponibile in fiecare cerere API. LLM-ul decide pe care sa le apeleze; Semantic Kernel gestioneaza invocarea si rutarea rezultatelor.

Sabloane de prompt: Sintaxa de sabloane a Semantic Kernel ({{plugin.function}}, Handlebars sau Liquid) permite apelarea functiilor inline in timpul randarii prompt-ului. Rezultatele sunt incorporate direct in textul prompt-ului inainte de a ajunge la LLM — o forma de evaluare eagera in loc de apelare lenta a instrumentelor.

Fara dezvaluire progresiva

Schema fiecarui plugin inregistrat este inclusa in fiecare apel API. Nu exista incarcare amanata integrata, grupare de namespace-uri sau activare la cerere. Documentatia recomanda explicit importarea doar a plugin-urilor necesare pentru un scenariu specific pentru a reduce consumul de token-uri si apelurile eronate.

Aceasta face Semantic Kernel una dintre cele mai previzibile platforme — stii intotdeauna exact la ce are acces agentul — dar limiteaza scalabilitatea. Un agent cu 50 de functii inregistrate plateste costul complet al schemei la fiecare apel.

Persistenta

Inregistrarea plugin-urilor este per instanta Kernel si in memorie. Nu exista un mecanism integrat pentru persistenta abilitatilor intre sesiuni.

MetaGPT: sabloane de actiune in cadrul SOP-urilor bazate pe roluri

MetaGPT role-based SOP: Role with persona, react mode selection, active Action template, aask() LLM call

MetaGPT codifica abilitatile nu ca pachete autonome, ci ca sabloane de actiune incorporate in Proceduri Standard de Operare (SOP-uri) care guverneaza comportamentul rolurilor.

Arhitectura Rol si Actiune

Fiecare Role in MetaGPT are un prefix de persona injectat in prompt-uri si un set de clase Action. Fiecare Action contine un proxy LLM invocat prin aask(), care foloseste sabloane de prompt in limbaj natural pentru a structura apelul LLM.

Cand Role._act() se declanseaza, suporta trei moduri de reactie:

  • "react": LLM-ul selecteaza dinamic actiuni in bucle gandeste-actioneaza
  • "by_order": Actiunile se executa secvential intr-o ordine predeterminata
  • "plan_and_act": Agentul planifica mai intai, apoi executa actiunile conform planului

Fereastra ingusta de injectare

Doar sablonul Actiunii curente este activ in orice moment. Agentul nu vede sabloane pentru alte actiuni — vede doar prefixul de rol plus contextul actiunii specifice. Aceasta este cea mai ingusta fereastra de injectare dintre toate framework-urile pe care le-am examinat.

Functiile de parsare a contextului din clasele Action extrag informatii relevante din intrari, astfel incat fiecare actiune primeste un subset curatat din contextul disponibil in loc de intregul istoric al conversatiei.

Persistenta pe o singura tura

Sablonul este randat proaspat pentru fiecare executie de actiune. Nu exista acumulare sau persistenta intre sesiuni. Aceasta pastreaza fiecare actiune concentrata, dar inseamna ca agentul nu poate construi pe continut de abilitati incarcat anterior in cadrul unui singur flux de lucru.

Voyager: recuperare de abilitati bazata pe embeddings pentru invatare pe termen lung

Voyager skill library: curriculum proposes task, embedding search retrieves top-5 skills, code generation with lifelong learning loop

Voyager, agentul de explorare Minecraft de la NVIDIA si Caltech, implementeaza una dintre cele mai elegante arhitecturi de injectare a abilitatilor: o biblioteca crescatoare de programe verificate recuperate prin similaritate de embeddings.

Biblioteca de abilitati

Cand Voyager scrie cod care trece auto-verificarea (JavaScript-ul Mineflayer generat chiar functioneaza in joc), codul si string-ul sau de documentare sunt stocate intr-o baza de date vectoriala. Embedding-ul docstring-ului devine cheia de recuperare.

Recuperare per sarcina

La fiecare sarcina noua propusa de curriculum-ul automat:

  1. Descrierea sarcinii si feedback-ul mediului sunt transformate in embeddings
  2. Cautare prin similaritate cosinus impotriva tuturor embeddings-urilor de abilitati stocate
  3. Cele mai relevante 5 abilitati sunt recuperate
  4. Codul abilitatilor recuperate este inclus in prompt-ul agentului de actiune ca exemple few-shot

Prompt-ul arata astfel:

You are a Minecraft bot. Here are some relevant skills you've learned:

// Skill: mineWoodLog
async function mineWoodLog(bot) { ... }

// Skill: craftPlanks
async function craftPlanks(bot) { ... }

Now write code to: build a wooden pickaxe

Codul generat poate apela abilitatile recuperate dupa nume, permitand construirea compozitionala a abilitatilor — comportamente complexe construite din primitive mai simple si verificate.

Persistenta pe termen lung

Biblioteca de abilitati este mecanismul central de „invatare pe termen lung". Creste pe intreaga durata de viata a agentului, iar abilitatile noi se construiesc pe cele vechi. Spre deosebire de majoritatea framework-urilor unde abilitatile sunt create de oameni, abilitatile Voyager sunt generate, verificate si stocate de agentul insusi.

Costul in token-uri este limitat natural: indiferent daca biblioteca contine 50 sau 5.000 de abilitati, fiecare sarcina plateste doar pentru cele 5 recuperari cele mai relevante.

DSPy: exemple few-shot compilate ca abilitati inghetate

DSPy compilation: BootstrapFewShot and MIPROv2 optimizers compile frozen few-shot demos into Predict module prompts

DSPy adopta o abordare radical diferita de orice alt framework. In loc sa injecteze abilitati la rulare, DSPy compileaza demonstratii few-shot optime offline si le integreaza permanent in prompt-urile modulelor.

Procesul de compilare

Doua optimizatoare principale gestioneaza compilarea:

BootstrapFewShot: Foloseste un modul profesor pentru a genera trasee prin program. Traseele care trec o metrica definita de utilizator sunt pastrate ca demonstratii. Fiecare modul dspy.Predict din program primeste propriul set curatat de demonstratii.

MIPROv2 (Multi-prompt Instruction Proposal Optimizer v2): Un proces in trei faze:

  1. Bootstrap: Genereaza seturi candidate de demonstratii
  2. Propunere: Genereaza texte candidate de instructiuni care sunt constiente atat de distributia datelor, cat si de demonstratii
  3. Cautare: Optimizare bayesiana peste spatiul combinat de instructiuni x demonstratii pe toate modulele

Parametri precum max_bootstrapped_demos (exemple generate) si max_labeled_demos (din datele de antrenament) controleaza cate exemple ajung in prompt-ul fiecarui modul.

Fix dupa compilare

Odata compilate, demonstratiile sunt stocate in atributul demos al fiecarui modul Predict si formatate in prompt la fiecare apel LLM. Nu se schimba la rulare — „abilitatea" este inghetata.

Aceasta inseamna ca abilitatile DSPy sunt cele mai previzibile din comparatia noastra: costul in token-uri este cunoscut dupa compilare, nu exista varianta intre tururi, iar agentul vede intotdeauna aceleasi demonstratii. Dezavantajul este inflexibilitatea — pentru a schimba abilitatile, trebuie sa recompilezi.

Persistenta

Programele compilate se serializeaza in JSON, inclusiv toate demonstratiile. Sunt complet persistente si incarcabile intre sesiuni, facand DSPy unul dintre cele mai durabile mecanisme de stocare a abilitatilor.

SuperAGI: inregistrare upfront bazata pe toolkit

SuperAGI and CAMEL-AI upfront toolkit registration: all tool schemas loaded at agent initialization

SuperAGI foloseste un model traditional de toolkit in care toate instrumentele sunt inregistrate la initializarea agentului.

Fiecare toolkit extinde BaseToolkit cu:

  • atributele name si description
  • metoda get_tools() care returneaza o lista de instante BaseTool
  • get_env_keys() pentru variabilele de mediu necesare

Toolkit-urile sunt instalate din depozite GitHub prin managerul de instrumente SuperAGI. La initializarea agentului, BaseToolkit.get_tools() returneaza toate instrumentele, iar schemele lor complete sunt expuse LLM-ului ca definitii de apelare functii.

Nu exista incarcare amanata, dezvaluire progresiva sau filtrare per tura. Schema fiecarui instrument inregistrat este prezenta in fiecare apel. Acesta este cel mai simplu model de injectare si functioneaza bine pentru agenti cu seturi de instrumente concentrate si mici, dar nu scaleaza pentru agenti care au nevoie de zeci de capabilitati.

CAMEL-AI: inregistrarea instrumentelor in ChatAgent

CAMEL-AI urmeaza un model similar de inregistrare upfront. Instrumentele din diverse toolkit-uri (de ex., MathToolkit, SearchToolkit) sunt transmise ca lista la ChatAgent(tools=[...]) la initializare.

Framework-ul subliniaza ca functiile personalizate au nevoie de nume clare ale argumentelor si docstring-uri cuprinzatoare pentru ca modelul sa inteleaga utilizarea — schema instrumentului este singurul continut de „abilitate" pe care modelul il vede. Nu exista un mecanism separat de injectare a instructiunilor.

Adaugirile recente includ suport MCP (Model Context Protocol) prin MCPToolkit, permitand ChatAgent sa se conecteze la servere MCP si sa inregistreze instrumente externe. Aceasta extinde suprafata de instrumente disponibila, dar nu schimba modelul de injectare — toate instrumentele MCP descoperite sunt totusi inregistrate din start.

Comparatie intre platforme

Cand sunt injectate abilitatile

MomentPlatformeCe se injecteaza
Mereu prezent (inceputul sesiunii)Claude Code, CrewAI, Deep Agents, Semantic Kernel, SuperAGI, CAMEL-AI, DSPyMetadate (nume + descriere) sau scheme complete
La activare (declansata de utilizator sau agent)Claude Code, Deep Agents, OpenAICorp complet al abilitatii
La fiecare sarcina/turaCrewAI, AutoGen TeachabilityCorp complet (CrewAI) sau memo-uri recuperate (AutoGen)
La selectia LLMSemantic Kernel, MetaGPTContinut sablon de prompt
La potrivire de similaritateVoyager, AutoGen TeachabilityCod sau memo-uri recuperate
Compilat/fixDSPyExemple few-shot optimizate

Modele de persistenta

PersistentaPlatformeMecanism
Doar o singura turaMetaGPT, VoyagerSablon randat per actiune / per generare
In cadrul sesiuniiClaude Code, Deep Agents, OpenAI, Semantic KernelCorpul ramane in istoricul mesajelor
Reinjectat la fiecare sarcinaCrewAI, SuperAGI, CAMEL-AIAdaugat proaspat la fiecare executie de sarcina
Intre sesiuni (stocare persistenta)AutoGen Teachability, Voyager, DSPyBaza vectoriala / module compilate / biblioteca de abilitati

Supravietuirea la compactarea contextului

PlatformaCe se intampla cand contextul se umple
Claude CodeReataseaza cele mai recente abilitati (5K token-uri fiecare, limita 25K). Abilitatile mai vechi sunt eliminate
CrewAIN/A — injectat proaspat per sarcina, fara acumulare
Deep AgentsCorpul in istoricul conversatiei, supus trimierii standard LangChain
OpenAIN/A — fiecare apel API este independent
AutoGenDoar memo-uri relevante recuperate per tura, limitat natural
VoyagerDoar top-K abilitati recuperate per sarcina, limitat natural

Modelul de dezvaluire progresiva

Cea mai semnificativa tendinta arhitecturala pe aceste platforme este adoptarea dezvaluirii progresive — un concept imprumutat din designul UI unde informatia este dezvaluita incremental pe baza necesitatii.

De ce conteaza dezvaluirea progresiva

O abordare naiva a injectarii abilitatilor — incarcarea a totul din start — creeaza doua probleme:

  1. Risipa de token-uri: Majoritatea abilitatilor nu sunt relevante pentru majoritatea tururilor. Incarcarea a 20 de corpuri complete de abilitati cand doar 1-2 sunt necesare per tura iroseste peste 90% din token-urile legate de abilitati.
  2. Diluarea atentiei: Cercetarile privind degradarea contextului arata ca LLM-urile performeaza mai slab cand contextul lor contine cantitati mari de informatii irelevante. Mai multe abilitati in context pot reduce efectiv calitatea aplicarii abilitatilor.

Dezvaluirea progresiva rezolva ambele probleme mentinand un index usor al abilitatilor disponibile si incarcand continutul complet doar cand este necesar.

Variatiuni de implementare

Claude Code foloseste un sistem dedicat: metadate de abilitati in mesajele system-reminder, un instrument Skill pentru activare si ToolSearch pentru schemele de instrumente amanate. Framework-ul gestioneaza injectarea automat cu compactare bazata pe prioritati.

LangChain Deep Agents foloseste capacitatea existenta de citire a fisierelor a agentului: SkillsMiddleware injecteaza indexul, iar agentul incarca continutul complet prin read_file(). Aceasta este mai transparenta dar ofera mai putina optimizare la nivel de framework.

OpenAI Responses API foloseste gruparea bazata pe namespace-uri cu cautare gestionata de platforma: namespace-urile de instrumente ofera descrieri de nivel inalt, iar tool_search returneaza schemele relevante. Platforma gestioneaza logica de cautare in intregime.

Economii de token-uri in practica

Cifrele sunt convingatoare. Cu 12 abilitati:

  • Injectare permanent activa (stil CrewAI/SuperAGI): ~30.000 token-uri
  • Doar indexul de dezvaluire progresiva: ~600 token-uri
  • Index + 2 abilitati activate: ~2.000-5.000 token-uri

Aceasta inseamna o reducere de 83-98% a consumului de token-uri legate de abilitati per tura. Pe o sesiune lunga cu sute de tururi, economiile se compun dramatic.

Modele arhitecturale si compromisuri

Privind peste toate cele 11 platforme, se contureaza patru modele arhitecturale distincte:

Modelul 1: injectare permanent activa

Folosit de: CrewAI, SuperAGI, CAMEL-AI, Semantic Kernel

Cum functioneaza: Continutul complet al abilitatilor sau schemele de instrumente sunt prezente in fiecare apel LLM.

Avantaje:

  • Fiabilitate maxima — agentul are intotdeauna expertiza completa disponibila
  • Cea mai simpla implementare — nu e nevoie de logica de activare
  • Costuri previzibile in token-uri — aceleasi la fiecare tura

Dezavantaje:

  • Costul in token-uri creste liniar cu numarul de abilitati
  • Diluarea atentiei cu multe abilitati
  • Nu scaleaza peste ~5-10 abilitati per agent

Ideal pentru: Agenti concentrati cu 1-3 abilitati de baza care sunt mereu relevante.

Modelul 2: dezvaluire progresiva

Folosit de: Claude Code, LangChain Deep Agents, OpenAI Responses API/Agents SDK

Cum functioneaza: Metadate usoare mereu prezente; continut complet incarcat la cerere.

Avantaje:

  • Scaleaza la zeci sau sute de abilitati disponibile
  • Cost minim in token-uri cand abilitatile nu sunt necesare
  • Pastreaza cache-ul prompt-ului cand schemele complete se adauga la sfarsit

Dezavantaje:

  • Agentul ar putea rata indiciul de a activa o abilitate relevanta
  • Latenta suplimentara din pasul de activare
  • Implementare mai complexa a framework-ului

Ideal pentru: Agenti de uz general care au nevoie de acces la multe capabilitati dar folosesc doar cateva per sarcina.

Modelul 3: recuperare semantica

Folosit de: AutoGen Teachability, Voyager

Cum functioneaza: Interogari ale bazei de date vectoriale evidentiaza abilitatile/cunostintele relevante bazate pe similaritate semantica cu contextul curent.

Avantaje:

  • Cost in token-uri limitat natural indiferent de dimensiunea bibliotecii
  • Relevanta continutului se imbunatateste in timp pe masura ce biblioteca creste
  • Invatare si acumulare intre sesiuni
  • Nu e nevoie de activare explicita — relevanta este calculata automat

Dezavantaje:

  • Calitatea recuperarii depinde de calitatea modelului de embeddings
  • Risc de recuperare a informatiilor invechite sau subtil incorecte
  • Necesita infrastructura de baza de date vectoriala
  • Mai putin previzibil — tururi diferite incarca continut diferit

Ideal pentru: Agenti care invata din experienta si trebuie sa acumuleze cunostinte de domeniu in timp.

Modelul 4: injectare compilata/statica

Folosit de: DSPy, MetaGPT

Cum functioneaza: Abilitatile sunt compilate in continut fix de prompt (DSPy) sau activate prin sabloane rigide de actiune (MetaGPT).

Avantaje:

  • Cel mai previzibil comportament — acelasi continut de fiecare data
  • Optimizarea poate fi facuta offline (compilarea DSPy)
  • Fara suprasarcina la rulare pentru selectia abilitatilor
  • Dovedit eficient pentru sarcini bine definite si repetabile

Dezavantaje:

  • Inflexibil — schimbarea abilitatilor necesita recompilare (DSPy) sau modificari de cod (MetaGPT)
  • Nu se poate adapta la situatii noi in afara exemplelor compilate
  • Procesul de compilare DSPy in sine necesita multe apeluri LLM

Ideal pentru: Pipeline-uri de productie cu sarcini bine definite unde fiabilitatea prevaleaza asupra flexibilitatii.

Implicatii practice pentru constructorii de agenti

Alegerea modelului potrivit

Arhitectura potrivita de injectare a abilitatilor depinde de profilul agentului tau:

Daca agentul tau are un rol ingust, bine definit (de ex., un bot de revizuire cod, un agent de suport clienti pentru un singur produs), injectarea permanent activa (model CrewAI/SuperAGI) este cea mai simpla si fiabila. Costul in token-uri al 2-3 abilitati permanent prezente este gestionabil, si eviti complexitatea logicii de activare.

Daca agentul tau are nevoie de capabilitati largi dar foloseste doar cateva per interactiune (de ex., un asistent de dezvoltator, un agent de automatizare de uz general), dezvaluirea progresiva (model Claude Code/Deep Agents) este castigatorul clar. Economiile de token-uri de 83-98% la scara sunt prea semnificative pentru a fi ignorate.

Daca agentul tau trebuie sa invete si sa se imbunatateasca din interactiuni (de ex., un asistent personal, un expert de domeniu care acumuleaza cunostinte), recuperarea semantica (model AutoGen Teachability) ofera bucla de invatare pe care celelalte modele nu o au. Asigura-te doar ca ai controale de calitate asupra a ceea ce intra in baza de cunostinte.

Daca agentul tau ruleaza pipeline-uri bine definite (de ex., procesare de date, generare de rapoarte, fluxuri de lucru standardizate), injectarea compilata (model DSPy) iti ofera cel mai previzibil si optimizat comportament.

Abordarea hibrida

Pentru echipe de agenti de productie unde agentii trebuie sa functioneze imediat, recomandam o abordare hibrida:

Abilitati de baza (1-2 per agent, definind expertiza principala de domeniu): intotdeauna injectate in prompt-ul de sistem, in stil CrewAI. Acestea sunt capabilitati non-negociabile de care agentul are nevoie la fiecare tura.

Abilitati extinse (capabilitati suplimentare de care agentul ar putea avea nevoie): doar metadate in prompt-ul de sistem, incarcate printr-un mecanism de cautare/incarcare cand este necesar, in stil Deep Agents. Acestea extind setul de capabilitati al agentului fara a plati costul in token-uri cand nu sunt relevante.

Cunostinte invatate (expertiza de domeniu acumulata): stocate intr-o baza de date vectoriala si recuperate semantic per tura, in stil AutoGen. Aceasta permite agentului sa se imbunatateasca in timp fara crearea manuala de abilitati.

Aceasta arhitectura stratificata se mapeaza natural pe modul in care este construit un prompt de sistem: data -> persona -> instructiuni de sistem -> abilitati de baza -> index de abilitati -> context de rol/echipa. Abilitatile de baza si indexul adauga un cost previzibil si gestionabil in token-uri, in timp ce corpurile complete ale abilitatilor apar doar cand sunt necesare.

Cele mai bune practici pentru bugetul de token-uri pe toate framework-urile

Indiferent de modelul de injectare pe care il folosesti, aceste strategii de gestionare a token-urilor se aplica universal:

Ordonare prietenoasa cu cache-ul

Plaseaza contextul neschimbator (instructiuni de sistem, scheme de instrumente) la inceputul prompt-ului. La furnizorii care suporta cache-ul prompt-urilor, token-urile din cache costa cu 75% mai putin. Claude Code si OpenAI injecteaza ambele schemele de instrumente descoperite la sfarsitul ferestrei de context specific pentru a pastra hit-urile de cache pe prefixul static.

Externalizare

Sumarizeaza raspunsurile instrumentelor in loc sa pastrez rezultatele complete in context. Stocheaza datele complete in referinte externe pe care agentul le poate citi la cerere. Aceasta este deosebit de importanta pentru agentii care fac multe apeluri de instrumente per sesiune.

Reducere

Compacteaza istoricul conversatiei prin sumarizare. Extrage fapte cheie din schimburi lungi in reprezentari condensate. Fiecare framework cu persistenta bazata pe sesiune beneficiaza de gestionarea agresiva a istoricului.

Recuperare in loc de preincarcare

Recupereaza dinamic informatii relevante la rulare in loc sa incarci totul din start. Aceasta se aplica abilitatilor, bazelor de cunostinte si chiar istoricului conversatiei. Studiile arata ca aceasta poate reduce dimensiunile prompt-urilor cu pana la 70%.

Izolare

Foloseste sub-agenti pentru sarcini specifice astfel incat contextul fiecarui agent sa ramana concentrat. In loc sa dai unui agent 20 de abilitati, creeaza o echipa de 5 agenti cu cate 4 abilitati fiecare. Fiecare agent mentine o fereastra de context redusa, iar echipa acopera colectiv intregul set de capabilitati.

Concluzie

Modul in care framework-urile de agenti AI injecteaza abilitati in context este una dintre cele mai importante decizii arhitecturale in proiectarea agentilor — totusi este rareori discutata la acest nivel de detaliu.

Domeniul converge clar spre dezvaluirea progresiva ca model preferat pentru agentii de uz general, Claude Code, LangChain Deep Agents si OpenAI ajungand toate independent la arhitecturi similare pe trei niveluri. Intre timp, modele specializate precum recuperarea semantica (AutoGen, Voyager) si injectarea compilata (DSPy) servesc nise importante pe care dezvaluirea progresiva singura nu le adreseaza.

Pentru practicienii care construiesc sisteme de agenti astazi, informatia cheie este ca injectarea abilitatilor nu este o problema cu o solutie unica. Abordarea potrivita depinde de rolul agentului tau, numarul de abilitati de care are nevoie, daca trebuie sa invete in timp si toleranta ta pentru compromisurile intre costuri de token-uri si fiabilitate.

Cele mai robuste sisteme de productie vor combina probabil mai multe modele — permanent activ pentru capabilitatile de baza, dezvaluire progresiva pentru abilitati extinse si recuperare semantica pentru cunostintele acumulate — creand agenti care sunt atat eficienti, cat si experti.

Întrebări frecvente

Yasha este un dezvoltator software talentat, specializat în Python, Java și învățare automată. Yasha scrie articole tehnice despre inteligența artificială, ingineria prompturilor și dezvoltarea chatboturilor.

Yasha Boroumand
Yasha Boroumand
CTO, FlowHunt

Construieste agenti AI mai inteligenti cu FlowHunt

Proiecteaza echipe de agenti AI cu injectare inteligenta a abilitatilor si gestionare a contextului. Fara cod necesar.

Află mai multe