← 返回列表

AI-sarjan haastattelukysymys 6: Kolme keskeistä AI Agent -menetelmää: ReAct, Plan-and-Solve ja Reflection

AI Agentin kolme keskeistä menetelmää: ReAct, Plan-and-Solve ja Reflection

AI Agent on älykäs olio, joka pystyy itsenäisesti havaitsemaan ympäristöä, tekemään päätöksiä ja suorittamaan toimintoja. Sen keskeisiä menetelmiä on kolme: ReAct, Plan-and-Solve ja Reflection. Alla esitellään ne ja havainnollistetaan vuokaavioilla ja koodiesimerkeillä.

1. ReAct (Reasoning + Acting)

Keskeinen idea: Päättely (Reasoning) ja toiminta (Acting) vuorottelevat. Agentti miettii ensin nykytilaa ja seuraavaa askelta (päättely), suorittaa sitten toiminnon (kuten työkalun kutsuminen tai tiedon haku), ja jatkaa päättelyä tuloksen perusteella.

Vuokaavio:

[Alkutila] → [Päättely: mieti seuraava askel] → [Toiminta: suorita toiminto] → [Tarkkaile tulosta] → [Päättely: päivitä suunnitelma] → ... → [Lopullinen vastaus]

Esimerkkikoodi (pseudokoodi):

def react_agent(question):
    context = []
    while not solved:
        # Päättely: luo ajatusaskel
        thought = llm.generate_thought(question, context)
        # Toiminta: valitse toiminto ajatuksen perusteella
        action = llm.choose_action(thought)
        # Suorita toiminto, saa havainto
        observation = execute_action(action)
        # Lisää ajatus, toiminto ja havainto kontekstiin
        context.append((thought, action, observation))
    return final_answer

Esimerkki:
- Käyttäjä kysyy: "Millainen sää Pekingissä on tänään?"
- Agentti päättely: "Minun täytyy hakea säätietoja API:sta, tarvitsen kaupungin nimen ja päivämäärän."
- Toiminta: Kutsu sää-API:a (parametrit: Peking, tänään)
- Havainto: Palauttaa "Selkeää, 25°C"
- Päättely: "Tieto on saatu, voin vastata."
- Tuloste: "Pekingissä on tänään selkeää, 25°C."

2. Plan-and-Solve

Keskeinen idea: Laadi ensin täydellinen suunnitelma (Plan), sitten toteuta se askel askeleelta (Solve). Suunnitteluvaiheessa monimutkainen tehtävä jaetaan osavaiheisiin, toteutusvaiheessa ne suoritetaan järjestyksessä, ja suunnitelmaa voidaan muokata välitulosten perusteella.

Vuokaavio:

[Tehtävä] → [Laadi suunnitelma: jaa osavaiheisiin] → [Suorita vaihe 1] → [Suorita vaihe 2] → ... → [Suorita vaihe N] → [Lopullinen vastaus]

Esimerkkikoodi:

def plan_and_solve(task):
    # Suunnitteluvaihe
    plan = llm.generate_plan(task)  # Esim. ["Hae tietoja", "Järjestä tiedot", "Kirjoita raportti"]
    context = {}
    for step in plan:
        # Suorita jokainen vaihe
        result = execute_step(step, context)
        context[step] = result
    # Yhdistä tulokset
    final = llm.synthesize(context)
    return final

Esimerkki:
- Tehtävä: "Kirjoita blogi AI Agentista"
- Suunnitelma:
1. Hae AI Agentin määritelmä ja viimeisimmät edistysaskeleet
2. Lue ja järjestä keskeiset kohdat
3. Kirjoita blogin runko
4. Täytä sisältö
5. Oikolue ja julkaise
- Toteutus: Suorita jokainen vaihe järjestyksessä, lopuksi tulosta blogi.

3. Reflection

Keskeinen idea: Agentti reflektoi omaa toimintaansa suorituksen aikana tai sen jälkeen, arvioi tuloksia ja parantaa tulevia toimintoja. Usein sisältää itsekritiikkiä, virheiden korjausta tai strategian optimointia.

Vuokaavio:

[Toiminta] → [Tarkkaile tulosta] → [Reflektoi: arvioi onnistuminen] → [Jos epäonnistui: säädä strategiaa] → [Toimi uudelleen] → ... → [Onnistuminen]

Esimerkkikoodi:

def reflection_agent(task):
    max_attempts = 3
    for attempt in range(max_attempts):
        action = llm.generate_action(task)
        result = execute(action)
        # Reflektoi
        reflection = llm.reflect(task, action, result)
        if reflection['success']:
            return result
        else:
            # Säädä tehtävän kuvausta tai strategiaa reflektion perusteella
            task = reflection['improved_task']
    return None

Esimerkki:
- Tehtävä: "Laske 1234 * 5678"
- Toiminta: Laske suoraan, tulos 7006652
- Reflektio: Tarkista laskuprosessi, huomaa siirto-ongelma
- Säätö: Laske uudelleen, oikea tulos 7006652 (itse asiassa oikein)
- Jos edelleen virhe, jatka reflektointia kunnes oikein.

Yhteenveto ja vertailu

Menetelmä Ominaisuus Soveltuvuus
ReAct Päättely ja toiminta vuorottelevat, dynaaminen säätö Tehtävät, jotka vaativat reaaliaikaista tiedonvaihtoa (esim. kysymys-vastaus, haku)
Plan-and-Solve Ensin suunnitelma, sitten toteutus, jäsennelty jako Monimutkaiset monivaiheiset tehtävät (esim. kirjoittaminen, data-analyysi)
Reflection Itsearviointi ja korjaus, iteratiivinen optimointi Tehtävät, jotka vaativat korkeaa tarkkuutta (esim. matemaattiset laskut, koodin generointi)

Käytännössä menetelmiä yhdistetään usein, esim. ReActiin lisätään reflektiomekanismi, tai Plan-and-Solve-menetelmässä jokaisen vaiheen jälkeen reflektoidaan.

评论

暂无已展示的评论。

发表评论(匿名)