개인 자료란 (JE)

  서버 커뮤니티

Profile yusin12 대표칭호 없음

yusin_YT 1e0511f92377434a9f27b5724c29fbe3

Profile

커뮤니티 소통 개발하기 프로그래밍

openai를 이용해서 챗봇을 만들어 보자!

2023.08.11 조회 수 216 추천 수 0

openai가 뭐냐구요?

openai는 chat gpt에서 사용하는 모듈이에요![그런데 chat gpt는 파인튜닝이 되어있어요!,즉! openai가 제공하는 ai보다 똑똑해요!]


아무튼 이름은 open이지만 openai를 쓸려면 돈을 줘야해요!, 그론데 5달라 정도 무료로 주니까(생각보다 많음) 다 차면 새로운 계정을 만드는 식으로 해야할거같아요![예전에는 18달러 줬음]



0. api key얻기

일단 홈폐이지에서! : https://platform.openai.com/overview


오른쪽 위에 sign up을 눌러 회원가인을 해줍시다!


그리고 계정까지 만들고 로그인까지 하셨다면 다시 오른쪽 위에 자신의 프로필 사진을 클릭하시고 view api keys를 클릭하시면!


[원래는 아무런 키도 없을꺼에요!]

create nre secret key를 누르고 이름을 정하면[공백으로 해도 상관x]

정하면!! 바로 key를 복사할 수있어요! 복사하고 어디다가 메모해두세요![api key는 지금보고 영원히 못 봄]


1. 챗봇

이제 cmd로 pip install openai를 하시고

파이썬 파일을 하나 만들어봅시다!

그리고 이렇게 적어봅시다!

import openai
q = input('질문 : ') #질문하는 곳
key = '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' #여기가 그 api key 입력하는 곳이에요!
openai.api_key = key #api key인증
completion = openai.ChatCompletion() #챗봇 소환


#이게 설정들이에요!
temperature = 1 #수 많은 값 중.. 하나만 가져와요!
max_tokens = 4000 #최대 단어 수! gpt-3가 4048, gpt-4가 8096이였나?
top_p = 1.0 #가장 잘 나온걸 선택
frequency_penalty = 0.2 #낮을 수록 동일한 단어를 잘 사용하지 않음
presence_penalty = 0.0 #다양한 범위에 토큰을 사용[김치에 대해서 물어봤는데 김치볶을밥에 대해서 알려줌]
#main 함수
def run_openai_chatbot(question='', a=''):
    response = completion.create(
        model="gpt-3.5-turbo",#모델 이름 gpt-4는 아직 유료, 무료버전에선 gpt-3.5-turbo가 가장 좋음
        messages=[
            {"role": "system", "content": str(question)} #여기가 봇 질문에 대한 대답해주는 곳
        ],
        max_tokens=max_tokens,    
        temperature=temperature,
        top_p=top_p,
        frequency_penalty=frequency_penalty,
        presence_penalty=presence_penalty
        )
    b = response["choices"][0]["message"]["content"]
    a = b
    return b, a
answer, a = run_openai_chatbot(question=q, a='')
print('대답 : ' + str(a))

설명이 필요한 부분/질문은 댓글, 쪽지 디스코드(yusin_12)에서 받고 있어요!

2개의 댓글

세찐찐
2023.08.11

질문을 하면 ai가 답변을 안해주네요 ㅠㅠ

코드 : https://pastebin.com/uaqt82ZE

오류 : https://pastebin.com/xC8jAAxt

yusin12
2023.08.11
@세찐찐

엄... 파이썬 초보이군요!

 

일단 봇이 명령어를 받으려면

 

if message.content.startswith('명령어'):

@question = message.content[명령어 글자수 + 1:]

 

이걸로 명령어를 켜야해요!

 

+ 함수는 실행하는 명령어보다 위에 있어야해요!

 

tester()

 

def tester() 라고 하면

 

어라 원시시대인데 어떡해 총을 꺼내오지? 라는 상황이되요!!

 

def tester()

 

tester() 으로 해야 아하 이미 총이 있으니까 가져와야지!

 

 

뉴스 및 창작물
/files/thumbnails/576/775/003/262x150.crop.jpg?20240426232553

아티클

이달의 블록: 단단한 진흙

학교가기싫다

2024-04-26

0

/files/thumbnails/115/774/003/262x150.crop.jpg?20240428135129

업데이트

마인크래프트 1.20.5 정식 업데이트

학교가기싫다

2024-04-24

0

/files/thumbnails/762/770/003/262x150.crop.jpg?20240418073724

레드스톤

T.B.H (고민중독) | 노트블럭 버전 | NoteBlock Cover [한국어 영어 중국어 가사 추가]

노트블럭전문가

2024-04-18

0

/files/thumbnails/218/767/003/262x150.crop.jpg?20240412130213

레드스톤

우리의 꿈 - 원피스 오프닝

노트블럭전문가

2024-04-12

0

/files/thumbnails/505/766/003/262x150.crop.jpg?20240411122306

레드스톤

기동전사 건담 수성의 마녀 | 노트블럭 커버 1

노트블럭전문가

2024-04-11

1