이 글은 Flow Engineering is all you need 포스팅을 보고 정리한 글입니다.


기존 Prompt Engineering 에서 LLM 이 Reasoning 을 잘하도록 하는 방법은 대표적으로 CoT(Chain of Thought) 가 있다:

  • https://arxiv.org/pdf/2201.11903
  • 그리고 Zero shot Chain of Thought 방법으로 "Let’s think step-by-step” 라는 문구를 넣는 것만으로도 훨씬 결과를 더 잘 낼 수도 있음.

 

여기서 다루는 글은 기존의 Promt Engineering 으로 인해서 직접적으로 답을 얻는 방식이 아니라 여러 Flow 를 거쳐서 답을 얻는 방식이 더 LLM 이 답변을 잘 할 수 있다는 내용임. 

 

AlphaCodum paper 에서는 Prompt Engineering 에서 Flow Engineering 으로 변환시키는 것만으로도 성능이 많이 좋아졌다고 함.

 

이 논문에서는 Code Generation 분야에서 Flow Engineering 으로 했을 때 LLM 의 성능이 더 좋아진다는 내용임. 

 

다음 이미지와 같이 LLM 은 Two-phase 로, 그리고 각 Phase 내에서는 여러 Flow 로 나눠져서 작업이 처리됨. 

 

정리하면 다음과 같음.

  • Preprocessing Phase:
    • Problem Reflection: 문제에 대해서 정의하고 설명하고, 목표, Input 이 주어졌을 때 Output 으로는 어떻게 출력되어야 하는지, Rules, Constraints 등에 대해서 생각해보는 단계
    • Public Test Reasoning: 공개된 테스트가 있다면 왜 Input 이 주어졌을 때 Output 이 나오는지 설명을 해보는 단계
    • Generate possible solution: 문제를 해결하기 위해서 2~3개의 해답을 생각해보는 단계 (자연어로)
    • Rank solutions: 가능한 솔루션에 대해서 Ranking 을 매겨보는 단계. 랭킹 기준은 correctness, simplicity, robustness 가 있음,
    • Generate additional AI tests: 추가적으로 AI 를 통해서 6-8개의 다양한 테스트를 생성해보는 단계
  • Code Iteration Phase
    • Initial code solution: 문제를 해결하는 초기 코드를 생성해 나가는 단계. 다음 과정들을 반복하면서 코드를 개선함.
    • Iterate on public tests: 공개된 테스트 통과할 때까지 반복적으로 코드 개선
    • Iterate on AI-generated Tests: AI 가 생성한 테스트를 통과할 때까지 반복적으로 코드 개선

 

이런 플로우 방식으로 그리고 반복적으로 작업을 했을 때 다음 이미지에서 보이는대로 훨씬 코드 생성 정확도가 높아진다고 함.

 

그리고 다음과 같은 논문을 보면 LLM 이 많은 Step 을 줬을 때 훨씬 성능적으로 더 잘 대답한다고도 함.

 

정리하자면 multi-step/multi turn processes with multiple prompts 방식이 훨씬 LLM 의 성능을 높일 수 있다는 것.

 

하지만 이 방법에서 고려해야 할 점은 intermediate steps 에서의 제어임. 잘못된 처리 방식으로 갔을 때 사람이 도와줄 수 있는지. (Human-in-the loop)

 

이러한 논문의 결과로 인해서 Controllable, Iterative Agent Workflow 시스템이 계속적으로 등장하고 있음. 대표적으로 LangGraph. CrewAI, Autogen

 

 

'Prompt Engineering' 카테고리의 다른 글

Prompt Engineering with Llama 2 & 3  (0) 2024.06.19
Prompt Engineering 방법  (0) 2024.06.08
Prompt Engineering 이란?  (0) 2024.06.04

+ Recent posts