AI серия интервюта 6: Три основни методологии на AI Agent: ReAct, Plan-and-Solve и Reflection
Три основни методологии на AI Agent: ReAct, Plan-and-Solve и Reflection
AI Agent е интелигентен агент, способен самостоятелно да възприема средата, да взема решения и да изпълнява действия. Основните му методологии са три: ReAct, Plan-and-Solve и Reflection. По-долу са представени с блок-схеми и примерен код.
1. ReAct (Reasoning + Acting)
Основна идея: Редуване на разсъждение (Reasoning) и действие (Acting). Агентът на всяка стъпка първо обмисля текущото състояние и следващата стъпка (разсъждение), след което изпълнява действие (например извикване на инструмент, търсене на информация) и продължава да разсъждава въз основа на резултата.
Блок-схема:
[начално състояние] → [разсъждение: обмисляне на следваща стъпка] → [действие: изпълнение] → [наблюдение на резултата] → [разсъждение: актуализиране на плана] → ... → [краен отговор]
Примерен код (псевдокод):
def react_agent(question):
context = []
while not solved:
# разсъждение: генериране на мисловна стъпка
thought = llm.generate_thought(question, context)
# действие: избор на действие въз основа на мисълта
action = llm.choose_action(thought)
# изпълнение на действието, получаване на наблюдение
observation = execute_action(action)
# добавяне на мисъл, действие и наблюдение в контекста
context.append((thought, action, observation))
return final_answer
Пример:
- Потребител пита: "Какво е времето днес в Пекин?"
- Агентът разсъждава: "Трябва да потърся API за времето, нужни са град и дата."
- Действие: извикване на API за времето (параметри: Пекин, днес)
- Наблюдение: връща "слънчево, 25°C"
- Разсъждение: "Имам информация, мога да отговоря."
- Изход: "Днес в Пекин е слънчево, 25°C."
2. Plan-and-Solve
Основна идея: Първо се изготвя пълен план (Plan), след което се изпълнява стъпка по стъпка (Solve). В етапа на планиране сложната задача се разделя на подстъпки, а в етапа на изпълнение се изпълняват последователно, като планът може да се коригира въз основа на междинни резултати.
Блок-схема:
[задача] → [изготвяне на план: разделяне на подстъпки] → [изпълнение на стъпка 1] → [изпълнение на стъпка 2] → ... → [изпълнение на стъпка N] → [краен отговор]
Примерен код:
def plan_and_solve(task):
# етап на планиране
plan = llm.generate_plan(task) # например: ["търсене на информация", "организиране на данни", "написване на доклад"]
context = {}
for step in plan:
# изпълнение на всяка стъпка
result = execute_step(step, context)
context[step] = result
# обобщаване на резултатите
final = llm.synthesize(context)
return final
Пример:
- Задача: "Напиши блог за AI Agent"
- План:
1. Търсене на определение и последни новости за AI Agent
2. Прочитане и организиране на ключови точки
3. Изготвяне на структура на блога
4. Попълване на съдържанието
5. Редактиране и публикуване
- Изпълнение: последователно изпълнение на всяка стъпка, накрая се получава блог.
3. Reflection
Основна идея: Агентът по време или след изпълнение на действието прави саморефлексия (Reflection), оценява резултата и подобрява следващите действия. Обикновено включва самокритика, коригиране на грешки или оптимизация на стратегията.
Блок-схема:
[действие] → [наблюдение на резултата] → [рефлексия: оценка дали е успешно] → [ако неуспех: коригиране на стратегията] → [ново действие] → ... → [успех]
Примерен код:
def reflection_agent(task):
max_attempts = 3
for attempt in range(max_attempts):
action = llm.generate_action(task)
result = execute(action)
# рефлексия
reflection = llm.reflect(task, action, result)
if reflection['success']:
return result
else:
# коригиране на описанието на задачата или стратегията въз основа на рефлексията
task = reflection['improved_task']
return None
Пример:
- Задача: "Пресметни 1234 * 5678"
- Действие: директно изчисление, резултат 7006652
- Рефлексия: проверка на процеса, откриване на грешка при пренасяне
- Коригиране: повторно изчисление, получаване на правилен резултат 7006652 (всъщност правилен)
- Ако все още грешно, продължава рефлексия до правилен резултат.
Обобщение и сравнение
| Методология | Характеристики | Подходящи сценарии |
|---|---|---|
| ReAct | Редуване на разсъждение и действие, динамично адаптиране | Задачи, изискващи взаимодействие в реално време (напр. въпроси-отговори, търсене) |
| Plan-and-Solve | Първо планиране, после изпълнение, структурирано разделяне | Сложни многостъпкови задачи (напр. писане, анализ на данни) |
| Reflection | Саморефлексия и корекция, итеративно оптимизиране | Задачи, изискващи висока точност (напр. математически изчисления, генериране на код) |
В реални приложения често се комбинират, например добавяне на механизъм за рефлексия в ReAct или рефлексия след всяка стъпка в Plan-and-Solve.
评论
暂无已展示的评论。
发表评论(匿名)