AI-seeria intervjuuküsimus 6: AI Agendi kolm põhimeetodit: ReAct, Plan-and-Solve ja Reflection
AI Agendi kolm põhimeetodit: ReAct, Plan-and-Solve ja Reflection
AI Agent on intelligentne agent, mis suudab iseseisvalt tajuda keskkonda, teha otsuseid ja sooritada toiminguid. Selle kolm peamist meetodit on ReAct, Plan-and-Solve ja Reflection. Allpool tutvustame neid koos vooskeemide ja koodinäidetega.
1. ReAct (Reasoning + Acting)
Põhiidee: Põimida arutlemine (Reasoning) ja tegutsemine (Acting). Agent mõtleb igal sammul kõigepealt praegusele olukorrale ja järgmisele plaanile (arutlemine), seejärel sooritab tegevuse (nt tööriista kutsumine, teabe otsimine) ja jätkab arutlemist tulemuste põhjal.
Vooskeem:
[Algolek] → [Arutlemine: järgmise sammu mõtlemine] → [Tegutsemine: tegevuse sooritamine] → [Tulemuse vaatlemine] → [Arutlemine: plaani uuendamine] → ... → [Lõplik vastus]
Näidiskood (pseudokood):
def react_agent(question):
context = []
while not solved:
# Arutlemine: genereeri mõttesamm
thought = llm.generate_thought(question, context)
# Tegutsemine: vali tegevus mõtte põhjal
action = llm.choose_action(thought)
# Soorita tegevus, saa vaatlus
observation = execute_action(action)
# Lisa mõte, tegevus ja vaatlus konteksti
context.append((thought, action, observation))
return final_answer
Näide:
- Kasutaja küsib: "Milline on täna Pekingi ilm?"
- Agent arutleb: "Pean pärima ilma API-st, vajan linna nime ja kuupäeva."
- Tegutsemine: kutsu ilma API (parameetrid: Peking, täna)
- Vaatlus: tagastab "Päikeseline, 25°C"
- Arutlemine: "Sain info, võin vastata."
- Väljund: "Pekingis on täna päikeseline, 25°C."
2. Plan-and-Solve
Põhiidee: Koosta kõigepealt täielik plaan (Plan), seejärel täida see samm-sammult (Solve). Planeerimisfaasis jaotatakse keeruline ülesanne alamülesanneteks, täitmisfaasis sooritatakse need järjest, vajadusel kohandades plaani vahetulemuste põhjal.
Vooskeem:
[Ülesanne] → [Plaani koostamine: alamülesannete jaotamine] → [Sammu 1 täitmine] → [Sammu 2 täitmine] → ... → [Sammu N täitmine] → [Lõplik vastus]
Näidiskood:
def plan_and_solve(task):
# Planeerimisfaas
plan = llm.generate_plan(task) # nt: ["Otsi materjale", "Korrasta info", "Kirjuta aruanne"]
context = {}
for step in plan:
# Täida iga samm
result = execute_step(step, context)
context[step] = result
# Sünteesi tulemused
final = llm.synthesize(context)
return final
Näide:
- Ülesanne: "Kirjuta blogipostitus AI Agenti kohta"
- Plaan:
1. Otsi AI Agendi definitsioon ja uusimad arengud
2. Loe ja korrasta põhipunktid
3. Kirjuta blogi kava
4. Täida sisu
5. Toimeta ja avalda
- Täitmine: soorita iga samm järjest, lõpuks väljasta blogi.
3. Reflection
Põhiidee: Agent reflekteerib (Reflection) oma käitumist tegevuse ajal või pärast seda, hinnates tulemusi ja parandades edasisi tegevusi. See hõlmab enesekriitikat, vigade parandamist või strateegia optimeerimist.
Vooskeem:
[Tegevus] → [Tulemuse vaatlemine] → [Refleksioon: edu hindamine] → [Kui ebaõnnestus: strateegia kohandamine] → [Uuesti tegutsemine] → ... → [Edu]
Näidiskood:
def reflection_agent(task):
max_attempts = 3
for attempt in range(max_attempts):
action = llm.generate_action(task)
result = execute(action)
# Refleksioon
reflection = llm.reflect(task, action, result)
if reflection['success']:
return result
else:
# Kohanda ülesande kirjeldust või strateegiat refleksiooni põhjal
task = reflection['improved_task']
return None
Näide:
- Ülesanne: "Arvuta 1234 * 5678"
- Tegevus: otsene arvutus, tulemus 7006652
- Refleksioon: kontrolli arvutuskäiku, leia ülekandeviga
- Kohandamine: arvuta uuesti, saad õige tulemuse 7006652 (tegelikult õige)
- Kui endiselt vale, jätka refleksiooni kuni õige tulemuseni.
Kokkuvõttev võrdlus
| Meetod | Omadused | Sobivad stsenaariumid |
|---|---|---|
| ReAct | Arutlemine ja tegutsemine põimuvad, dünaamiline kohandamine | Reaalajas infovahetust nõudvad ülesanded (nt küsimused, otsing) |
| Plan-and-Solve | Kõigepealt plaan, siis täitmine, struktureeritud jaotamine | Keerulised mitmeastmelised ülesanded (nt kirjutamine, andmeanalüüs) |
| Reflection | Eneserefleksioon ja parandamine, iteratiivne optimeerimine | Suurt täpsust nõudvad ülesanded (nt matemaatika, koodi genereerimine) |
Praktikas kombineeritakse neid sageli, näiteks lisatakse ReAct'ile refleksioonimehhanism või reflekteeritakse Plan-and-Solve'i iga sammu järel.
评论
暂无已展示的评论。
发表评论(匿名)