반응형

chatgpt에도 openapi가 존재한다.

ChatGPT API사용법은 chatgpt에게 물어보면 잘 대답해준다.
이런 소스인데 기본적으론 python으로 답을 해주고 javascript로 소스 샘플을 짜달라면 node.js로 보내온다.
하지만 쌩 javascript도 가능하니 node.js가 아닌 javascript로만 답을 해달라고 하자.
그럼 이런 답을 얻을 수 있다.

<!DOCTYPE html>
<html>
<head>
  <title>GPT-3.5 Turbo Chat</title>
</head>
<body>
  <div>
    <label for="userInput">질문:</label>
    <input type="text" id="userInput" />
    <button onclick="getChatResponse()">답변 받기</button>
  </div>
  <div>
    <strong>ChatGPT 답변:</strong>
    <p id="response"></p>
  </div>

  <script>
    async function getChatResponse() {
      const userInput = document.getElementById("userInput").value;
      const apiUrl = "https://api.openai.com/v1/completions"; // OpenAI API URL
      const apiKey = "내가 받은 api key"

      const requestBody = {
        model: "gpt-3.5-turbo",
        messages: [
          {
            role: "user",
            content: userInput,
          },
        ],
      };

      try {
        const response = await fetch(apiUrl, {
          method: "POST",
          headers: {
            "Content-Type": "application/json",
            Authorization: `Bearer ${apiKey}`,
          },
          body: JSON.stringify(requestBody),
        });

        const data = await response.json();
        var strResult;

        if (data.hasOwnProperty("error")) { // error 속성이 존재하는 경우
            strResult = data.error.message;
        } else if (data.hasOwnProperty("choices")) { // choices 속성이 존재하는 경우
            strResult = data.choices[0].message.content;
        } else {    // 그 외의 경우
            strResult = "Unknown response format.";
        }

        document.getElementById("response").innerText = `ChatGPT: ${strResult}`;
      } catch (error) {
        console.error("Error:", error.message);
        document.getElementById("response").innerText = "Error occurred.";
      }
    }
  </script>
</body>
</html>

대충 chatgpt API 사이트에 보니 모델을 지정하고 API키만 입력하고 질문입력해서 보내면 답을 주는 매우 간단한 구조다.
API구조는 chat gpt버전에 따라 다르다. 
구조가 저러하다 정도만 이해하고 나머진 규격에 맞게 requestBody를 구성하면 되겠다.


그러면 이제 API KEY를 얻어보자.
API KEY를 얻기 위해선 아래 페이지에 가서 신청하면 받을 수 있다.

https://platform.openai.com/account/api-keys

 

OpenAI Platform

Explore developer resources, tutorials, API docs, and dynamic examples to get the most out of OpenAI's platform.

platform.openai.com

본격적인 개발을 진행하기 전 postman이란 프로그램을 이용하면 미리 테스트가 가능하니 postman을 다운로드 받자.
https://www.postman.com/downloads/

 

Download Postman | Get Started for Free

Try Postman for free! Join 25 million developers who rely on Postman, the collaboration platform for API development. Create better APIs—faster.

www.postman.com

설치까지 다 했다면 실행 후 호출할 주소창에 https://api.openai.com/v1/completions를입력하고 호출 방법은 POST를 선택한다.


CHAT GPT OPEN API는 Bearer 인증방식을 취하고 있는데 
이 설정방법을 소개하려 한다.
Authorization탭으로 이동한다.
그리고 Type에서 BearerToken을 선택하고 Token에 아까 받아온 api key를 입력하면 된다.   

그다음으론 전송할 데이터를 입력해야 하는데 소스를 보면 json형식이니 모델과 메세지를 보내야 하는데 Body로 이동해 raw라디오 버튼을 선택하고 아래처럼 json을 입력하면 된다.

{
    "model""gpt-3.5-turbo",
    "messages": [
        {
            "role""user",
            "content""Hello!"
        }
    ]
}

이제 Send를 눌러 결과를 확인해보자.

API문서에 따르면 이런 규격의 response를 보게 될 것 같다.(정확하진 않다.)
{
   "id":"chatcmpl-abc123",
   "object":"chat.completion",
   "created":1677858242,
   "model":"gpt-3.5-turbo-0301",
   "usage":{
      "prompt_tokens":13,
      "completion_tokens":7,
      "total_tokens":20
   },
   "choices":[
      {
         "message":{
            "role":"assistant",
            "content":"\n\nThis is a test!"
         },
         "finish_reason":"stop",
         "index":0
      }
   ]
}

하지만 아래 같은 결과를 확인할 수 있다.

{
    "error": {
        "message""You exceeded your current quota, please check your plan and billing details.",
        "type""insufficient_quota",
        "param"null,
        "code""insufficient_quota"
    }
}

돈 내란다. -_-

이상하다.
chat gpt 사이트에는 분명 이렇게 5딸라까지 호출 여유가 있는데 쿼터를 오버했다니....

자세히보니 Expires가 2023년 7월 1일까지라 그런것 같다.
오늘은 8월이다.

오호라 아이디를 그럼 새로 파서 API KEY를 신청하면 5딸라 받아 테스트 가능하겠네?
신나게 아이디를 새로 파보니 그새 또 뭔가 달라졌나보다 -_-

예전에 생성했던 계정은 만료 5딸라가 보이지만 오늘 새로 생성한 chatgpt 계정은 그른그 읎다.
그냥 set up a paid account 답정이다.
역시 m$인가?

검색해보니 예전엔 18딸라까지 무료 지원을 했었는데 그마저도 5딸라로 개악된듯하고
이젠 그마저도 지원 안하나보다.

카드 정보 입력하기 껄끄러워 여기까지만 진행해야겠다.

반응형
Posted by Hippalus
,

반응형

요즘 구글 알파고와 이세돌의 바둑 대결로 그 어느때보나 바둑과 인공지능에 대한 관심이 높아지는 시기이다.

현재 스코어는 3:0으로 구글의 승리로 일찌감치 결정되어졌지만 앞으로 과연 이세돌 9단이 1판 이라도 이길 수 있을지가 오히려 궁금증을 자아내는 형국이다.

그도 그럴것이 알파고는 3판 모두 대국 종료 후 수를 카운트 하지 않는다는 불계승을 거두었기 때문이다.





프로그래머라면 누구나 한번쯤은 스스로 사고하는 인공지능에 대한 흥미를 느끼지 않을 수 없다.

물론 나와 같은 일반인 수준의 프로그래머들은 몇차례 시도하다 역시 나따위가 범접할 수 있는 영역이 아니구나 하며 조기 포기를 택하지만 말이다.





처음 인공지능 연구가 시작되었을 땐 사람과 같은 사고를 할 수 있는 이른바 "강한 인공지능"에 대한 연구가 주를 이루었다.


예를 들어 책상이란 기호와 공이란 기호 그리고 책이란 기호를 입력해두고

위와 아래라는 개념 역시 기호로 입력해 두면 컴퓨터 인공지능은 책상 위에 공이 있다 없다를 알아맞출 수 있다라는 가정하에 일어난 연구였다.


물론 가능은 했다.


컴퓨터는 계산을 하기 위해 만들어진 기계였으므로 당연히 홈그라운드인 계산에 기초한 사물 판단이 가능하다라는건 어찌보면 지극히 당연하고도 쉬운 문제였고 이것을 "계산주의"라 불리웠다.



하지만



세상 모든 만물에 대해 모두 기호로 표현하자니 불가능에 가까웠기에 기술적 한계에 봉착하게 되고 만다.


이렇듯 "계산주의"의 한계 때문에 자연스럽게 대두된 것이 "연결주의"인데 인간의 뇌를 구성하는 뉴런들의 역할을 기초로 외부 자극에 서로 연결된 뉴런들이 전달을 반복하여 최종 반응 뉴런에 의한 동작이 일어날 수 있는 생명체에 기초한 주의라 한다.


즉 날라오는 공을 확인한 시신경을 통해 전달된 물체를 근육 스스로 움직이는게 아닌 뉴런들이 정보의 자극(전달)을 통해 최종 팔 근육을 움직이게 된다는 내용처럼 기본을 제공해주고 인공지능 스스로 학습을 하게 만든다는 "연결주의"는 아이처럼 기본적인 학습 능력을 갖추고 태어나 끊임없이 부모에게 묻는다면 개편리 할 것 같다.


"엄마 이건 뭐야?"


하지만


이역시 한계가 존재한다.


일단 기술적으로 이번 알파고와 이세돌의 대국처럼 바둑 한판을 두는데도 CPU가 1,200개 넘게 필요했다.

다소 지난 구글의 시도였지만 유튜브 비디오에서 무작위로 추출한 1천만개의 이미지를 인공신경망에 인식한 다음 표준 기계 학습 방식을 통해 인공지능(신경망)이 스스로 이미지에 이름을 붙여 분류할 수 있도록 만들었다던 연구 결과에서는 CPU의 개수가 16,000개 이상 필요하였다.

http://www.bloter.net/archives/116498

최초의 전자계산기인 에니악과 요즘의 스마트폰을 격차를 생각하면 CPU야 발전하면 그만이지만 가장 큰 문제는 뉴런을 모방하려 들었지만 정작 뉴런의 비밀이 정확히 파악되진 않았다란 점이라 하겠다.


이렇듯 기술과 생명의 궁금증이야 그걸로 밥벌어 먹는 사람들이 잘 고민하면 해결될 것이고 우리가 걱정해야 하는건 다름아닌


인류멸망!!! 아니겠는가?


옵티머스프라임이 살았다던 기계 행성도 원래는 사람같은 생명체가 지배하다 강한인공지능을 개발해내고 이 강한 인공지능은 행성에서 사라져야 할 가장 큰 위험 요소를 스스로 학습하여 생명체를 소멸 시켜버리고 기계 문명을 싹틔운건 아닌가!!!!!!?????


아 무섭다~~~~ 바들바들


그러나


이번 알파고와 이세돌간의 대국 결과를 두고 연신 세계 종말이네 어쩌네 호들갑들을 떨지만 아직까진 알파고와 같이 딥러닝 알고리즘을 활용해 인간의 인식, 판단, 추론 능력은 약한 인공지능이므로 그냥 오버라 치부할만 하다.


적어도 불안에 떨 수준이 되려면

사회 구성원들이 상품의 선택이나 주식의 매도 타이밍 따위의 결정이 아닌 국민 대다수의 생사와 연결되는 주요 결정권을 기계에 맡기게 되는 시기가 아닐까 싶다.


물론 그런 시기가 도래하기 전 강한 인공지능을 상품화 하려는 회사는 반드시 이렇게 말할것이다.


"이젠 로봇이 대신 일해주고 먹여주는 세상이 왔습니다. 일하지 말고 주식회사 ㅇㅇ로봇의 서비스를 가정에서 편하게 받아보세요"



세상에 공짜는 없다.

그런일이 일어난다면 한국형 러다이트 운동이라도 벌여야 할 지 모르겠다.

(다큐로 받아들이진 말자. 러다이트 운동은 사실 단순한 기계파괴 운동은 아니었다한다.)


끝으로

인류멸망이든 강한 인공지능이든 간에 앞으로 이 땅에서 기사들을 몇가지 예언해보며 매듭지으려 한다.


ㅇㅇ일보

"한국형 알파고 개발 박차를 가한다."

"한국형 알파고 개발 지원에 ㅇㅇ조 지원!"

"대전에 세계최초 인공지능 마에스트로高 첫삽"

"열악한 현실. 인공지능 박사들 해외로 해외로"

"프로그래머 앞으로 ㅇㅇ년 이내 사라질 직업 ㅇ위!"


ㅇㅇ문고

"이세돌처럼 생각하고 알파고처럼 판단하라"

"(알)며 (파)고드는 (고)등수학"

반응형
Posted by Hippalus
,