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.
评论
暂无已展示的评论。
发表评论(匿名)