[AI] Prompt Engineering으로 AI 모델 제어하기
AI가 많은 인기를 끌고 있는 만큼 이를 활용할 수 있는 개발자가 되고 싶어서 AI 스터디에 들어갔다.
스터디에서 AI의 Prompt Engineering에 대해 알아보고 이를 통해 AI 모델을 제어하는 과제를 수행하여 그 과정을 기록하고자 한다.
Prompt Engineering
Prompt Engineering이란 다양한 애플리케이션과 연구 주제에 언어 모델(LM)을 효율적으로 사용할 수 있도록 프롬프트를 개발하고 최적화하는 분야를 의미한다.
즉, AI 모델을 원하는 형태로 제어하는 것이다.
몇 가지 파라미터의 설정만으로도 AI 모델을 제어할 수 있다.
- max_tokens: 모델이 생성하는 토큰의 최댓값이다.
- temperature: 창의성을 제어한다. 낮은 temperature일수록 사실적이고 간결한 응답을 얻을 수 있다. 높은 temperature일수록 다양하고 창조적인 결과를 촉진한다.
- top_p: 단어의 다양성을 조절한다. 마찬가지로 사실적인 응답을 원한다면 낮은 top_p를 설정하면 된다.
- frequency_penalty: 단어의 반복을 방지한다.
- stop: 모델이 멈춰야 할 때를 정의한다.
AI 모델 제어
이제부터 직접 코드로 제어하는 방법을 알아보도록 하자.
아래는 과제 명세서이다.
필자는 해당 과제를 Google Colab에서 진행했다.
[과제 명세] Gemini API를 이용한 PDF 데이터 정형화 추출
[과제 목표] Gemini API의 File API와 Structured Output 기능을 활용하여 PDF 문서에서 특정 데이터를 추출하고 Pydantic 모델로 구조화하는 방법을 이해하고 실습할 수 있습니다.
[요구 사항]
- Gemini API의 File API를 이용하여 PDF 파일을 업로드하고, Pydantic 모델을 정의하여 해당 PDF 파일에서 원하는 데이터를 정형화된 형태로 추출하는 코드를 작성합니다.
- 샘플 PDF 파일(invoice.pdf, handwriting_form.pdf) 또는 개인적으로 준비한 PDF 파일을 사용해도 좋습니다.
- 모델은 Gemini 2.5 Flash를 이용합니다.
1. google-generativeai 설치
해당 명령어를 통해 프롬프트 엔지니어링을 위한 준비를 해 준다.
2. API 키 설정
https://platform.openai.com/playground/prompts
위 링크로 들어가 "API 키 만들기"를 눌러 API 키를 생성해 준다.
* 키 값은 절대로 외부에 유출해서는 안 된다.
이제 Google AI Studio에 접속할 준비는 끝났다.
3. PDF 파일 업로드
Colab에 원하는 파일(필자의 경우 invoice.pdf)을 업로드 해 준다.
invoice.pdf 파일은 거래 내역들을 문서화한 것이다.
4. Pydantic 모델 정의하기
PDF에서 추출한 내용을 어떤 형태로 받아올지 설계를 한다.
5. 모델 생성 및 프롬프트 작성
과제 명세대로 Gemini 2.5 Flash를 활용한 모델을 만들어서 이에 맞는 프롬프트를 작성했다.
6. Structured Output 요청하기
그럼 이제 이 모델과 프롬프트를 가지고, PDF 파일을 함께 넣어서 요청을 보내는 것이다.
7. 결과 출력
결과는 아래와 같다.
PDF의 내용을 분석해 JSON형태로 정리해준 것을 확인할 수 있다.