데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      Flutter와 함께하는 OpenAI 관련 Completions API 공부하기

      매직 23.03.10
      3,162 29 6

      블로그 목적

      Flutter를 이용해서, 요즘대세인 OpenAI 의 ChatGPT 관련 Complections Api를 공부해서 실습해본다.


      블로그 요약

      • OpenAI에 대해서 간단하게 알아본다.

      • ChatGPT 문서를 통해서 Complections Api 를 사용해서 실습해본다.

      • Python 으로 간단하게 구현해보고, Flutter 를 통해서 모바일 프로그래밍도 해본다.


      블로그 상세 내용

      우선, 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. 화면 단은 아래와 같이 간단하게 코딩했습니다. 


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



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



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

      항상 믿고 봐주셔서 감사합니다.


      결론

      • OpenAI 이란?

        • 전적으로 인류에게 이익을 주는 것을 목표로 하는 미국의 인공지능 연구소라고 머릿속에 넣어두시면 좋을것 같은데요.

          그리고 이윤을 목적으로 하는 기업 OpenAI LP와 그 모체 조직인 비영리 단체 OpenAI Inc로 구성되어 있다고 하네요..

      • OpenAI 사이트에 방문해 보시면 여러가지 API 가 많이 있습니다. 직접 공부해보시고 활용해 보시면 좋을것 같네요..

      • 서버개발자로써 Flutter 로 모바일 개발한다는게 생각만큼 쉽지는 않았습니다. (특히 프로그램보다는 세팅하느라...ㅋㅋ OTL OpenAI 를 지원하려면 SDK 등등 업그레이드를 해줘야하더라고요..)

      참고로 제가 OpenAI 의 ChatGPT 와 대화를 하면서, 느낀점을 정리해보자면요..

      (솔직히 직접 API 를 코딩작업을 통해서 활용해보니..주목할 단점이 하나 있는데요....)

      저는 무료를 사용해서 그런가 ChatGPT 답변이 엄청 느리더라고요...;;; 진짜 심각할정도로..

      그래서 유료로 사용하게 만드는 건가 보군요....(무료는 sleep 이 들어갔나;;;;)

      이제까지 Flutter 를 이용해서 서버개발자가 모바일개발자를 흉내(?) 내면서 모바일개발자의 고충(?)을 알게되었습니다.


      긴글 읽어주셔서 진심으로 감사합니다.!!



      다음에 더 좋은 컨텐츠로 찾아뵐 수 있도록 더욱 노력하는 제가 되겠습니다. !!

      ( I'll be back !! )

      나의 목표 및 다짐을 항상 내곁에 두기

      • 목표

        • 나의 강점을 바탕으로 나의 일을 잘해냄으로써 타인과 사회를 아릅답게 만든다.

        • 현재 내가 가진 능력으로 누군가에 도움이 될 수 있을까? 에 대해서 항상 생각하기

        • 나는 블로그 생태계에서 IT 테크관련 파워블로거가 반드시 된다!

        • 유튜브 시장(?)을 호령하는 100만 유튜버가 반드시 된다!! (feat. 100만 유튜버가 반드시 될 매직!!)

        • 나는 꾸준히 공부하고 공부한것을 실천하는 창의적인 개발자가 된다.! (feat. devocean 개발&운영자가될 매직!!)

      • 목표를 이루기 위한 실천방안

        • 꾸준한 블로깅/기록법/독서법으로 넘버원이 아닌 온리원이 되보자.

        • 천사불여일행(千思不如一行)을 항상생각하며 체화 및 각인시키자.

          • "천번 생각하는것보다 한번 행동하는 것이 더 중요하다."

        • 기기일약 불능십보(騏驥一躍 不能十步) / 노마십가 공재불사(駑馬十駕 功在不舍)

          • 천리마도 한번에 열걸음을 뛸 수 없고, 느리고 둔한말이라도 열흘이면 하룻길을 간다.

        • 모든 실수에는 마술이 숨어 있다. 따라서 나는 실수하면 실수할수록, 그런 실수에서 더 많이 배울수록 삶에서 더 많은 마술을 갖는다.


      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      매직 님의 최신 블로그

      더보기
      동영상 기고하기