본문 바로가기

좋아하는 것_매직IT/19.flutter

flutter와 함께하는 openai 관련 Completions api 공부하기 (ft.openai_client)

반응형

우선, openai 란 무엇일까요?

간단하게 openai를 말씀드리자면요..
전적으로 인류에게 이익을 주는 것을 목표로 하는 미국의 인공지능 연구소라고 머릿속에 넣어두시면 좋을것 같은데요..
그리고 이윤을 목적으로 하는 기업 OpenAI LP와 그 모체 조직인 비영리 단체 OpenAI Inc로 구성되어 있다고 하네요..

참고로, 아래는 openai 사이트인데요..


openai에 대해서 개인적으로 살펴본결과...아래와 같은 메뉴들로 구성되어 있고요..

그중에서 제가 관심있어하는 분야인 chatGPT를 클릭해 봅니다. 
그럼 아래와 같이 나오는데요..

한마디로 ChatGPT 에 대해서 정리해보자면요..
ChatGPT는 대화를 위한 최적화 언어 모델이고요..
openai 에서는 대화 방식으로 상호 작용하는 ChatGPT라는 모델을 훈련시켰다고 하네요..

보통대화 형식을 통해 ChatGPT는 후속 질문에 답하고, 실수를 인정하고, 잘못된 전제에 이의를 제기하고, 부적절한 요청을 거부할 수 도 있고요..
그리고, ChatGPT는 프롬프트(prompt)의 지시를 따르고 자세한 응답을 제공하도록 훈련된 InstructGPT의 형제 모델이라고 하네요..

아무튼 저는 개발자인지라서 바로 API 페이지로 달려가(?) 봅니다. 


해당 페이지에서 소개하는 간단한 샘플코드를 보면요.. 아래와 같고요..

api 관련 문서들도 아래와 같이 제공하고 있네요..

저는 그많은 문서의 글중에서...Completions에 대해서 간단하게 알아보고, 활용해서 flutter 를 사용해서 모바일기반 어플을 만들어보려고 합니다. 
(참고로 제가 모바일 개발자가 아니라서 어플은 좀 허접합니다. 그냥 응답받아서 뿌려주는 거라서요ㅎㅎ 양해 부탁드릴께요~단지 서버개발자가 모바일 개발에 도전을?? 이라고만 봐주시면 ㅎㅎ 일신우일신해서 서버개발자개념을 갖춘 스폐셜(?) 모바일개발자로 거듭나겠습니다. ㅎㅎ)

아무튼 아래는 해당 Completions 의 소개고요..

참고로, Completions에 대해서 공부해보니 아래와 같은 파라미터들을 가지고 있는데요..


(이외에도 여러가지가 많이 있고요,  해당 파라미터들의 설명은 생략하도록 할께요~직접 한번 가보시고 공부해보시길 추천드립니다.)

아무튼, 저는 해당 사이트에서 chatGPT관련 공부를 하게되었고요....
앞으로 좀더 자세히 공부해볼까? 생각하고 있습니다. 

우선 오늘의 블로그 목적은 api를 사용해서 chatGPT의 응답 결과가 잘나오는지 확인!! 이 목적입니다.

우선,제대로 chatGPT가 동작하는지 python 으로 선작업을 해봅니다. 
chatGPT에서 "What is Seoul? / 서울은 무엇이냐?" 고 chatGPT의 고견(?)을 물어볼건데요....

저는 아래와 같이 VScode에서 프로그래밍을 해서 실행을 해봤습니다. 

우선 openai 에 대해서 설치를 해야겠죠?  아래 명령어 한줄이면 되고요..

저는 이미 설치가 되서 아래와 같이 나오네요..

그리고, python  프로그램을 openai 의 예제프로그램을 토대로 아래와 같이 작성해 봅니다. 

import os
import openai
import argparse


def magicChatGPT(prompt):
  openai.api_key = os.getenv("OPENAI_API_KEY")
  response = openai.Completion.create(
    model="text-davinci-003",
    prompt= prompt, 
    temperature=0,
    max_tokens=100,
    top_p=1,
    frequency_penalty=0.0,
    presence_penalty=0.0 
  )
  return response.choices[0].text

def main():
  prompt = input("Input Prompt: ")
  print(magicChatGPT(prompt).strip())

if __name__ == '__main__':
  main()

아래와 같이 실행을 해보면요...(직접 해보니 응답이 좀 느리긴 하더라고요..;;)

(위와 같이 서울에 대한 ChatGPT의 설명을 확인할 수 있었습니다. 감사하게도요..)

그럼, 한번 flutter 로 도전을 해보겠습니다. (서버 개발자로 써 모바일로 ChatGPT의 답변을 볼 수 있나? 두근두근 설레이네요...ㅎㅎ 설레였습니다. ㅎㅎ)

우선, flutter 에서는 아래 명령어를 통해서 openai_client 를 추가시킬 수 있고요.

아래와 같이 진행됩니다. 

그러면,,아래와같이 pubspec.yaml 파일의 dependencies 항목 밑에 "openai_client" 가 추가가 되었음을 확인할 수 있고요...


그리고 안드로이드 스튜디오를 통해서 flutter 프로그래밍을 해보면요..
저는 우선 아래와 같은 결과를 만들려고 합니다. 
아래는 기본 화면인데요...

아래 floatingActionButton 을 클릭하면 chatGPT에서 응답을 받아와서 아래와 같이 뿌려주는 앱?

결과는 아래와 같습니다. 


(우선 진짜 간단하게 코딩해봤습니다. ㅎㅎ)
참고로, flutter는 Dart 언어를 사용하는데요....
아래와 같이 main.dart 에 코드를 작성해볼께요~

코드는 아래와 같습니다. 
1.아래와 같이 "openai_client" 를 import 를 시켜주고요..

2. floatingActionButton을 클릭(onPressed)했을때 이벤트처리 및 호출함수를 넣어두고요..

3. 아래와 같이 openAi 함수를 코딩합니다. 
(model, prompt, temperature 등등을 넣어두시고요...apiKey는 가리도록하겠습니다.)

4. 화면 단은 아래와 같이 간단하게 코딩했습니다. 

그리고 아래 버튼을 클릭해서 실행하시면 되요..


실행해보면 아래와 같이 결과 값이 잘 나옵니다. 



아무튼 오늘의 블로그는 여기까지고요...

(솔직히 직접 api 를 코딩작업을 통해서 활용해보니..주목할 단점이 하나 있는데요....)
저는 무료를 사용해서 그런가 chatGPT 답변이 엄청 느리더라고요...;;; 진짜 심각할정도로..
그래서 유료로 사용하게 만드는건가 보군요....(무료는 sleep 이 들어갔나;;;;)


이만 줄이겠습니다. 
항상 믿고 봐주셔서 감사합니다..

728x90
300x250