이번 글부터는 최근 이슈가 되고 있는 생성형 AI와 관련한 기술에 대해 시작해 보겠습니다. 그중 오늘부터 몇 회에 걸쳐 프롬프트 엔지니어링에 살펴보겠습니다. 물론, 가장 많이 사용되는 OpenAI의 GPT 기반으로 설명하게요.
프롬프트 엔지니어링을 이용해서 GPT에게 원하는 답을 얻는 방법
챗지피티를 사용하는 사람들 중에서도 "AI가 원하는 답을 주지 않아!"라고 하는 사람들이 가끔 있더라고요, 이때는 그저 '자세하게 질문해'라고 대답을 해주곤 하는데요, 사실은 이 말이 매우 정확하게 충고해 주는 거예요.
챗GPT는 사용자의 입장을 고려해서 사용자는 알 수 없지만, 중간에서 사용자의 요구에 대해 GPT가 보다 적극적이고 자세하고 사용자가 알기 쉽게 대답하도록 가공하는 단계가 있어요. 때문에 챗GPT에게 어떤 질문을 해도 비교적 사용자에게 맞는 대답을 해주곤 하거든요. 간혹 GPT가 너무 다른 대답을 한다면 질문을 다시 하거나, 보다 더 자세하게 질문의 앞뒤 배경이나 자신의 입장을 구체적으로 반영해 주면 더 좋은 대답을 얻을 수 있어요.
그런데, OpenAI에서 제공하는 서비스는 챗GPT만 있는 게 아니에요. API를 통해 직접 모델에 접근할 수도 있어요. 여기서 모델이라면 챗GPT에서도 선택이 가능한 GPT-4o라든가, o3, 4o-mini 등을 말하죠.
API를 통해 모델에 직접 접근하는 것이 챗GPT를 사용하는 것과 무엇이 다르냐? 바로 사용자와 GPT의 중간에서 가공하는 기능이 없어요. 때문에 API를 사용하는 사용자가 직접 가공하는 기능이나 기타 원하는 기능을 추가해 볼 수가 있어요.
자, 그럼 이제 하나씩 살펴보도록 하죠.
사전 준비, OpenAI API
먼저, OpenAI의 API를 사용하기 위해 등록을 해야 해요. 기존 챗GPT를 유료 사용하신 분이라 하더라도 API 등록은 별도로 해야 합니다. 챗GPT와 API 사용 서비스는 서로 다른 서비스로 비용도 따로 지불해야 해요. 챗GPT 비용 20 달러 내 모두 포함되면 너무 좋겠지만, 따로 되어 있더라고요.
하여간, 오늘은 API 서비스 등록 관련은 각자 했다고 치고 바로 프롬프트 엔지니어링 관련 내용으로 넘어갑니다.(시간이 된다면 나중에 API 등록과 비용 지불과 관련해서 따로 글을 작성할게요.)
Python으로 GPT를 쓰려면, 먼저 API 키를 불러오고 기본적인 설정을 해야 합니다.
import openai
openai.api_key = "OPENAI_API_KEY" # API 등록할때 받은 key를 적으면 됩니다.
그다음, 아래와 같이 프롬프트를 보내는 함수를 만들어 둡니다.
def get_completion(prompt, model="gpt-4o-mini"):
messages = [{"role": "user", "content": prompt}]
response = openai.chat.completions.create(
model=model,
messages=messages,
temperature=0
)
return response.choices[0].message.content
- 이 함수에서 사용하는 chat이 기본적으로 GPT와 문자 대화를 하는 클래스예요.
- prompt는 사용자가 입력하는 지시/요청/질문 사항 등이죠.
- model이 필요해요. 이 모델과 Token(토큰) 수에 따라 비용이 발생해요.
GPT에게 잘 묻는 방법
1) 명확하고 구체적인 요청
GPT에게 무엇인가를 요청할 때는 내용을 명확하게 전달해야 합니다.
- 구분자를 이용하는 방법
refer = f"""
인공지능은 인간의 언어, 시각, 판단 능력을 모방하는 기술입니다.
특히 최근에는 대규모 언어 모델이 다양한 분야에 활용되며 주목받고 있습니다.
예를 들어, 고객 상담, 콘텐츠 생성, 코드 보완, 의료 진단 등에서 활발히 사용됩니다.
이러한 모델의 성능은 주어진 입력에 얼마나 정교하게 반응하느냐에 달려 있습니다.
"""
prompt = f"""
아래 텍스트는 `===` 기호로 구분되어 있습니다.
해당 텍스트를 한 문장으로 요약해 주세요.
==={refer}===
"""
response = get_completion(prompt)
print(response)
- `===` 기호로 refer 부분을 특정하면, GPT는 어느 부분이 요약 대상인지 명확히 인식합니다.
위 코드를 실행한 결과는 다음과 같아요.
위 그림에서는 출력 내용 전체가 안보이므로 아래에 출력 내용을 옮깁니다.
인공지능은 인간의 언어와 판단 능력을 모방하는 기술로, 최근 대규모 언어 모델이 고객 상담, 콘텐츠 생성, 코드 보완, 의료 진단 등 다양한 분야에서 활용되고 있으며, 그 성능은 입력에 대한 반응의 정교함에 달려 있습니다.
GPT-4o-mini에게 한 문장으로 요약을 요청했더니, 위와 같이 요구에 맞게 대답해 주었네요.
그런데 위는 API를 사용할 때 파이썬 코드 구성시 예시였어요. 그럼 챗GPT에서는 어떻게 작성해야 할까요? 다음과 같이 해보죠.
위 API사용할 때와 같이 GPT 모델은 ChatGPT o4-mini로 선택했고요, 파란색 박스처럼 요구사항을 입력했어요. 파이썬 코드에서는 '{refer}' 기호를 코드로 썼지만, 챗GPT에서는 서술형으로 입력해야 하므로 '참고'라는 용어로 특정했어요.
챗GPT가 6초나 생각하고 한 문장으로 요약해 주었어요. 대답을 잘한 것 같죠. 그래요?
요약 내용을 자세히 보면 앞의 GPT API를 사용했을 때와 챗GPT의 답변이 약간 차이가 나요. 잘 보시면 API를 사용했을 때는 refer의 내용을 변경 없이 요약한 것 같지만, 챗GPT의 경우는 약간 내용이 수정된 것 같아요. 뭔가 조미료가 가미된 것 같은 문장이죠.
API를 사용할 때나 챗GPT를 사용할때나 '내용 요약' 요청에 따른 대응은 잘 수행해 주었으나, 문장의 내용에 약간 차이가 나죠. 이것은 바로 앞에서 언급했던 챗GPT는 중간 가공자가 있다는 것을 알 수 있는 거죠.
좀 더 정확하게 말하면 앞에서 제시했던 파이썬 코드 get_completion 함수 내에 temperature 가 이런 것을 조절하는데요, 정확하고 일관성 있는 답변만을 할 것인지, 아니면 조금 더 창의적인 답변을 할 것인지를 설정하는 변수입니다.
때문에 챗GPT 내부에서는 이 값이 0 보다 큰 값으로 설정되어 있기 때문에 API를 사용했을 때와 좀 다른 게 요약을 한 것이에요.
하다 보니 내용이 길어지므로 오늘은 여기까지 하고, 다음 글에 이어서 내용을 정리해 보겠습니다.
2025.04.25 - [Generative AI/Prompt Engineering] - OpenAI GPT 출력 형식 설정으로 JSON 파싱과 프롬프트 엔지니어링 #2
OpenAI GPT 출력 형식 설정으로 JSON 파싱과 프롬프트 엔지니어링 #2
이번 글에서는 지난번에 시작했던, 프롬프트 엔지니어링을 이용해서 GPT에게 원하는 답을 얻는 방법 중 GPT에게 명확하게 구체적으로 잘 묻는 방법에 이어서 GPT의 응답을 명확하게 하도록 요구하
eco7t.tistory.com
2024.05.10 - [프로그래밍 언어/Python] - 첫 번째 파이썬 프로그램 작성하기 Hello, Python! - Python 기초 #3
첫 번째 파이썬 프로그램 작성하기 Hello, Python! - Python 기초 #3
이제 파이썬 설치와 개발 환경 설정이 완료되었으니, 첫 번째 파이썬 프로그램을 작성해 보겠습니다. 간단한 프로그램으로 시작하여 파이썬의 기본적인 문법과 실행 방법을 이해하는 데 초점을
eco7t.tistory.com
2024.05.11 - [프로그래밍 언어/Python] - 파이썬 기본 문법, 변수, 조건문, 함수의 이해 - Python 기초 #4
파이썬 기본 문법, 변수, 조건문, 함수의 이해 - Python 기초 #4
자, 이번 글에서부터는 파이썬의 기본적인 문법과 개념을 다뤄보도록 하겠습니다. 먼저, 프로그래밍의 핵심 요소인 변수, 자료형, 조건문, 반복문, 함수 등을 다룹니다. 이러한 기본적인 개념들
eco7t.tistory.com
'Generative AI > Prompt Engineering' 카테고리의 다른 글
OpenAI API input/output token(토큰) 계산 및 확인 방법 - LLM 모델 사용량과 비용 #1 (0) | 2025.05.23 |
---|---|
OpenAI API Chat Format으로 챗봇 만들기 - 프롬프트 엔지니어링 가이드 #5 (0) | 2025.05.13 |
GPT로 고객 리뷰 분석부터 뉴스 주제 추출까지 - 정보 추출 자동화 프롬프트 방법 #4 (0) | 2025.05.08 |
IPython.display로 HTML 출력하고 ipywidgets로 실시간 슬라이더까지! #3 (0) | 2025.04.30 |
OpenAI GPT 출력 형식 설정으로 JSON 파싱과 프롬프트 엔지니어링 #2 (0) | 2025.04.25 |