Kas tie AI agentai ir kodėl visi apie juos kalba?
Jei pastaruoju metu sekate technologijų naujienas, turbūt pastebėjote, kad žodžių junginys „AI agentai” pasirodo beveik kiekviename straipsnyje apie dirbtinį intelektą. Bet kas tai iš tikrųjų yra? Ne tas pats, kas paprastas chatbotas, kuriam užduodi klausimą ir gauni atsakymą. AI agentas – tai sistema, kuri gali savarankiškai planuoti, priimti sprendimus ir atlikti veiksmus siekdama konkretaus tikslo. Ji ne tik atsako – ji veikia.
Paprasčiausias būdas tai suprasti: įsivaizduokite, kad paprašote ChatGPT parašyti el. laišką. Jis parašo. Tačiau AI agentas ne tik parašytų laišką – jis pats atidarytų jūsų el. pašto klientą, surastų tinkamą gavėją, pridėtų reikiamus priedus ir išsiųstų. Skirtumas milžiniškas. Vienas instrumentas, kitas – darbuotojas.
Šiuo metu AI agentų kūrimas yra viena karščiausių sričių tiek startuolių, tiek didelių technologijų kompanijų pasaulyje. „Anthropic”, „OpenAI”, „Google” – visi lenktyniauja, kas greičiau sukurs patikimą agentų infrastruktūrą. Ir čia atsiranda galimybė jums – kūrėjams, verslui, entuziastams – pasinaudoti šia banga.
Agentų architektūra: kaip visa tai veikia po gaubtu
Prieš pradedant kurti, būtina suprasti pagrindinę struktūrą. AI agentas paprastai susideda iš kelių komponentų, kurie dirba kartu kaip gerai suderinta komanda.
Smegenys (LLM) – tai didelis kalbos modelis, kuris priima sprendimus. Gali būti GPT-4, Claude, Gemini ar net atvirojo kodo Llama. Šis komponentas analizuoja situaciją, planuoja veiksmus ir interpretuoja rezultatus.
Atminties sistema – agentai turi trumpalaikę ir ilgalaikę atmintį. Trumpalaikė – tai kontekstas, kurį modelis „mato” šiuo metu. Ilgalaikė – duomenų bazė ar vektorinė saugykla, iš kurios agentas gali gauti informaciją apie ankstesnius veiksmus, vartotojo pageidavimus ar domeninę informaciją.
Įrankiai (Tools) – tai funkcijos, kurias agentas gali iškviesti. Interneto paieška, skaičiuotuvas, duomenų bazės užklausos, API iškvietimai, failų skaitymas ir rašymas. Kuo daugiau įrankių, tuo galingesnis agentas, bet ir tuo sudėtingesnė valdymo logika.
Planavimo mechanizmas – tai, kaip agentas nusprendžia, ką daryti toliau. Populiariausi metodai: ReAct (Reasoning + Acting), Chain-of-Thought ir Tree-of-Thoughts. ReAct šiuo metu yra de facto standartas – agentas mąsto, veikia, stebi rezultatą, mąsto vėl.
Visa tai sujungus, gauname sistemą, kuri gali savarankiškai spręsti kompleksines užduotis. Bet čia ir prasideda tikri iššūkiai.
Įrankiai ir frameworkai: nuo ko pradėti
Gerai, teorija aišku. Dabar praktika. Ką naudoti, kad nekurtumėte visko nuo nulio?
LangChain – tikriausiai populiariausias frameworkas AI agentų kūrimui Python aplinkoje. Jis suteikia abstrakciją virš LLM, atminties sistemų ir įrankių. Minusas – kartais per daug abstrakcijos, ir kai kas nors neveikia, sunku suprasti kodėl. Pradedantiesiems gali būti per sudėtinga.
LlamaIndex – labiau orientuotas į duomenų indeksavimą ir RAG (Retrieval-Augmented Generation) sistemas, bet turi ir agentų palaikymą. Puikiai tinka, kai agentas turi dirbti su dideliais dokumentų rinkiniais.
AutoGen iš Microsoft – įdomus projektas, leidžiantis kurti multi-agentų sistemas, kur keli agentai bendrauja tarpusavyje. Jei norite sukurti komandą agentų, kurie sprendžia problemas kartu – tai geras pasirinkimas.
CrewAI – palyginti naujas, bet labai greitas augimas. Orientuotas į rolėmis pagrįstus agentų kolektyvus. Sintaksė intuityvi, dokumentacija gera. Rekomenduočiau kaip pirmą žingsnį tiems, kurie nori greitai pamatyti rezultatą.
OpenAI Assistants API – jei norite mažiau kodo ir daugiau out-of-the-box funkcionalumo, ši API leidžia kurti agentus su integruota atminties sistema, failų apdorojimu ir įrankių palaikymu. Minusas – esate pririšti prie OpenAI ekosistemos.
Mano rekomendacija: pradėkite nuo CrewAI arba tiesiogiai nuo OpenAI Assistants API. Kai suprasite principus, galėsite pereiti prie lankstesnių sprendimų.
Praktinis pavyzdys: sukurkime paprastą agentą
Teorija be praktikos – tuščias reikalas. Pažiūrėkime, kaip atrodo paprastas agentas su LangChain ir OpenAI. Šis pavyzdys sukuria agentą, kuris gali ieškoti internete ir atlikti skaičiavimus:
from langchain.agents import AgentExecutor, create_openai_tools_agent
from langchain_openai import ChatOpenAI
from langchain.tools import DuckDuckGoSearchRun, tool
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
# Inicializuojame modelį
llm = ChatOpenAI(model="gpt-4-turbo", temperature=0)
# Sukuriame įrankius
search = DuckDuckGoSearchRun()
@tool
def calculator(expression: str) -> str:
"""Skaičiuoja matematines išraiškas. Naudok Python sintaksę."""
try:
return str(eval(expression))
except Exception as e:
return f"Klaida: {str(e)}"
tools = [search, calculator]
# Sukuriame prompt
prompt = ChatPromptTemplate.from_messages([
("system", "Tu esi naudingas asistentas. Naudok turimus įrankius užduočiai atlikti."),
("human", "{input}"),
MessagesPlaceholder(variable_name="agent_scratchpad"),
])
# Sukuriame agentą
agent = create_openai_tools_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# Paleidžiame
result = agent_executor.invoke({
"input": "Kiek kainuoja Bitcoin šiandien ir kiek eurų reikėtų 0.5 BTC?"
})
Tai tik pradžia. Realūs agentai turi daug daugiau logikos – klaidų valdymą, atminties sistemas, sudėtingesnius įrankius. Bet principas tas pats: modelis gauna užduotį, nusprendžia, kurį įrankį naudoti, gauna rezultatą, ir taip tol, kol pasiekia tikslą.
Svarbus patarimas: visada nustatykite max_iterations parametrą. Be jo agentas gali įstrigti begaliniame cikle ir jūs gausite labai didelę sąskaitą iš OpenAI.
Dažniausios klaidos ir kaip jų išvengti
Kūriau agentus, matiau, kaip juos kuria kiti, ir galiu pasakyti – yra keletas klaidų, kurias daro beveik visi pradedantieji.
Per daug pasitikėjimo agento sprendimais. AI agentai klysta. Kartais labai kvailai. Jei agentas turi prieigą prie realių sistemų – duomenų bazių, el. pašto, finansinių API – būtinai įdiekite žmogaus patvirtinimo žingsnį kritiniams veiksmams. „Human-in-the-loop” nėra silpnumas, tai būtinybė.
Prastas prompt inžinerija. Agento elgesys labai priklauso nuo sisteminės žinutės. Jei ji neaiški, agentas elgsis nenuspėjamai. Būkite konkretūs: nurodykite, ką agentas turėtų daryti, ko neturėtų, kokiu formatu grąžinti rezultatus. Testuokite daug skirtingų scenarijų.
Konteksto langų ignoravimas. Ilgos agentų sesijos greitai „suvalgo” konteksto langą. Jei agentas atlieka daug veiksmų, jo ankstyvieji žingsniai gali „iškristi” iš atminties. Sprendimas – naudoti sutraukimo (summarization) technikas arba išorinę atmintį.
Klaidų valdymo nebuvimas. Kai įrankis grąžina klaidą, agentas turi žinoti, ką daryti. Jei nenumatysite šio scenarijaus, agentas arba įstrigs, arba sugeneruos nesąmones. Visada aprašykite, kaip agentas turėtų reaguoti į klaidas.
Saugumo ignoravimas. Jei kuriate agentą, kuris vykdo kodą ar sąveikauja su failų sistema – izuoliuokite jį. Naudokite Docker konteinerius, ribokite prieigos teises. Prompt injection atakos yra realios ir gali priversti agentą atlikti nenorimų veiksmų.
Multi-agentų sistemos: kai vienas neužtenka
Vienas agentas gali daug, bet yra užduočių, kurioms reikia kelių specializuotų agentų, dirbančių kartu. Tai vadinama multi-agentų sistema (MAS), ir čia prasideda tikrai įdomūs dalykai.
Įsivaizduokite, kad kuriate sistemą, kuri automatiškai analizuoja konkurentus ir rengia ataskaitas. Vienas agentas galėtų viską daryti pats, bet efektyviau būtų:
- Tyrėjo agentas – ieško informacijos internete, renka duomenis
- Analizės agentas – apdoroja surinktus duomenis, identifikuoja tendencijas
- Rašytojo agentas – paverčia analizę skaitomu ataskaitos formatu
- Redaktoriaus agentas – peržiūri galutinį tekstą, tikrina faktus
- Orkestruotojo agentas – koordinuoja visų kitų darbą
Tokia architektūra leidžia kiekvienam agentui specializuotis savo srityje ir naudoti optimalų modelį. Tyrėjui gali pakakti greitesnio ir pigesnio modelio, o analizei reikia galingesnio.
CrewAI tai padaro gana elegantiškai:
from crewai import Agent, Task, Crew
researcher = Agent(
role='Tyrėjas',
goal='Surinkti išsamią informaciją apie nurodytą temą',
backstory='Esi patyręs tyrėjas, kuris moka rasti patikimą informaciją',
tools=[search_tool],
verbose=True
)
analyst = Agent(
role='Analitikas',
goal='Analizuoti surinktus duomenis ir identifikuoti svarbiausias įžvalgas',
backstory='Esi duomenų analitikas su verslo strategijos patirtimi',
verbose=True
)
research_task = Task(
description='Surink informaciją apie {topic} rinką',
agent=researcher,
expected_output='Išsami ataskaita su faktais ir šaltiniais'
)
analysis_task = Task(
description='Išanalizuok tyrėjo surinktus duomenis',
agent=analyst,
expected_output='Strateginė analizė su rekomendacijomis'
)
crew = Crew(
agents=[researcher, analyst],
tasks=[research_task, analysis_task],
verbose=True
)
Svarbu suprasti: multi-agentų sistemos yra galingesnės, bet ir sudėtingesnės. Daugiau judančių dalių reiškia daugiau galimų gedimų taškų. Pradėkite nuo paprasčiausios architektūros, kuri išsprendžia jūsų problemą, ir komplikuokite tik tada, kai to tikrai reikia.
Kur AI agentai tikrai naudingi (ir kur ne)
Vienas didžiausių pavojų – bandyti agentus naudoti visur. Tai ne universalus sprendimas. Pažiūrėkime, kur jie tikrai prideda vertę ir kur geriau naudoti paprastesnius sprendimus.
Puikiai tinka:
Ilgos, daugiažingsnės užduotys, kuriose reikia priimti sprendimus pagal tarpinių žingsnių rezultatus. Pavyzdžiui, automatizuotas duomenų rinkimas ir apdorojimas, kur kiekvienas kitas žingsnis priklauso nuo ankstesnio rezultato.
Užduotys, reikalaujančios integracijos su keliomis sistemomis. Agentas, kuris patikrina CRM, siunčia el. laišką, atnaujina projektų valdymo sistemą ir praneša Slack kanale – tai tikra agentų stiprybė.
Personalizuotos patirtys, kur reikia prisiminti vartotojo kontekstą ir adaptuotis. Klientų aptarnavimo agentai, kurie žino vartotojo istoriją ir gali spręsti sudėtingus klausimus.
Geriau naudoti paprastesnius sprendimus:
Jei užduotis yra vienas klausimas – vienas atsakymas, paprastas API iškvietimas bus greitesnis ir pigesnis. Agentų pridėtinė vertė čia lygi nuliui.
Kai reikia 100% deterministinių rezultatų. Agentai yra probabilistiniai – jie gali elgtis skirtingai tose pačiose situacijose. Jei jums reikia garantuoto, nuspėjamo elgesio – naudokite tradicinį kodą.
Realaus laiko sistemos su griežtais latencijos reikalavimais. Agentas, kuris atlieka kelis LLM iškvietimus, tiesiog per lėtas daugeliui realaus laiko scenarijų.
Agentų ateitis ir tai, ką verta žinoti jau dabar
Mes esame labai ankstyvame AI agentų eroje. Tai, kas šiandien atrodo sudėtinga ir eksperimentinė, po metų taps standartine praktika. Bet tai nereiškia, kad reikia laukti – priešingai, dabar yra geriausias laikas mokytis ir eksperimentuoti.
Keletas tendencijų, į kurias verta atkreipti dėmesį:
Mažesni, specializuoti modeliai. Ne visada reikia GPT-4 galios. Mažesni modeliai, suderinti konkrečioms užduotims, bus greitesni, pigesni ir kartais tikslesni. Agentų architektūros, kurios naudoja skirtingus modelius skirtingoms užduotims, taps norma.
Standartizuoti protokolai. Šiuo metu kiekvienas frameworkas turi savo būdą aprašyti įrankius ir agentų sąveiką. Ateityje tikėtina, kad atsiras standartai – panašiai kaip HTTP standartizavo web komunikaciją. Anthropic jau pristatė MCP (Model Context Protocol), kuris žada tapti tokiu standartu.
Agentų saugumas taps prioritetu. Kai agentai pradės valdyti realius procesus ir pinigus, saugumo klausimai taps kritiški. Jau dabar verta investuoti laiką į supratimą, kaip apsaugoti agentų sistemas nuo manipuliavimo.
Praktinė rekomendacija tiems, kurie nori pradėti: pasirinkite vieną konkrečią problemą savo darbe ar versle, kuriai agentas galėtų padėti. Nesistenkite sukurti universalaus sprendimo. Sukurkite paprastą prototipą per savaitgalį, išmokite iš jo, tada tobulinkite. Agentų kūrimas – tai iteratyvus procesas, ir greičiausiai mokosi tas, kas greičiausiai eksperimentuoja.
Galiausiai – nepamirškite, kad agentas yra tik įrankis. Geriausias agentas pasaulyje nepadės, jei problema, kurią bandote spręsti, nėra tikra problema. Pradėkite nuo klausimo „ką noriu pasiekti?”, o ne „kaip panaudoti AI agentą?”. Technologija turėtų tarnauti tikslui, o ne atvirkščiai.






