În lumea dezvoltării software, OpenAI continuă să surprindă cu inovații interesante. Recent, compania a lansat OpenAI Swarm, un framework experimental conceput pentru a simplifica dezvoltarea sistemelor multi-agent. Deși este prezentat ca un proiect educațional și experimental, OpenAI Swarm aduce concepte noi și interesante în domeniul orchestrării agenților AI.
1. Ce este OpenAI Swarm?
OpenAI Swarm este un framework care oferă o integrare rapidă și ușoară pentru procesările de date între mai mulți agenți AI. Spre deosebire de abordările tradiționale care se bazează puternic pe API-ul modelelor de limbaj (LLM), Swarm propune o abordare mai simplă și mai transparentă.
Principalele caracteristici ale framework-ului includ:
- Fiecare agent vine cu propriul set de instrucțiuni, un rol desemnat (de exemplu, „Agent de vânzări”) și o colecție de funcții disponibile;
- Permite transferuri dinamice între agenți bazate pe fluxul conversației;
- Utilizează variabile de context pentru a menține și împărtăși informații între agenți;
- Oferă o metodă pentru inițierea și supravegherea conversațiilor multi-agent.
2. Cum funcționează OpenAI Swarm?
Framework-ul se bazează pe două concepte fundamentale: rutine și transferuri între agenți.
2.1. Rutine
O rutină reprezintă o secvență de acțiuni pe care un agent le poate executa. De exemplu, într-un scenariu de suport clienți, o rutină tipică ar putea include:
- Colectarea informațiilor despre problema clientului;
- Solicitarea detaliilor suplimentare (dacă este necesar);
- Propunerea unei soluții;
- Oferirea unui ramburs (dacă este cazul);
- Procesarea rambursului.
2.2. Transferuri între agenți
Similar cu transferul către alt reprezentant într-o convorbire telefonică, transferurile în Swarm permit unui agent să predea conversația altui agent specializat. Acest mecanism este implementat prin funcții speciale care permit tranziții naturale între agenți.
3. Exemplu de implementare
Iată un structură simplă de cod pentru definirea și utilizarea agenților în OpenAI Swarm:
from swarm import Swarm, Agent
# Definirea unui agent
agent_suport = Agent(
name="Agent Suport",
instructions="Ești un agent de suport helpful.",
functions=[transfer_to_agent_vanzari]
)
agent_vanzari = Agent(
name="Agent Vânzări",
instructions="Ajută clienții cu comenzile și vânzările."
)
# Inițializarea clientului Swarm
client = Swarm()
response = client.run(
agent=agent_suport,
messages=[{"role": "user", "content": "Vreau să fac o comandă."}]
)
Vom exemplifica utilizarea OpenAI Swarm pe un exemplu practic privind utilizarea a două modele AI instalate local care fac sarcini diferite.
3.1. Design
Vom folosi două modele AI generative cu performanțe ridicate:
Amândouă modelele sunt bune, dar nu pot rezolva singure problema pe care ne-o propunem: dorim să generăm texte interesante, de exemplu în stilul unor povești zen care discută despre probleme filosoffice, dar în limba română.
Modelul Qwen 2.5 este foarte bun, doar că nu este antrenat pe limba română. Textele pe care le generează sunt în engleză.
Modelul Aya Expanse 8B în schimb nu este extraordinar pe scrierea unor povești ultra realiste, dar în schimb poate genera rezultate în limba română. Aya Expanse 8B este semnificativ mai bun decât OpenLLM-RO, un prim model AI lansat pe piață în acest an, antrenat specific pentru limba română.
Prin urmare ne propunem realizarea unei aplicații simple care să urmeze următorii pași:
- vom folosi un agent AI pe baza modelului Qwen 2.5 14B care va compune texte în limba engleză pe o temă dată de utilizator;
- vom folosi un alt agent AI pe baza modelului Aya Expanse 8B care va primi textul de la primul agent și îl va traduce și reformula în limba română.
Putem să facem analogia cu lumea reală: avem un scriitor (primul agent) și un traducător (al doilea agent) care colaborează pentru a finaliza cu succes sarcina trasată de utilizator.
Cele două modele sunt disponibile gratuit pe platforma Ollama.
3.2. Implementarea codului
Vom folosi python și Ollama pentru a apela cele două modele LLM instalate local.
În prealabil va trebui să înstalăm librăriile Python:
pip install openai
pip install git+https://github.com/openai/swarm.git
Pentru aplicația noastră vom folosi următorul cod Python:
from swarm import Swarm, Agent
import os
os.environ["OPENAI_API_KEY"] = "ollama"
os.environ["OPENAI_BASE_URL"] = "http://localhost:11434/v1"
# Initialize Swarm client
client = Swarm()
# 1. Definim cei doi agenți: scriitorul și traducatorul
# Agentul scriitor
scriitor_agent = Agent(
name="Asistent Scrriitor",
instructions="You are a creative assitent that write articles of around 900 tokens in english on a provided theme subject. ",
model="qwen2.5:14b"
)
# Agentul traducator
traducator_agent = Agent(
name="Asistent Traducator",
instructions="You are a creative assistent expert in translating text from english to romanian language. You receive text in english and you reply with the translated text in romanian language. You do not reply with anything else but with translation.",
model="aya-expanse:latest"
)
# 2. Setam comunicarea intre agenti
def run_workflow(topic):
print("Aplicatia ruleaza...")
# Pasul 1: scriitorul genereaza textul pe tema data, dar in limba engleza
scriitor_response = client.run(
agent=scriitor_agent,
messages=[{"role": "user", "content": f"Write a short zen story of about 700 tokens in english on the topic {topic}. Finish the story with a twist or conclussion about zen themes and life."}],
)
raw_scriitor = scriitor_response.messages[-1]["content"]
# Pasul 2: traducatorul primeste textul compus de scriitor si returneaza traducerea lui in limba romana
traducator_response = client.run(
agent=traducator_agent,
messages=[{"role": "system", "content": raw_scriitor}],
)
return traducator_response.messages[-1]["content"]
# Aplicatie de scriere si traducere a unui text folosind 2 agenti si 2 modele AI diferite
print(run_workflow("The most important things in life"))
Dacă urmărim codul vom vedea că am programat OpenAI Swarm să urmeze exact pașii din design:
- contruirea celor doi agenți și setarea modelelor LLM pentru fiecare dintre ei;
- stabilirea instrucțiunilor pentru cei doi agenți;
- primirea temei de la utilizator;
- generarea textului în engleză;
- trimiterea textului de la agentul scriitor la agentul traducător;
- generarea traducerii de către agentul traducător;
- finalizarea sarcinii și afișarea textului final.
OpenAI Swarm nu face decât să dirijeze activitățile agenților. Fiecare agent folosește propriul său model LLM și propriul set de instrucțiuni.
Dacă rulăm această aplicație vom obține următorul text:
Într-un sat mic, cuibărit între dealuri înverzite și vaste, trăia un vechi maestru Zen, cunoscut pentru înțelepciunea sa și atitudinea pașnică. El se numea Maestrul Yen și avusese o viață dedicată împărtășirii adevărurilor profunde ale existenței cu sătenii curioși și cu căutătorii din ținuturi îndepărtate.
Într-o seară de toamnă, când frunzele își schimbau culoarea în auriu și roșu crampe, trei tineri au ajuns în satul respectiv, dornici să afle secretele vieții de la venerabilul maestru Zen. Au abordat Maestrul Yen sub cupola imensă a unui mesteacăn antic, acolo unde el stătea adesea în contemplare.
Primul tânăr a vorbit cu încredere: "Maestre Yen, ești cunoscut pentru înțelepciunea și sufletul tău pașnic. În opinia ta, ce este cel mai important în viață?"
Cu un zâmbet blând, Maestrul Yen și-a îndreptat privirea spre apusul de soare dincolo de dealuri. "Banii," a răspuns el concis. Tânărul a schimbat o privire confuză cu cei doi prieteni ai săi, dar au rămas tăcuți pentru a asculta mai mult.
Al doilea bărbat arăta sceptic, însă captivat: "Dar banii nu aduc fericire adevărată sau pace interioară."
Maestrul Yen a nodat și s-a întors spre el, ochii lui strălucind amuzat. "Corect," a fost de acord el. "Atunci să-ți pun o întrebare: pe care dintre cele două monede ai alege dacă ți s-ar oferi doar una?"
"În așa caz," a răspuns rapid al doilea bărbat, fără a reflecta prea mult, "mi-aș dori moneda mai grea."
Maestrul Yen s-a leganat înapoi împotriva trunchiului robust al mesteacănului și râse ușor, degetele lui desenând crăpăturile din scoarță. "Ah, dar nu există o monedă grea," a spus el jucăuș. Tinerii au rămas confuzi în fața acestui enunț.
"Și cunoașterea?" a îndrăznit al treilea bărbat, sperând să abordeze un subiect mai substanțial. "Cunoașterea poate schimba vieți, inspira oameni și oferi un sentiment de apartenență într-o lume adesea neîngrijitoare."
Maestrul Yen își crăpu ochii din spatele ochelarilor, ascultând cuvintele lor, dar rămase calm: "Este adevărat, cunoașterea este valoroasă. Dar spune-mi, cum ai purta cunoașterea ca pe niște bani?"
Tinerii au devenit frustrați, dar și intrigați de înțelepciunea jucăușă a maestrului. De ce se îndrepta totul spre acest concept evaziv al "a deține" sau "a poseda"? Erau ei cu adevărat atât de departe de ceea ce era simplu?
"Niciuna dintre acestea," a intervenit Maestrul Yen ușor. "Ceea ce cauți — bani, pace, cunoaștere — cel mai important lucru nu există în deținere."
Trei bărbați priveau unii spre alții, confuzi.
Maestrul Yen a continuat, vocea lui ușoară și blândă ca vântul de toamnă șoptit prin frunze: "El se află în propria ta respirație, în aerul acestui moment. Actul simplu al trăirii în sine este ceea ce contează cel mai mult."
Realizarea începea să le lumineze treptat mințile — viața nu e despre acumulare sau dorință; ea este completă, chiar aici și acum.
Observând înțelegerea care se instala pe fețele lor, Maestrul Yen a zâmbit înțelept: "Când uitați aceste adevăruri, amintiți-vă de această poveste."
Pe măsură ce soarele se strecura sub orizont, colorând totul în nuanțe calde și umbre argintii, un tânăr a luat cuvântul cu ezitare: "Dar Maestre, cum trăim conștient când viața este ocupată de cerințe?"
Ochi strălucitori ai maestrului s-au aprins. "Prin respirație," a răspuns el simplu și blând. "Fiecare inspirare poate fi o meditație dacă alegi să o întâmpini cu deplinătate. Și fiecare expirație, o ofertă de recunoștință. Acest moment — esența existenței tale — devine sacru."
Cu aceste cuvinte, bărbații au înțeles mai bine; nu era nevoie de gesturi grandioase sau obiective majore aici. Cheia se afla în a fi prezent.
Pe măsură ce se pregăteau să plece, Maestrul Yen le-a oferit un sfat final: "Amintiți-vă că adevărata înțelepciune nu se găsește în cuvinte, ci în experiența vieții trăite cu atenție."
Tinerii au plecat din acea zi cu o perspectivă nouă asupra vieții, recunoscători pentru învățăturile maestrului lor neașteptat.
Pe același principiu OpenAI Swarm poate fi implementat ca dirijor al activității comune a mai multor agenți și modele LLM cu diferite specializări:
- agenți care codează;
- agenți care generează documente;
- agenți specializați în extragerea informațiilor din diferite surse;
- agenți care traduc informațiile;
- agenți care fac recunoaștere optică (OCR);
- etc.
Nu este nevoie să utilizăm un singur model LLM care să fie avansat și să poată face orice fel de sarcini. Putem folosi în schimb modele mici, rapide, eficiente pe sarcini specifice care împreună produc rezultate mult mai bune și în final mult mai ieftine.
4. Provocări și limitări
Cu toate că OpenAI Swarmaduce concepte interesante, framework-ul prezintă și câteva provocări:
- Arhitectura avansată – deși oferă control și transparență, poate complica scenariile care necesită persistența informațiilor;
- Natura experimentală – OpenAI menționează explicit că framework-ul este destinat scopurilor educaționale, nu utilizării în producție ceea ce lasă loc unor dezvoltări ulterioare;
- Gestionarea transferurilor – dezvoltatorii trebuie să proiecteze și să testeze cu atenție interacțiunile între agenți pentru a evita blocajele;
- Integrarea cu sisteme existente – poate necesita efort semnificativ pentru integrarea cu baze de date mari sau un număr mare de modele LLM cu specificații diferite.
5. Concluzii
Lansarea OpenAI Swarm reflectă o tendință mai largă în industrie către sisteme bazate pe agenți mai sofisticate, în special în domeniul enterprise. Deși framework-ul actual este experimental, conceptele și pattern-urile introduse ar putea influența dezvoltarea viitoarelor instrumente de orchestrare AI.
Pentru dezvoltatori, OpenAI Swarm oferă o oportunitate excelentă de a explora și experimenta cu sisteme multi-agent într-un mod accesibil. Chiar dacă nu este recomandat pentru medii de producție, framework-ul servește ca o platformă educațională valoroasă pentru înțelegerea conceptelor fundamentale din spatele orchestrării agenților AI.
OpenAI Swarm reprezintă o abordare interesantă și inovativă pentru dezvoltarea sistemelor multi-agent. Cu accent pe simplitate și transparență, framework-ul oferă dezvoltatorilor o modalitate accesibilă de a experimenta cu orchestrarea agenților AI. Deși natura sa experimentală îi limitează aplicabilitatea în medii de producție, conceptele și pattern-urile introduse de OpenAI Swarm ar putea influența semnificativ viitorul dezvoltării sistemelor bazate pe agenți AI.