AI serijos interviu klausimas 6: trys pagrindiniai AI agento metodai: ReAct, Plan-and-Solve ir Reflection
Trys pagrindiniai AI agento metodai: ReAct, Plan-and-Solve ir Reflection
AI agentas yra intelektuali būtybė, galinti savarankiškai suvokti aplinką, priimti sprendimus ir atlikti veiksmus. Pagrindiniai metodai yra trys: ReAct, Plan-and-Solve ir Reflection. Toliau jie pristatomi su diagramomis ir kodo pavyzdžiais.
1. ReAct (Reasoning + Acting)
Pagrindinė idėja: samprotavimas (Reasoning) ir veikimas (Acting) atliekami pakaitomis. Agentas kiekviename žingsnyje pirmiausia apmąsto esamą būseną ir kitą planą (samprotavimas), tada atlieka veiksmą (pvz., iškvietimą įrankį, informacijos paiešką), o tada tęsia samprotavimą pagal rezultatą.
Diagrama:
[Pradinė būsena] → [Samprotavimas: apmąstyti kitą žingsnį] → [Veiksmas: atlikti veiksmą] → [Stebėti rezultatą] → [Samprotavimas: atnaujinti planą] → ... → [Galutinis atsakymas]
Kodo pavyzdys (pseudokodas):
def react_agent(question):
context = []
while not solved:
# Samprotavimas: sugeneruoti mąstymo žingsnį
thought = llm.generate_thought(question, context)
# Veiksmas: pasirinkti veiksmą pagal mąstymą
action = llm.choose_action(thought)
# Atlikti veiksmą, gauti stebėjimą
observation = execute_action(action)
# Pridėti mąstymą, veiksmą ir stebėjimą į kontekstą
context.append((thought, action, observation))
return final_answer
Pavyzdys:
- Vartotojas klausia: „Koks oras Pekine šiandien?“
- Agentas samprotauja: „Man reikia užklausti orų API, reikia miesto pavadinimo ir datos.“
- Veiksmas: iškviesti orų API (parametrai: Pekinas, šiandien)
- Stebėjimas: grąžina „Giedra, 25°C“
- Samprotavimas: „Gavau informaciją, galiu atsakyti.“
- Išvestis: „Pekine šiandien giedra, 25°C.“
2. Plan-and-Solve
Pagrindinė idėja: pirmiausia sudaromas išsamus planas (Plan), tada jis vykdomas žingsnis po žingsnio (Solve). Planavimo etape sudėtinga užduotis suskaidoma į dalinius žingsnius, o vykdymo etape jie atliekami iš eilės, galbūt koreguojant planą pagal tarpinius rezultatus.
Diagrama:
[Užduotis] → [Sudaryti planą: suskaidyti į dalinius žingsnius] → [Vykdyti 1 žingsnį] → [Vykdyti 2 žingsnį] → ... → [Vykdyti N žingsnį] → [Galutinis atsakymas]
Kodo pavyzdys:
def plan_and_solve(task):
# Planavimo etapas
plan = llm.generate_plan(task) # pvz.: ["Ieškoti medžiagos", "Sutvarkyti informaciją", "Parašyti ataskaitą"]
context = {}
for step in plan:
# Vykdyti kiekvieną žingsnį
result = execute_step(step, context)
context[step] = result
# Apibendrinti rezultatus
final = llm.synthesize(context)
return final
Pavyzdys:
- Užduotis: „Parašyti tinklaraščio įrašą apie AI agentą“
- Planas:
1. Ieškoti AI agento apibrėžimo ir naujausių pasiekimų
2. Perskaityti ir susisteminti pagrindinius dalykus
3. Parašyti tinklaraščio metmenis
4. Užpildyti turinį
5. Koreguoti ir paskelbti
- Vykdymas: atlikti kiekvieną žingsnį iš eilės, galiausiai pateikti tinklaraštį.
3. Reflection
Pagrindinė idėja: agentas vykdymo metu ar po jo reflektuoja (Reflection) savo veiksmus, įvertina rezultatus ir tobulina tolesnius veiksmus. Dažnai apima savikritiką, klaidų taisymą ar strategijos optimizavimą.
Diagrama:
[Veiksmas] → [Stebėti rezultatą] → [Refleksija: įvertinti, ar pavyko] → [Jei nepavyko: koreguoti strategiją] → [Vėl veikti] → ... → [Pavyko]
Kodo pavyzdys:
def reflection_agent(task):
max_attempts = 3
for attempt in range(max_attempts):
action = llm.generate_action(task)
result = execute(action)
# Refleksija
reflection = llm.reflect(task, action, result)
if reflection['success']:
return result
else:
# Koreguoti užduoties aprašymą ar strategiją pagal refleksiją
task = reflection['improved_task']
return None
Pavyzdys:
- Užduotis: „Apskaičiuoti 1234 * 5678“
- Veiksmas: tiesiogiai apskaičiuoti, gauti rezultatą 7006652
- Refleksija: patikrinti skaičiavimo procesą, rasti perkėlimo klaidą
- Koregavimas: perskaičiuoti, gauti teisingą rezultatą 7006652 (iš tikrųjų teisingas)
- Jei vis dar klaidinga, tęsti refleksiją, kol teisinga.
Apibendrinimas ir palyginimas
| Metodas | Savybės | Tinkamos situacijos |
|---|---|---|
| ReAct | Samprotavimas ir veikimas pakaitomis, dinamiškas koregavimas | Užduotys, reikalaujančios realaus laiko informacijos sąveikos (pvz., klausimai-atsakymai, paieška) |
| Plan-and-Solve | Iš pradžių planas, paskui vykdymas, struktūrizuotas skaidymas | Sudėtingos daugiažingsnės užduotys (pvz., rašymas, duomenų analizė) |
| Reflection | Savirefleksija ir taisymas, iteracinis tobulinimas | Užduotys, reikalaujančios didelio tikslumo (pvz., matematiniai skaičiavimai, kodo generavimas) |
Praktikoje šie metodai dažnai derinami, pvz., ReAct su refleksijos mechanizmu arba Plan-and-Solve, kai po kiekvieno žingsnio atliekama refleksija.
评论
暂无已展示的评论。
发表评论(匿名)