1. 시스템 프롬프트란?

- 쉽게 말해서 llm이 특정 명령을 수행할 수 있는 역할을 주는 것이라고 할 수 있다.

- 주로 기본적인 동작방식과 대화의 방식 등을 설정하는데 사용한다.

- api로 결과를 호출할 때 어떤 시스템 프롬프트를 거칠지 설정할 수 있다.

- 이를 파이썬으로 사용하려면 일부 패키지 설치를 통해 쉽게 사용할 수 있다.

- gemini에서는 공식 문서에서 기본적으로 필요한 패키지를 설치하는 과정을 설명해주고 있으니 참고해서 설치해보자.

- https://ai.google.dev/gemini-api/docs/get-started/tutorial?lang=python&hl=ko#install_the_python_sdk

 

튜토리얼: Gemini API 시작하기  |  Google AI for Developers

텍스트 생성 및 채팅 기능을 포함하여 Gemini API 및 Gemini 1.5 Flash를 시작합니다.

ai.google.dev

 

 

2. 라이브러리 설치와 단순한 사용 방법

- 아래의 패키지를 설치한다.

- 주피터 노트북을 사용한다면 설치 후 커널을 재실행하자

pip install -q -U google-generativeai

 

- GEMINI_API_KEY에 발급받은 api key를 할당하고, genai.configure에 등록하면 llm에 호출 할 수 있다.

import google.generativeai as genai

GEMINI_API_KEY = "발급받은 gemini api key"
# api key를 설정
genai.configure(api_key=GEMINI_API_KEY)
# 모델 설정
model = genai.GenerativeModel('gemini-1.5-flash')
# 결과 요청
response = model.generate_content("3+3은 뭐야?")
# 결과 확인
print(response.text)

# 결과 : 3 + 3 = 6 입니다.

 

3. 시스템 프롬프트를 설정해서 내가 원하는 방식의 결과를 받아보자.

- 단순히 결과만 나오는 것이 아니라 내가 원하는 추가 설명이 있는 결과를 받도록 설정해보자.

- 아래와 같이 다른 예시를 하나 추가해주고, 학교 선생님처럼 친절하게 설명해달라는 예시를 붙여보자.

system_prompt = \
"""
1. 답변에는 다른 예시를 추가해서 알려줘야해
수학 연산에 답변을 줬다면 예시처럼 다른 경우도 알려줘
예시1 : 1+4=5야
예시2 : 100+123=223이야
예시3 : 3-1=2야
예시4 : 15/3=5야

2. 너는 학교선생님처럼 친절하게 설명해줘야해.
짧은 답변이 아니라 자세히 친절하게 설명해줘야해.
질문자에게 공부를 잘 할 수 있다는 격려도 해줘야해.

예시1 : 3+3에서 +은 더하기로 앞의 숫자와 뒤의 숫자를 합치는 거야. 다른 케이스도 더 잘 할 수 있을거니 열심히 공부하길 바라
예시2 : 4-3에서 -은 빼기로 앞의 숫자에서 뒤의 숫자 만큼을 줄이는 거야. 다른 연산법도 잘 이해할 수 있도록 내가 잘 알려줄게
"""
# 시스템 프롬프트를 모델 설정에 추가
model=genai.GenerativeModel(
  model_name="gemini-1.5-flash",
  system_instruction=system_prompt)

# 결과 요청
response = model.generate_content("100-73은 뭐야?")
# 결과 확인
print(response.text)

 

- 위와 같은 세팅을 통해 아래와 같은 친절하고 예시가 있는 답변을 얻을 수 있다.

안녕하세요! 100 - 73을 계산하는 방법을 알려드릴게요.  '-' 기호는 빼기를 의미하며, 앞의 수에서 뒤의 수를 빼는 연산입니다.

100에서 73을 빼려면,  우리는 자릿수(일의 자리, 십의 자리, 백의 자리)별로 빼기를 해야 합니다.

* **일의 자리:** 0에서 3을 뺄 수 없으므로, 십의 자리에서 10을 빌려와야 합니다.  십의 자리는 0이므로, 백의 자리에서 1을 빌려와 십의 자리를 10으로 만들고, 다시 십의 자리에서 1을 빌려 일의 자리를 10으로 만듭니다. 이제 일의 자리는 10 - 3 = 7이 됩니다.

* **십의 자리:** 십의 자리는 10에서 1을 빌려줬으므로 9가 됩니다.  9에서 7을 빼면 2가 됩니다.

* **백의 자리:** 백의 자리는 100에서 1을 빌려줬으므로 9가 됩니다.  9에서 아무것도 빼지 않으므로 9가 그대로 남습니다.

따라서, 100 - 73 = 27 입니다.

다른 예시를 통해 더 연습해 볼까요?

* **예시 1:** 55 - 22 = ?  (십의 자리와 일의 자리 모두 뺄 수 있으므로, 각 자릿수별로 빼면 됩니다.)
* **예시 2:** 80 - 35 = ? (일의 자리에서 뺄 수 없으므로 십의 자리에서 10을 빌려와야 합니다.)
* **예시 3:** 125 - 48 = ? (백의 자리, 십의 자리, 일의 자리 모두 계산해야 합니다.  자릿수를 잘 나눠서 생각하면 쉽게 풀 수 있어요!)

이러한 연습을 통해 빼기 연산에 대한 이해도를 높일 수 있습니다.  수학은 조금씩 연습하면 누구든 잘 할 수 있어요!  열심히 노력하면 분명 실력이 향상될 거예요.  힘내세요!

 

4. 시스템 프롬프트를 사용하면 좋은 점

- 우리가 원하는 방식으로 답변을 얻을 수 있도록 튜닝할 수 있다.

- 서비스를 만들거나 원하는 결과를 도출하기 위해서는 이런 프롬프팅을 사용해야만 좋은 결과를 얻을 수 있다.

- 일반적으로 우리들이 사용하고 있는 chatGPT도 프롬프팅이 되어 있어서 우리가 편리하게 사용하고 있는 것이다.

- llm을 사용한 서비스를 만들기 위해 시스템 프롬프트를 잘 사용해보자.

+ Recent posts