# Uber의 프롬프트 엔지니어링 툴킷

> Clean Markdown view of GeekNews topic #18070. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=18070](https://news.hada.io/topic?id=18070)
- GeekNews Markdown: [https://news.hada.io/topic/18070.md](https://news.hada.io/topic/18070.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2024-12-03T09:47:01+09:00
- Updated: 2024-12-03T09:47:01+09:00
- Original source: [uber.com](https://www.uber.com/en-KR/blog/introducing-the-prompt-engineering-toolkit/)
- Points: 24
- Comments: 0

## Summary

Uber는 LLM의 정확한 출력을 위해 중앙 집중식 프롬프트 엔지니어링 툴킷을 개발하여 프롬프트 템플릿 생성, 관리, 평가 및 버전 관리를 지원합니다. 프롬프트 엔지니어링 수명주기는 개발 단계와 프로덕션화 단계로 나뉘며, 각 단계에서 LLM 탐색, 프롬프트 템플릿 반복, 평가 및 모니터링을 통해 최적화된 성능을 보장합니다. 사내에서 LLM을 대규모로 이용해야 할 경우 Uber의 접근 방식을 읽어두면 도움이 될 것 입니다.

## Topic Body

- LLM의 정확하고 적합한 출력 확보를 위해서는 정교한 프롬프트 디자인이 필수적임  
- 프롬프트 디자인은 머신러닝에 익숙하지 않은 사용자도 최소한의 오버헤드로 모델 출력을 제어할 수 있게 함  
- Uber는 LLM을 빠르게 반복 실험할 수 있도록 중앙 집중식 툴킷을 개발  
  - 프롬프트 템플릿 생성 및 관리  
  - RAG 및 실행 시점의 데이터셋 활용  
- 기능:  
  - 시스템 명령, 동적 맥락화, 대량 오프라인 생성(LLM 추론), 응답 평가 지원  
  - 버전 관리, 협업, 안전성 확인(할루시네이션 체크, 표준 평가 프레임워크, 안전 정책 포함)  
  
### 프롬프트 엔지니어링 Lifecycle  
  
프롬프트 엔지니어링 수명주기는 두 단계로 구성됨:  
- **개발 단계**: LLM 탐색, 프롬프트 템플릿 반복, 평가의 3단계로 구성  
  - LLM 탐색 단계: 모델 카탈로그와 GenAI Playground를 통해 사용 가능한 LLM을 탐색하고 프롬프트로 LLM 응답을 테스트  
  - 프롬프트 템플릿 반복 단계: 구체적인 비즈니스 요구사항을 파악, 샘플 데이터 수집, 프롬프트 생성/분석/테스트, 응답 평가 및 필요에 따라 수정. Auto-prompting을 통해 처음부터 프롬프트 템플릿을 생성할 필요 없음   
  - 평가 단계: 더 큰 데이터셋으로 프롬프트 템플릿을 테스트하여 성능 측정. LLM을 판단자로 활용하거나 맞춤형 코드 기반 LLM 평가자를 사용해 성능 평가 가능  
- **프로덕션화(Productionization) 단계**: 평가 단계에서 임계값을 통과한 프롬프트 템플릿만 생산화. 프로덕션 환경에서 사용을 추적/모니터링하고 시스템 사용 데이터를 수집해 프로세스 향상에 활용  
  
### 아키텍처  
  
- 프롬프트 템플릿 UI/SDK: 프롬프트 템플릿과 리비전 관리. GetAPI, Execute API와 통합  
- LLM 모델 카탈로그: 배포된 LLM 모델과 인터페이스  
- 모델과 프롬프트는 ETCD와 UCS에 저장되고 오프라인 생성 파이프라인과 프롬프트 템플릿 평가 파이프라인에 사용됨  
  
### 프롬프트 템플릿 생성  
  
- 프롬프트 툴킷 프롬프트 빌더는 사용자를 위해 자동으로 프롬프트를 생성  
- 특정 AI 사용 사례에 맞춘 고급 프롬프팅 기술을 발견하는데 도움을 줌  
- LangChain 기반의 내부 Langfx 프레임워크 이용한 자동 프롬프트 빌더는 다음 단계를 따름  
  - 1\. 프롬프트 엔지니어링 모범 사례 통합  
  - 2\. 프롬프트 생성을 돕기 위한 템플릿 리스팅 상세 지침과 몇 가지 예제 제공  
  - 3\. 프롬프트 생성을 지원하기 위한 LLM 모델 활용  
- 고급 프롬프트 가이드라인: 프롬프트 빌더는 아래 원칙을 활용하여 프롬프트를 생성  
  - CoT(Chain of Thought) 프롬프팅: 중간 추론 단계를 통해 복잡한 추론 능력을 가능하게 함   
  - Auto-CoT: 리딩 워드 "think step by step" 사용. 수동 노력 제거를 위해 LLM에 "Let's think step by step" 프롬프트 활용  
  - 프롬프트 체이닝: 여러 작업이나 변환이 포함된 시나리오에 사용 가능  
  - ToT(Tree of Thought): Chain-of-thought 프롬프팅을 일반화하고 언어 모델로 일반 문제 해결을 위한 중간 단계로 사용될 수 있는 생각 탐색 장려  
  - APE(Automatic Prompt Engineering): 명령어 생성 및 선택 자동화 프레임워크  
  - 멀티모달 CoT 프롬프팅: 텍스트와 이미지를 2단계 프레임워크로 통합. 1단계는 멀티모달 정보 기반 근거 생성, 2단계는 생성된 근거를 활용한 답변 추론  
- 리비전 관리   
  - 프롬프트 템플릿 반복은 코드 기반 반복 모범 사례를 따름  
  - 테스트 응답 및 데이터셋으로 테스트하기 위해 사용자는 명령어와 모델 매개변수를 수정할 수 있음  
  - 프롬프트 템플릿의 각 반복마다 코드 검토가 필요함. 승인되고 합쳐지면, 새로운 프롬프트 템플릿 리비전이 생성됨  
  
### 프롬프트 템플릿 평가  
  
프롬프트 템플릿의 성능을 평가하기 위해 여러 컴포넌트가 협력함:  
- 두가지 평가 메커니즘   
  - LLM을 평가자로 사용. 주관적 품질이나 언어적 뉘앙스가 중요한 작업에 유용함   
  - 맞춤형 사용자 정의 코드를 사용하여 성능 평가. 성능의 특정 측면을 측정하는데 유용함  
- 평가 프롬프트 템플릿: 평가를 위한 명령어, 간단한 예제, 지표, 응답 형식 등을 제공하는 사용자 친화적 템플릿   
- 실제 프롬프트 템플릿: 생산 시 사용되는 템플릿. 런타임에 하이드레이션되며 성능 평가에 사용됨  
- 입력 데이터셋 옵션: 라벨링된 골든 데이터셋 또는 생산 트래픽에서 파생된 데이터셋   
- 각 템플릿은 특정 명령어, 컨텍스트, 관련 모델 및 매개변수를 고려하여 평가됨  
  
### Uber에서의 사용 사례  
  
#### 오프라인 LLM 서비스  
  
LLM 배치 오프라인 생성 파이프라인은 대규모 LLM 응답 생성을 위한 배치 추론을 용이하게 함:  
- 소비자 사용자명 검증 사용 사례에 활용 가능   
- MA Studio에서는 관련 데이터셋을 선택하고 입력하기만 하면 됨  
- 프롬프트 템플릿은 데이터셋으로 동적으로 하이드레이션됨  
  
#### 온라인 LLM 서비스  
  
프롬프트 템플릿에는 런타임 특정 값으로 대체되어야 하는 동적 플레이스홀더가 포함됨:  
- 현재 Jinja 기반 템플릿 구문을 사용하여 문자열 유형의 대체만 지원함  
- 프롬프트, 템플릿 및 모델 간 팬아웃(fan-out) 기능 지원  
  - 템플릿: API 템플릿에는 일반 데이터 모델에서 노출한 페이로드를 공급업체별 API 구조로 포맷하는 기능 포함  
  - 프롬프트 및 모델: 프롬프트는 특정 모델 및 템플릿에 고정됨. 서비스는 프롬프트를 가져오고 필요한 모델 및 템플릿 매개변수로 genAI API를 호출하여 실행함  
  
요약 사용 사례로 위 기능 탐색:  
- 지원 티켓(contact)을 여러 상담원이 처리할 수 있는 시나리오에서 새 상담원은 컨텍스트 이해를 위해 티켓을 살펴보거나 고객에게 문제 재설명을 요청해야 함  
- 상담원 간 인계시 요약본을 제공하여 이를 해결함  
  
### 모니터링  
  
모니터링은 생산에 사용되는 생산 프롬프트 템플릿의 성능을 측정함:  
- 일일 성능 모니터링 파이프라인이 생산 트래픽에 대한 성능 평가 실행  
- 지연 시간, 정확도, 정확성 등 프롬프트 템플릿 생산 반복별 지표 모니터링   
- MES 대시보드는 성능 모니터링 지표로 매일 새로 고침됨  
  
### 결론   
  
Uber의 프롬프트 엔지니어링 툴킷은 개발 및 생산의 다양한 단계에서 LLM과의 상호작용 및 활용을 향상시키기 위한 포괄적인 프레임워크:  
- Gen AI Playground에서 LLM 기능 최초 탐색부터 상세 프롬프트 템플릿 반복 및 생성까지 지원  
- 툴킷의 아키텍처는 고급 가이드라인 기술과 견고한 평가 방법을 통합하는 프롬프트 디자인에 체계적인 접근 방식을 제공함  
- 프롬프트 템플릿의 개발부터 생산 사용 및 모니터링까지의 구조화된 수명주기는 각 템플릿이 엄격하게 테스트되고 성능을 위해 최적화되도록 보장함  
- 향후 온라인 평가 및 평가용 RAG와 오프라인 생성용 RAG와 통합할 계획임

## Comments



_No public comments on this page._
