콘텐츠로 건너뛰기

프롬프트 엔지니어링 톺아보기

  • 테크

ChatGPT를 이용해 대화를 해보신 적이 있나요?
전 세계적으로 OpenAI 를 활용하여 여러 AI 서비스를 경쟁적으로 앞다투어 제공하고 있는데요. 오늘 AI가 무엇인지 , 어떻게 하면 잘 활용할 수 있을지, 톺아보는 시간을 가지도록 하겠습니다.
* 톺아보기 : 무엇을 얻으려고 샅샅이 훑어보다 또는 모조리 더듬어 뒤지면서 찾다.

프롬프트 엔지니어링을 이해하기 위해서는 딥러닝(Deep Learning), 머신러닝 (Machine Learning) 의 개념을 인지하고 있어야 합니다. 큰 맥락으로 인공지능의 기술적 영역은 크게 AI 범주 안에 포함 되어 있습니다.

“인공지능이라는 큰 영역 안에 기계학습머신러닝,ML이 있고, 기계 학습안에 딥러닝 DL기술이 있다. NLP자연어 처리 라는 영역은 통계적인 방법 부터 다양한 연구와 도전이 있었으며, 그중에서 최근 딥러닝 기술로 자연어처리시술을 뽑아낸 기술이 바로 챗 GPT이다.” -챗GPT 기회를 잡는 사람들 : 장민-

책GPT 기회를 잡는 사람들 [인공지능 활용의 기술적 영역] p.26

위의 저자가 말한 것 처럼 큰 범주안에 AI 안에 머신러닝과 딥러닝, NLP를 조합하여 생성형 언어 모델이 만들어졌고 이것이 GPT 기술이라고 말하고 있습니다. 이 생성형 언어 모델로 부터 원하는 결과 값을 얻기 위해 입력 값들의 조합을 찾는 방법을 프롬프트 엔지니어링 이라고 합니다.

프롬프트 엔지니어링은 결국 NLP 분야의 개념으로, 한마디로 AI와 어떻게 하면 잘 대화할 수 있는 가에 대한 주제입니다. 생성형 AI는 인간을 모방하려고 시도하였지만, 원하는 대답을 듣기 위해서는 자세한 가이드 라인이 필요하였고, 사용자와 더 의미 있고 정확하며 적절한 텍스트 모음을 생성하기 위해서 명령어를 내리는 것이 필요해졌습니다.

생성형 AI으로 부터 받은 응답값은 프롬프트 구성에 따라 결과 품질 값이 크게 달라지는데요. 곧, AI를 효과적으로 쓰는 것은 프롬프트를 얼마나 적절하게 구성하는 가에 따라 거대 언어 모델이 가지고 있는 할루시네이션 현상을 줄일 수 있습니다.
*할루시네이션: 인공지능 (AI)이 정보를 처리하는 과정에서 발생하는 오류

Colab OpenAI API Key 간단히 실습해보기
* 해당 내용은 앤드류 응의 ‘ChatGPT 프롬프트 엔지니어링(전자통신부설연구소 고우영)님 유튜브를 재 인용하였습니다.

소스코드에서 OpenAI API를 활용하려면 제일 먼저 API Key가 필요합니다. 아래와 같이 OpenAI 계정에 대한 API Keys 발급 받아 따로 저장하도록 합니다.

구글 드라이브 내의 Colaboratory NoteBook을 활용하여 아래와 같이 간단히 실행해보겠습니다. ( Jupyter NoteBook이나 파이썬 대화형 인터프리터에서도 가능합니다.)

1단계 본인의 OpenAi Api Key 를 입력


## 본인의 openai api 키 입력
OPENAI_API_KEY = 'sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

2단계 Google Colaboratory환경에서 0.28.1 설치

pip install openai==0.28.1

3단계 Python 환경에서 OpenAi 관련 Library 호출

import openai
import os
import time

openai.api_key  = OPENAI_API_KEY

4단계 helper 추가 ( 이 과정에서는 OpenAI의 ‘gpt-3.5-turbo’ 모델 도우미 기능을 사용하면 프롬프트를 더 쉽게 사용하고 생성된 출력을 확인 할수 있습니다.)

def get_completion(prompt, model="gpt-3.5-turbo", temperature=0):
    messages = [{"role": "user", "content": prompt}]
    response = openai.ChatCompletion.create(
        model=model,
        messages=messages,
        temperature=temperature, # this is the degree of randomness of the model's output
    )
    return response.choices[0].message["content"]

5단계 프롬프트 실행

prompt = 'ChatGPT가 뭔지 20단어로 설명해주세요'
대답 = get_completion(prompt, model="gpt-3.5-turbo")
print(대답)
ChatGPT는 인공지능 챗봇으로, 자연어 처리 기술을 사용하여 대화를 주고받을 수 있는 프로그램입니다.
ChatGPT는 인공지능 챗봇으로, 자연어 처리 기술을 사용하여 대화를 주고받을 수 있는 프로그램입니다.
prompt = '성동구에 있는 비즈스프링 이라는 회사에 대해 10줄 내외로 설명해줘. 줄바꿈해서 출력부탁해'
대답 = get_completion(prompt, model="gpt-3.5-turbo")
print(대답)
비즈스프링은 성동구에 위치한 IT 기업으로, 소프트웨어 개발 및 컨설팅 서비스를 제공하고 있다. 회사는 2010년에 설립되어 현재까지 다양한 기업 및 기관과 협업하여 솔루션을 제공하고 있다. 주요 제품으로는 웹 및 앱 개발, 클라우드 컴퓨팅, 빅데이터 분석 등이 있다. 비즈스프링은 최신 기술과 트렌드를 반영하여 고객의 요구에 맞는 맞춤형 솔루션을 제공하고 있다. 또한, 회사 내부에는 다양한 전문가들이 모여 있어 고객의 다양한 요구사항에 신속하고 효율적으로 대응할 수 있다. 비즈스프링은 고객 중심의 서비스 제공을 통해 신뢰받는 IT 기업으로 성장하고 있다.

[ Google Colaboratory NoteBook 예제]
https://colab.research.google.com/drive/13MTLjT27Xga6XCzPFQhWF5dlSjU5OwcF?usp=sharing

[PhD.앤드류응님의 Jupyter NoteBook 예제 , AI 프렌즈(전자통신부설연구소 고우영)]
https://bit.ly/3W89UkV


더 구체적인 활용 방안 가이드라인으로 AI / ML 분야의 세계적 석학인 앤드류 응 (Andrew yan-Tak Ng )교수님은 아래와 같이 설명하고 있습니다. 아래 가이드 라인을 마지막으로 Open Api를 활용하여 기초가 되는 프롬프트를 톺아보는 시간을 마치도록 하겠습니다.


프롬프트 엔지니어링 가이드라인

1. 명확하고 구체적인 지침 작성하되, 모델에게 생각할 시간을 주기
– 구분기호를 사용하여 입력의 구분
–  “`, “””, < >, <tag> </tag>:

2. 구조화된 결과물을 요청하기
– “내용을 전달해주고 html이나 markdown 형식으로 만들어줘”
– “조건을 전달하고 이 조건이 모델에 알맞는지 확인해줘”

3. 모델에게 생각할 시간을 주기
– 작업을 완료하기 까지 필요한 1~ N단계를 나누어서 지정하기
– “성급하게 결론을 내리기 전에 모델이 자체적인 해결책을 마련하도록 지시해줘”


3. 요약하기
– “단어와 문장을 요약해줘”
– “가격과 가치에 대해서 요약해줘”
– “관련된 정보를 추출해줘”
– “여러 명의 리뷰를 종합해서 20개의 리뷰를 종합해줘 (긍정, 부정으로 분류해줘)”

4. 추론 하기
– “감정, 주제 추출해줘”

5. 확장하기
– “자동으로 수신인을 지정하여 이메일을 작성해줘”

References.
1. https://www.promptingguide.ai
2. https://learn.deeplearning.ai
3. https://www.youtube.com/live/P8yKg88xF_8?si=DtvIz1kx0LZz8bHj


답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

중소 기업을 위한 2025년 클라우드 바우처 서비스 정부 지원 혜택 확인하고, 80% 서비스 이용료 지원 받으세요!

X