일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 파이토치
- pytorch
- fastapi #python웹개발
- 파이토치기본
- 챗gpt
- 판다스
- programmablesearchengine
- python 정렬
- langchain
- HTML
- 머신러닝
- deeplearning
- pandas
- 자연어분석
- OpenAIAPI
- fastapi
- chatGPT
- Python
- 랭체인
- 사이킷런
- 파이썬웹개발
- konlpy
- 비지도학습
- MachineLearning
- 딥러닝
- 파이썬
- 판다스 데이터정렬
- fastapi #파이썬웹개발
- NLP
- sklearn
- Today
- Total
Data Navigator
OpenAI API 를 이용한 챗봇 만들기02 - OpenAI API 파라미터 정리 본문
OpenAI API 를 이용한 챗봇 만들기02
- OpenAI API 파라미터 정리 -
1. OpenAI API의 기본 사용법
OpenAI API의 기본 사용법은 아래와 같다.
import os
from openai import OpenAI
client = OpenAI()
client.api_key = os.environ['OPENAI_API_KEY']
# GPT API를 통해 요청 보내고 결과 가져오는 부분
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": "Python에 대해 알려주세요"},
],
)
print(response)
위의 코드를 실행하면 아래와 같은 결과가 나온다.
출력된 결과를 보면 생성된 답변 뿐만 아니라 요청시의 파라미터 값과 입력한 질문에 대한 토큰 수(prompt_tokens), 답변에 대한 토큰 수(completion_tokens)등의 정보도 함께 출려된다.
생성된 답변은 choices안에 리스트 형태로 들어있다.
다른 정보 없이 답변만 출력하고 싶다면 아래와 같이 출력할 수 있다.
print(response.choices[0].message.content)
response 안에서 choices 속성의 0번째 값을 가져오고 그 안에 있는 message 속성에서 content 속성의 값을 가져오라는 뜻이다.
위에 있는 response 값의 내용을 잘 보면 이해하기 쉬울 것이다.
2. client.chat.completions.create() 함수의 속성
openAI의 API를 사용할 때 GPT의 역할(role)을 지정하고 GPT에게 질문을 하고, 응답을 받는 것은 chat.completions.create() 메서드를 이용해서 하게 된다.
chat.completions.create() 메서드에는 여러가지 속성을 지정할 수 있는데 약 33개의 속성이 있다.
이 속성을 통해서 openAI의 API가 작동하는 방식을 원하는데로 조정할 수 있다.
client.chat.completions.create() 메서드의 주요 속성은 아래와 같다.
매개변수 | 설명 | 예시 | 비고 |
model | 사용할 언어 모델 이름을 지정 | gpt-3.5-turbo, gpt-4o-mini, gpt-4 | 필수 |
messages | 대화의 맥락을 제공하는 입력. 역할(role)과 콘텐츠(content)로 구성 | [ {"role": "system", "content": "You are an AI that provides financial advice."}, {"role": "user", "content": "How should I invest in stocks?"} ] |
필수 |
temperature | 응답의 창의성 조절 파라미터로, 0-2 범위 | 낮은 값(예: 0.2): 일관성 높은 응답 높은 값(예: 0.8): 창의적 응답 |
기본값: 1 |
top_p | 샘플링에서 사용할 확률의 누적 분포 설정 | 0.1이면 상위 10% 확률의 토큰만 선택 temperature와 함께 조절하지 않는 것이 좋음 |
기본값: 1 |
max_tokens | 생성할 응답의 최대 토큰 수 제한 | max_tokens=100은 최대 100 토큰의 응답 생성 model과 입력 메시지의 토큰 합계 제한 있음 |
모델별로 상이 |
n | 생성할 응답의 개수 지정 | n=3이면 3개의 서로 다른 응답 반환 | |
stop | 응답 생성을 멈출 시점을 정의할 수 있는 문자열 또는 문자열 배열 | stop=["\n"]는 줄바꿈에서 응답 생성 중단 | |
presence_penalty | 특정 단어가 얼마나 자주 등장할지를 조정하는 파라미터 | 값 범위: -2.0 ~ 2.0 높은 값: 새로운 주제 탐색 증가 낮은 값: 반복 단어 사용 줄임 |
|
frequency_penalty | 기존에 등장한 단어의 반복 빈도를 억제하는 매개변수 | 값 범위: -2.0 ~ 2.0 / 높은 값: 단어 반복 빈도 줄임 | |
logit_bias | 특정 토큰의 선택 확률 조정 | {"50256": -100}은 종료 토큰의 선택 확률 감소 |
3. model 의 종류와 특성
2024년 11월 08일 기준 openAI의 공식 플래그십 모델은 아래와 같다.
워낙 개발속도가 빠르고 수시로 업데이트 되므로 위의 내용은 언제든 변경될 수 있다.
모델에 대한 상세 내용은 아래의 링크를 참고하자
https://platform.openai.com/docs/models
4. role과 temperature 파라미터를 추가한 예제와 결과
GPT의 역할을 role의 system으로 지정하고 질문한 코드와 결과는 아래와 같다.
import os
from openai import OpenAI
client = OpenAI()
client.api_key = os.environ['OPENAI_API_KEY']
# GPT API를 통해 요청 보내고 결과 가져오는 부분
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "핀테크 전문가로서 대답해 줘",
"role": "user", "content": "미국에서 가장 주목받는 핀테크 기업목록 \
10개를 알려주고 주요 서비스에 대해서 알려주세요."
},
],
temperature = 0
)
print(response.choices[0].message.content)
temperature 를 너무 높게 하면 결과가 이상하게 나올 수 있다.
import os
from openai import OpenAI
client = OpenAI()
client.api_key = os.environ['OPENAI_API_KEY']
# GPT API를 통해 요청 보내고 결과 가져오는 부분
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "노벨상급 소설가로서 대답해줘",
"role": "user", "content": "가을에 관련된 단편 소설 써줘"
},
],
temperature = 2
)
print(response.choices[0].message.content)
위와 같이 temperature 2로 설정 후 받은 답변은 언어도 일관성이 없고 내용도 알아볼 수 없다.
temperature 1 로 설정한 경우에는 정상적으로 답변이 출력되는 것을 볼 수 있다.
import os
from openai import OpenAI
client = OpenAI()
client.api_key = os.environ['OPENAI_API_KEY']
# GPT API를 통해 요청 보내고 결과 가져오는 부분
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "노벨상급 소설가로서 대답해줘",
"role": "user", "content": "가을에 관련된 단편 소설 써줘"
},
],
temperature = 1
)
print(response.choices[0].message.content)
5. role의 종류
역할 종류 | 설명 | 예시 |
system | AI의 행동이나 성격을 설정합니다. | { "role": "system", "content": "You are a helpful assistant." } |
user | 사용자가 AI에게 요청하는 메시지를 나타냅니다. | { "role": "user", "content": "What is the weather today?" } |
assistant | AI가 이전에 생성한 응답을 나타냅니다. | { "role": "assistant", "content": "The weather today is sunny and warm." } |
'Python' 카테고리의 다른 글
RAG(Retrieval Augmented Generation) 기반 GPT 챗봇 만들기 (4) | 2024.11.12 |
---|---|
OpenAI API 를 이용한 챗봇 만들기03 - gradio를 이용해 간단한 챗봇 만들기 (0) | 2024.11.08 |
OpenAI API 를 이용한 챗봇 만들기01 - OpenAI 계정등록하고 API key 발급 후 테스트 하기 (0) | 2024.11.07 |
Docker로 django, gunicorn, postgreSQL, Nginx 연동하기 (0) | 2024.10.25 |
conda 가상환경 패키지를 저장하고 다른 컴퓨터에 똑같이 설정하기 (0) | 2024.07.09 |