본문 바로가기

프로그래밍/AI

[Agent] ReAct (Agent Prompt format)

AI 에이전트(Agent)는 사용자의 목표를 이해하고, 스스로 계획을 세우며, 다양한 도구를 활용해 자율적으로 작업을 수행하는 지능형 소프트웨어 시스템이다. 랭체인에서는 ReAct 구조와 Plan-and-Solve 구조로 작동하거나, Function Calling으로 작동하는 Agent를 지원한다. 이 글에서는 ReAct 구조의 Agent를 설명한다. 

 

AI Agent
  • RetrievalQA(Chain)에서는 Vector Store를 검색하고 검색 결과를 바탕으로 LLM이 응답 -> 고정된 처리 흐름
    • OpenAPIEndPointChain : 랭체인에서 LLM의 응답을 기반으로 API를 호출하는 Chain 
    • SQLDatabaseChain : 랭체인에서 LLM의 응답을 기반으로  SQL을 실행하는 Chain
  • Agent(Langchain)은 어떤 처리를 할 것인지 LLM이 선택해서 움직여주기를 원하는 경우 -> 유연한 처리 흐름
    • 필요에 따라 다양한 도구(검색, API 사용)를 사용하면서 LLM을 작동시킴. 
    • ex) 사내 문서를 Vector Store에서 검색하거나 웹상의 정보를 검색하여 답변
ReAct :: Synergizing Reasoning and Acting in Language Models
https://arxiv.org/abs/2210.03629
  • LLM의 프롬프트가 따라야 할 형식(ReAct 구조) 
    • 'Action'을 써서 액션을 지정한다. 
    • 'Action Input'을 써서 액션 입력을 지정한다. 
  • 랭체인의 Agent 작동 과정
    1. ReAct 구조에 맞춰 LLM에게 특정 명령을 지시한다. -> LLM 첫 번째 실행
    2. LLM의 응답 문자열에서 Action과 Action Input의 내용을 정규식으로 추출한다. 
    3. 그리고 Action 의 도구를 실제로 실행한다. (실제 개발 환경에서)
    4. 원래의 프롬프트에 LLM의 응답과 액션 실행 결과를 추가한 프롬프트를 생성한다. 
    5. 이 프롬프트에 대해 LLM은 최종 답변을 반환한다. -> LLM 두 번째 실행
ReAct(Reasoning Acting) 구조
Answer the following questions as best you can. You have access to the following tools:

{tools}

Use the following format:

Question: the input question you must answer
Thought: you should always think about what to do
Action: the action to take, should be one of [{tool_names}]
Action Input: the input to the action
Observation: the result of the action
... (this Thought/Action/Action Input/Observation can repeat N times)
Thought: I now know the final answer
Final Answer: the final answer to the original input question

Begin!

Question: {input}
Thought: {agent_scratchpad}
  • 목적 : LLM의 지시와 응답에 대한 포멧을 제공하는 것
  • 주요 입력값 (이 변수들을 제외하고는 나머지는 Template 그대로 사용) 
    • {tools} : 에이전트가 사용할 수 있는 도구들의 이름과 상세 사용 설명서가 들어가는 자리 
      • 랭체인 제공 Tools : Terminal, Wikipedia, google_search, python_REPL
    • {input} : 사용자가 입력한 원래 질문(최종 목적지)이 그대로 고정되어 들어가는 자리 
    • {agent_scratchpad} :
      • 답변을 내기 까지의 모든 중간과정(생각, 행동, 결과)이 누적되어 기록되는 자리
      • LLM의 답변이 반복되어 실행될 때 내용이 계속해서 추가되는 곳
  • 주요 요소 설명
    • Thought : 모델이 문제를 해결하기 위해 현재 단계에서 무엇을 해야 할지 추론하는 단계 
    • Action : 정의된 도구({tool_names}) 중에서 어떤 것을 사용할지 결정(Function) 
    • Action Input : 선택한 도구에 전달할 구체적인 입력값(Arguments) 
    • Observation : 도구를 실행한 후 얻은 결과값 -> 다음 Thought의 근거가 됨 
    • Final Answer : 모든 추론과 행동이 끝난 후 사용자에게 전달할 최종 답변

---------------------------------------------------

참고 : LLM 기반 AI 앱 개발 (요시다 신고 외 1명, 위키북스) 

---------------------------------------------------

'프로그래밍 > AI' 카테고리의 다른 글

[Search] Tavily API (*Domain Control*)  (0) 2026.01.08
[Agent] LCEL(a.k.a. Langchain pattern)  (0) 2025.12.28
[Agent] LangChain for AI agent (Intro)  (0) 2025.12.16
[Agent] In-Context Learning (feat. prompt)  (0) 2025.12.16
[DB] MongoDB Atlas  (0) 2025.12.13