← 返回列表

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.

评论

暂无已展示的评论。

发表评论(匿名)