1. 프롬프트 엔지니어링의 중요성과 역할 [1]

thumbnail 프롬프트 엔지니어링은 AI 모델의 한계를 극복하고 성능을 극대화하며, 비용 효율성을 높이는 핵심적인 역할을 한다.

1.1. 프롬프트 엔지니어링의 정의 및 중요성 [1]

  1. 프롬프트 엔지니어링은 AI와의 소통 도구이자 경험의 과학이다. [20]
    1. 프롬프트는 AI와 소통하는 도구이며, 어떻게 사용하느냐에 따라 결과물의 경험적 차이를 만들어낸다. [20]
  2. 프롬프트는 한 줄만으로도 마법 같은 결과를 만들어낼 수 있다. [22]
    1. 골든 리트리버가 베이킹하는 영상이나 물방울이 떨어지는 중력의 순간을 포착한 영상처럼, 간단한 명령문으로 현실 세계를 시뮬레이션하는 동작을 만들 수 있다. [23]
  3. 생성형 AI 시대에 프롬프트는 미션 크리티컬한 요소가 되었다. [32]
    1. AI 도구가 많아지고 LLM(거대 언어 모델)이 보편화되면서, 프롬프트는 우리의 삶을 변화시키는 중요한 역할을 한다. [32]
  4. 프롬프트 엔지니어링은 다양한 산업군에서 변화를 이끌고 있다. [35]
    1. 깃허브 코파일럿은 개발 속도와 생산성을 향상시키고, 교육 분야에서는 개인 맞춤형 학습을 가능하게 하며, 창의성과 혁신을 촉진한다. [35]
    2. 기술, 소프트웨어 개발, 교육, 이커머스, 마케팅, 금융 등 다양한 산업에서 프롬프트 엔지니어링을 접목하여 AI 서비스를 구현하고 업무 자동화 및 생산성 극대화를 추구한다. [37]

1.2. 프롬프트 엔지니어의 주요 업무 [55]

  1. 프롬프트 제작 및 테스트: 프롬프트를 만들고 무한 반복 테스트를 통해 최적화한다. [65]
    1. 프롬프트 단에서 파인 튜닝(미세 조정)을 통해 LLM의 파라미터를 조정한다. [67]
  2. 이밸류에이션 및 안정화: 테스트와 평가를 통해 안정적인 프로덕션 레벨의 결과값을 도출한다. [68]
    1. 정량화 테스트를 통해 수백만, 수천만 대상의 서비스를 만들어낸다. [69]
  3. 윤리적 AI를 위한 가이드라인 설정: 필터링 및 가드레일 설정을 통해 윤리적인 AI 사용을 지원한다. [69]
  4. 모든 과정은 유기적으로 연결되어 있다: 프롬프트 제작, 테스트, 평가, 윤리 가이드라인 설정은 독립적이지 않고 서로 연결되어 있다. [69]

1.3. 프롬프트 엔지니어링 성공 사례 [71]

  1. 의료 분야 (구글 팜투 모델): 환자의 개인적인 의료 진료 질문에 답하는 대화형 챗봇을 설계하여 네이처지에 게재되었다. [72]
  2. 금융 분야 (모건 스탠리 어시스턴트): 리스크 분석 및 사기 탐지를 위한 필터링에 프롬프트를 활용하여 성공했으며, 직원의 98%가 이 어시스턴트를 사용한다. [77]
  3. 마케팅 분야 (코카콜라): 생성형 AI를 활용하여 코카콜라 관련 마케팅 영상을 제작, 엄청난 브랜딩 효과를 보았다. [80]
  4. 교육 분야 (칸 아카데미 카미고): 학습자의 선호도를 파악하여 개인 맞춤형 대화를 설계하는 AI 튜터를 통해 성공적인 학습 경험을 제공한다. [84]

2. 프롬프트 엔지니어링을 통한 LLM 한계 극복 사례 [88]

thumbnail 프롬프트 엔지니어링은 LLM의 명확성(Clarity), 문맥(Context), 일관성(Consistency)이라는 세 가지 주요 한계를 극복하는 데 핵심적인 역할을 한다.

2.1. 명확성(Clarity) 문제 해결 [91]

  1. LLM의 명확성 부족 문제: LLM은 말을 잘하지만 명확하지 않고, 발산은 잘하지만 수렴하지 못하는 경향이 있다. [105]
    1. 개발자들은 자연어로 기능을 만들 때 명확성 부족으로 어려움을 겪는다. [109]
  2. 사용자 의도(User Intent) 분석을 통한 명확성 확보: 사용자의 의도를 정확하게 파악하여 명확한 결과물을 도출한다. [110]
    1. 대화 분석 전공 지식 활용: 화자가 무엇을 하는지에 대한 행위 분석(액트 애널리시스)을 통해 사용자의 언어를 세 가지 레이어(텍스트, 맥락, 문화)로 분석한다. [120]
    2. 대화 턴 분석: 사용자의 프롬프트가 단일 턴(싱글 턴)인지, 여러 턴(멀티 턴)으로 이어지는지 분석하여 대화 메커니즘을 이해한다. [128]
    3. 액션 분석: 프롬프트에 담긴 사용자의 행위(정보 검색, 코드 수정 등)를 파악한다. [130]
    4. 구조 분석: AI 답변에 대한 사용자의 만족도(선호/비선호)를 통해 대화 구조를 파악한다. [135]
    5. 스탠스 분석: AI 사용 시 사용자가 갖는 입장(페르소나)을 분석한다. [137]
    6. 생성형 AI 이용자 세그멘테이션: 위 분석을 통해 이용자가 프롬프트를 어떻게 쓰고, 어떤 행동을 하며, 무엇을 원하는지 완벽하게 분석할 수 있다. [143]
  3. 액션 포메이션과 액션 디스크립션 활용: 한국 사용자처럼 짧고 무뚝뚝한 프롬프트의 의도를 분석하기 위해 사용한다. [146]
    1. 액션 포메이션: 프롬프트를 통해 사용자가 하고자 하는 행위를 나타낸다. [152]
    2. 액션 디스크립션: 텍스트 이면에 숨은 의도를 설명한다. [152]
    3. 예시: "주식 동향"이라는 짧은 프롬프트에 액션 포메이션과 디스크립션을 적용하여 미싱 인포메이션을 채우고 더 다채롭게 분석한다. [153]
  4. 메타 프롬프트 활용: LLM이 직접 필요한 프롬프트를 써주는 컨셉으로, 사용자 의도 분석이 핵심이다. [155]
    1. 클로드 엔트로픽의 프롬프트 제너레이터: 긴 메타 프롬프트가 생성되지만, 사용자 인텐트가 틀리면 답변이 쓸모없을 수 있다. [160]
    2. 서비스 사례: 사용자가 대충 써도 의도를 캐치하여 좋은 답변을 받게 하는 서비스(비용 문제로 철회)를 시도했다. [167]
    3. 시스템 프롬프트 활용: 1차 호출에서 사용자 의도를 정확하게 추출한 후 답변하게 하여 사용자 커리를 개선한다. [171]
    4. 프롬프트 예시: "목디스크 전조 증상" 질문에 심리학자 역할을 부여하고 GPT 3.5 터보 모델을 사용하여 상세한 답변을 유도한다. [177]
  5. 페르소나 AI의 캐릭터 붕괴(캐붕) 문제 해결: 페르소나 AI가 맥락을 잃어버리는 현상을 해결한다. [192]
    1. 사용자 의도 분리: 사용자가 페르소나(예: 변호사)에게 질문할 때, 페르소나 세계관, 일상 대화, 정보 검색 등 다양한 행위를 인텐트를 통해 분리한다. [201]
    2. 의도 분석 결과 카테고리화: 대화 내용과 함께 의도 분석 결과를 번호로 표시하여 정확한 의도 분석과 맞춤형 대화를 제공한다. [204]
    3. 데이터 처리 및 마케팅 활용: 카테고리화된 데이터는 처리하기 용이하며, 마케팅 광고를 붙이는 데도 효과적이다. [208]
    4. 수도 코드 형태의 프롬프트: 사용자 의도 추출 및 대화 마무리를 위한 액티브한 챗봇을 만들기 위해 컴퓨터 언어스러운 프롬프트를 사용한다. [210]

2.2. 문맥(Context) 문제 해결 [220]

  1. LLM의 문맥 유지 한계: 긴 문서를 읽을 때 앞뒤만 기억하고 중간 내용을 놓치는 '러스트 인 더 미들(Lost in the Middle)' 현상이 발생한다. [221]
    1. 문서 요약이나 보고서 작성 시 참조 문서 길이가 길수록 세밀함이 떨어진다. [222]
  2. 보고서 자동화 프롬프트 템플릿: 기업 보고서 작성을 자동화하는 프롬프트 템플릿을 개발했다. [224]
    1. 공공기관 문서 처리: 표 안의 표 등 복잡한 구조와 마크 기호가 많은 공공기관 문서를 정확하게 출력하는 데 어려움이 있다. [227]
    2. 코파일럿 활용: 마이크로소프트 365 코파일럿을 사용하여 휴먼 레벨의 세밀한 결과물을 얻었다. [233]
    3. 프롬프트 구조화: LLM마다 선호하는 구조(XML 태그, 명령문 위치, 기호 등)가 다르므로, '쿡북'을 참조하여 구조를 잘 잡는 것이 중요하다. [241]
    4. 상냥한 언어와 이모지 활용: 코파일럿에게 상냥한 언어와 이모지를 사용하면 결과물이 달라지는 것을 경험했다. [247]
    5. 스캐폴딩 구조: 프롬프트에 타이틀, 서브 타이틀, 하위 정보 등 위계 질서를 잡는 스캐폴딩 구조를 사용하여 LLM이 좋아하는 기호(예: 땡땡, 괄호)로 세밀한 결과물을 유도한다. [251]
  3. AI 언어 튜터 챗봇: LLM의 맥락 유지 문제를 해결하여 성공적으로 서비스 중인 보이스 페르소나 챗봇이다. [261]
    1. 문제점: 대화가 길어질수록 LLM이 맥락을 잃고 난이도 조절이 어려워진다. [263]
    2. 해결 방안: 학생의 개인 선호도에 맞춘 프롬프트를 활용하여 대화를 설계하고, 짧게 말해야 하는 상황에서도 프롬프트로 조절한다. [266]
    3. 체인 오브 탓(Chain of Thought) 기법 활용: 모델이 '느리게 사고'하도록 연상 과정을 늘려 성능을 향상시킨다. [272]
    4. 단계별 플래닝: 학생을 알아가는 단계, 단어 소개, 적응형 티칭, 대화 연습, 학습 회고의 5단계로 구성한다. [280]
    5. 기호 활용: 별표 기호(딜리미터)를 사용하여 문장과 문장 사이를 구분하고, 점선을 통해 스텝 바이 스텝 지시를 명확히 하여 맥락 유지를 돕는다. [284]

2.3. 일관성(Consistency) 문제 해결 [291]

  1. LLM의 일관성 부족 문제: 모델의 일관성이 떨어지며, 이는 명확성 및 문맥 문제와 연계된다. [293]
  2. 메모리 증폭 및 프롬프트 재사용: LLM 메모리 증폭 연구와 프롬프트 재사용(캐싱) 컨셉이 중요하다. [295]
    1. 턴 청킹(Turn Chunking): 대화 턴을 자르는 방식으로, 개발자들의 토큰 단위 분할과 달리 싱글 턴과 멀티 턴 컨셉으로 나눈다. [297]
    2. 토픽 중심의 턴 개념: 토큰 단위로 자르면 정보 손실이 발생할 수 있으므로, 토픽 중심으로 턴을 잘라 맥락을 유지하고 일관성을 확보한다. [311]
    3. 메모리 관리 및 프롬프트 평가: 잘려진 턴은 메모리 관리와 LLM 답변의 프롬프트 평가에 활용된다. [318]
  3. 멀티 에이전트와 프롬프트 플래닝: 에이전트 시대에 멀티 에이전트를 효과적으로 구축하기 위해 프롬프트 엔지니어링이 중요하다. [299]
    1. 핵심 키워드: LLM 에이전트, 오케스트레이션, 프롬프트, 에이전트 메모리 툴. [323]
    2. 프롬프트 플래닝: 각각의 작은 에이전트가 어떤 기능을 할지 프롬프트로 계획하는 것이다. [330]
    3. 탑다운 방식: 자동화는 100% 불가능하므로, 탑다운 방식으로 밑바닥부터 잘 설계해야 세밀하고 촘촘한 기능이 만들어진다. [328]
    4. 에이전트 플래닝 사례: 총 4개의 에이전트를 활용하여 데이터 분석 및 시각화를 자동화한다. [332]
      1. 서팅 에이전트: 어떤 에이전트를 사용할지 관리 감독하고 의사 결정한다. [333]
      2. 데이터 전처리 에이전트: 데이터 클리닝, 합치기, 변환 등 하위 작업을 수행한다. [335]
      3. 데이터 분석 에이전트: 통계적 분석, 상관관계 분석 등 다양한 분석 방식을 적용한다. [339]
      4. 데이터 시각화 에이전트: 분석 결과를 시각적으로 보여준다. [340]
    5. 시스템 프롬프트와 테스크 디스크립션: 각 에이전트에게 시스템 프롬프트로 명령하고 테스크에 대한 설명을 제공한다. [346]
    6. 툴 콜링(Function Calling): 필요한 툴을 직접 정의하고 디스크립션하여 LLM에게 테스크를 이해시키고, 툴 간의 오케스트레이션을 통해 자동화를 구현한다. [348]
    7. 결과물: 데이터 처리, 파인딩 생성, 데이터 시각화까지 자동으로 수행하는 에이전트를 구현할 수 있다. [353]

3. 효율성(Efficiency) 증대 및 미래 방향성 [358]

thumbnail

3.1. 효율성(Efficiency) 증대 방안 [358]

  1. 비용 절감: 프롬프트를 짧게 쓰고 LLM 호출 횟수를 줄여 비용을 절감한다. [359]
    1. 컨덴세이션(Condensation): 문장이나 단어를 압축하여 프롬프트 길이를 줄인다. [380]
    2. LLM이 많이 학습한 단어 사용: 학습 데이터의 빈도수가 높은 단어를 사용하면 더 좋은 결과(정답에 가까운)를 얻을 수 있다. [382]
    3. 싱글 워드(Single Word) 활용: 장소 추출과 같이 싱글 워드로도 충분히 좋은 결과를 얻을 수 있는 경우 활용한다. [385]
  2. LLM 퍼포먼스 극대화: 랭그래프(LangGraph)를 사용하여 LLM의 성능을 극대화한다. [364]
    1. 추론(Reasoning) 모델의 한계: 기존 추론 모델은 선형적인 구조로, 중간에 잘못된 사고 과정이 발생해도 수정이 어렵다. [389]
    2. 랭그래프의 순환 구조: 랭그래프는 순환(Circulation) 구조를 통해 각 노드를 순환하며 인간이 피드백을 주고 LLM의 잘못된 방향을 정정할 수 있다. [402]
    3. 프롬프트 최적화(Optimization): 랭그래프를 통해 프롬프트 최적화 및 평가(이밸류에이션)를 수행한다. [406]
    4. 프롬프트 분석: 유저 인텐트 분석을 통해 LLM이 생각한 것을 토큰으로 출력하게 한 후 후속 작업을 통해 결과물을 높인다. [415]
    5. 정당화(Justification): LLM에게 왜 그렇게 생각하는지 설명하게 하여 결과의 객관성을 높인다. [419]
    6. 프롬프트 고도화: 기존 프롬프트, 인간 피드백, AI 피드백의 세 단계를 거쳐 루프를 돌리며 프롬프트를 개선한다. [427]
    7. 바이너리 스코어 평가: 중간 편향을 없애기 위해 0 또는 1점의 바이너리 스코어로 프롬프트를 평가하여 객관성을 높인다. [430]
    8. 결과: 랭그래프와 프롬프트 엔지니어링을 통해 LLM의 선형적 한계를 극복하고 성능을 향상시킬 수 있다. [437]

3.2. 프롬프트 엔지니어링의 미래 방향성 [440]

  1. 프롬프트 엔지니어링의 지속적인 중요성: LLM의 발전과 함께 프롬프트 엔지니어링의 역할은 더욱 중요해질 것이다. [441]
    1. 프롬프트 엔지니어는 자연어를 통해 백엔드를 섬세하게 설계하고, 자연어의 한계를 극복하는 엔지니어링을 수행해야 한다. [444]
  2. 네 가지 핵심 과제: [446]
    1. 구조화된 프롬프팅(Structured Prompting): 다양한 LLM에 보편적으로 적용 가능한 구조를 만드는 것이 중요하다. [447]
    2. 추론/논증 모델 연구: 논증 모델의 긴 단계를 단축하여 짧은 논증만으로도 성능을 볼 수 있는 연구가 필요하다. [448]
    3. 멀티모달 프롬프트 엔지니어링: 텍스트를 넘어 영상, 피지컬 AI 등 다양한 모달리티를 위한 프롬프트 엔지니어링이 필요하다. [450]
    4. 테스크 스페시픽 프롬프트 엔지니어링: LLM이 제너럴하지만, 특정 테스크에 특화된 기법들이 중요해질 것이다. [453]
  3. 두 가지 주요 키워드: [454]
    1. 프롬프트 자동화: 사용자의 귀찮음을 해소하기 위해 프롬프트 자동화는 더욱 발전할 것이다. [455]
    2. 안전성(Safety) 및 거버넌스 강화: AI의 안전성과 거버넌스 강화는 매우 중요한 이슈이다. [456]
  4. 결론: 프롬프트 엔지니어링은 경험의 과학이며, 많이 써보고 실패하며 LLM을 이해해야 잘 활용할 수 있다. [455]