[태그:] OpenAI

  • OpenAI API 통신클래스 – 함수 사용 설명서

    본 포스팅은 그누보드 컨텐츠몰에서 판매하는 OpenAI API 통신 클래스의 함수 설명을 위한 페이지 입니다.

    [OPEN API 통신 클래스](https://sir.kr/cmall/1718185825)

    압축 파일을 해제하면 /source/lib 폴더안에 copenai.lib.php 파일이 존재합니다.

    파일 안에는 아래와 같은 구조의 클래스가 선언되어있답니다.

    class OpenAIApiUtf8 {
      function __construct($key,$apiURL = 'https://api.openai.com/v1/chat/completions');
      public function send($strData,$strBeforeQuestion="",$strAssistant="",$maxLength=3000,$model='35t');
      public function generateImage($prompt, $model = '3', $imgsize = '1024x1024');
      function ChangeAPIKey($key);
    }

    각 함수의 기능을 설명해드리겠습니다.

    class OpenAIApiUtf8

    생성자 : function __construct($key,$apiURL = 'https://api.openai.com/v1/chat/completions')

    OpenAIApiUtf8 클래스는 OpenAI의 GPT나 DALL-E API를 쉽게 이용하기 위한 클래스입니다.

    매게변수
    $keyOpenAI에서 발급받은 API키를 입력해주시면 됩니다.
    $apiURLOpenAI에서 GPT와 연결할 사이트 주소로 생략이 가능합니다.
    기본 값은 ‘https://api.openai.com/v1/chat/completions’입니다.

    아래와 같이 선언하여 사용할 수 있습니다.

    $cOpenAI = new OpenAIApiUtf8("발급받은 APIKEY");

    ChangeAPIKey

    함수 원형 : function ChangeAPIKey($key)

    이 함수는 OpenAIApiUtf8 클래스를 생성할 때 설정한 API를 변경할 때 이용합니다.

    매게변수
    $keyOpenAI에서 발급받은 API키를 입력해주시면 됩니다.
    예제
    $cOpenAI->ChangeAPIKey("발급받은 APIKEY");

    send

    함수 원형 : public function send($strData,$strBeforeQuestion="",$strAssistant="",$maxLength=3000,$model='35t');

    send 함수는 OpenAI API를 이용해 질문을 보내고 답변을 받아오는 기능을 수행합니다.

    매게변수
    변수명기본값기능
    $strDataGPT에게 하고 싶은 질문을 하면 됩니다.
    $strBeforeQuestion“”GPT와 대화를 이어가고 싶을 때 이전 질문을 입력하면 됩니다.(생략가능)
    $strAssistant“”GPT와 대화를 이어가고 싶을 때 이전 질문의 답변을 입력하면 됩니다.(생략가능)
    $maxLength3000가져올 답변의 최대 토큰수를 입력하면 됩니다.(생략가능)
    $model’35t’GPT 모델을 지정해주면 됩니다.(생략가능)
    35t : GPT-3.5 Turbo
    4o : GPT-4o
    45t : GPT-4 Turbo
    45 : GPT-4

    예제
    print_r( $cOpenAI->send("다음은 무슨 과일에 대한 설명일까? 동그랗고 빨개.") );
    
    // GPT-4o로 대화를 원할 경우
    print_r( $cOpenAI->send("다음은 무슨 과일에 대한 설명일까? 동그랗고 빨개.", "", "", 3000, '4o') );

    generateImage

    함수 원형 : public function generateImage($prompt, $model = '3', $imgsize = '1024x1024');

    Dall-E를 이용해 이미지를 그리고 싶을 때 이용하는 함수입니다.

    이 함수를 이용해 이미지를 그려달라고 요청하면 그려진 이미지의 URL이 반환됩니다.

    매게변수
    변수명기본값기능
    $promptDall-e에게 요청할 그림 프롬프트입니다.
    $model‘3’Dall-E 버전을 설정할 수 있습니다.(생략가능)
    3 : Dalle-3
    2 : Dalle-2
    $imgsize‘1024×1024’이미지 크기를 설정할 수 있습니다.(생략가능)

    예제
    print_r( $cOpenAI->generateImage("하늘을 나는 자동차를 그려줘.") );
    
    // Dall-e2로 그림을 그리기 원하는 경우
    print_r( $cOpenAI->generateImage("하늘을 나는 자동차를 그려줘.", "2", "900x900") );

    이상 OpenAI 통신 클래스에 대한 설명을 마치도록 하겠습니다.

    감사합니다.

  • 랜덤 문단/단어 추출 – 통합편

    여러 글을 작성해야할 때 여러 문단과 단어를 작성해두고 랜덤으로 문단과 단어를 추출해 글을 자동으로 작성해주는 기능을 Javascript로 만들어보겠습니다.

    최근에 올렸던 랜덤 문단 추출 기능랜덤 단어 추출 기능을 합쳐볼 예정입니다.

    랜덤 단어 양식

    랜덤으로 “사과”, “배”, “바나나” 중 하나를 추출하는 것을 가정해보겠습니다.

    일반 문장에서 자주 사용되지 않을 문자인 파이퍼(|)로 구분을 지어보겠습니다.

    이것은 사과|배|바나나입니다.

    어느 영역이 랜덤 단어가 모여있는지 구별하기 위해 대괄호([ ~]})로 감싸보겠습니다.

    이것은 [사과|배|바나나]입니다.

    이 문장을 변환하면 대괄호 안에 있는 ‘사과’, ‘배’, ‘바나나’ 중 하나가 선택되어 아래와 같이 출력 된 답니다.

    이것은 배입니다.

    랜덤 문단 양식

    이번엔 여러 줄의 글을 작성하고 그 중 하나의 줄만 추출하는 것을 해보겠습니다.

    각 줄은 엔터로 구분이 되고 처음과 끝을 나타내는 구역을 ‘[[‘와 ‘]]’로 묶는 방식을 이용해보겠습니다.

    [[
    첫 번째 문단입니다.
    두 번째 문단입니다.
    세 번째 문단입니다.
    ]]

    위와 같이 입력하고 변환을 하면 세 개의 문단 중 임의 줄 하나가 선택되어 출력됩니다.

    세 번째 문단입니다.

    랜덤 문단/단어 양식

    이번에는 위의 두 가지 방법을 모두 사용해보겠습니다.

    아래와 같이 예제 문장을 만들어봤습니다.

    [[
    이것은 [사과|배|바나나]입니다.
    저것은 [사과|배|바나나]입니다.
    [이것|저것]은 [사과|배|바나나|과자][이다.|입니다.|네요.]
    ]]

    위와 같이 입력하고 변환을 하면 아래와 같이 임의의 문단과 단어가 선택되어 출력됩니다.

    저것은 바나나입니다.

    랜덤 문단/단어 사용해보기

    사용된 코드는 아래와 같습니다.

    <script>
    function extractRandomString() {
      const inputString = document.getElementById('inputString').value;
      const delimiter = '|'; // 구분자
      const extractPattern = /\[(.*?)\]/g; // 추출할 구역 패턴, 글로벌 플래그 추가
    
      if (inputString === '') {
        alert('텍스트를 입력하세요.');
        return;
      }
    
      // replace 함수 내에서 랜덤 선택 로직을 적용
      const resultString = inputString.replace(extractPattern, (match, group1) => {
        const choices = group1.split(delimiter);
        const randomChoice = choices[Math.floor(Math.random() * choices.length)];
        return randomChoice;
      });
    
      document.getElementById('result').textContent = RandomSentence (resultString); // 결과를 화면에 출력
    }
    
    function RandomSentence(str) {
      const regex = /\[\[([\s\S]*?)\]\]/g;
      let sentences = [];
      let match;
    
      while (match = regex.exec(str)) {
        sentences = match[1].split(/\r?\n/).filter(Boolean);
        const randomIndex = Math.floor(Math.random() * sentences.length);
        const selectedSentence = sentences[randomIndex].trim();
        str = str.replace(match[0], selectedSentence);
        regex.lastIndex -= match[0].length - selectedSentence.length;
      }
    
      return str;
    }  
    </script>
  • 랜덤 문단 뽑기

    이전 포스팅에서는 Javascript를 통해 특정 영역안에 단어를 임의로 추출하는 기능을 만들어봤는데요.

    이번에는 특정 영역안에 문단글을 넣어놓고 임의로 추출하는 기능을 만들어볼게요.

    랜덤 문단 추출 함수

    function RandomSentence(str) {
      const regex = /\[\[([\s\S]*?)\]\]/g;
      let sentences = [];
      let match;
    
      while (match = regex.exec(str)) {
        sentences = match[1].split(/\r?\n/).filter(Boolean);
        const randomIndex = Math.floor(Math.random() * sentences.length);
        const selectedSentence = sentences[randomIndex].trim();
        str = str.replace(match[0], selectedSentence);
        regex.lastIndex -= match[0].length - selectedSentence.length;
      }
    
      return str;
    }  

    1. 정규 표현식 활용: [[…]]로 둘러싸인 부분을 찾기 위해 정규 표현식을 사용합니다. 이는 대괄호 안에 포함된 모든 내용을 찾아낼 수 있게 해 줍니다.

    2. 문장 분리 및 선택: 찾아낸 텍스트에서 각 줄을 분리한 후, 비어 있지 않은 줄만을 골라내어 배열에 저장합니다. 이 배열에서 무작위로 한 문장을 선택합니다.

    3. 텍스트 교체: 원래 문자열에서 [[…]] 부분을 무작위로 선택된 문장으로 대체합니다.

    4. 인덱스 조정: 문자열 내에서 다음 매칭을 위해 현재 위치를 조정합니다. 이는 선택된 문장 길이에 따라 동적으로 변경됩니다.

    랜덤 문단 추출기능


    랜덤 단어 뽑기 글 보러가기

  • 랜덤 단어 뽑기

    텍스트에서 특정 구분자를 기준으로 랜덤한 단어를 추출하는 Javascript 코드를 만들어봤습니다.

    예를 들어, “이것은 [사과|바나나|포도] 입니다.”라는 문자열을 입력하면 [ ~ ] 사이에 있는 “사과”, “바나나”, “포도” 중 하나의 과일 이름이 랜덤하게 선택되어 출력되는 기능입니다.

    우선 문자열을 입력할 textarea를 만들어보겠습니다.

    <textarea id="inputString" placeholder="이것은 [문자1|문자2|문자3] 입니다."></textarea>

    그리고 텍스트에서 랜덤 문자열을 추출하는 스크립트를 만들어보겠습니다.

    <script>
    function extractRandomString() {
      const inputString = document.getElementById('inputString').value;
      const delimiter = '|'; // 구분자
      const extractPattern = /\[(.*?)\]/g; // 추출할 구역 패턴, 글로벌 플래그 추가
    
      if (inputString === '') {
        alert('텍스트를 입력하세요.');
        return;
      }
    
      // replace 함수 내에서 랜덤 선택 로직을 적용
      const resultString = inputString.replace(extractPattern, (match, group1) => {
        const choices = group1.split(delimiter);
        const randomChoice = choices[Math.floor(Math.random() * choices.length)];
        return randomChoice;
      });
    
      document.getElementById('result').textContent = resultString; // 결과를 화면에 출력
    }
    </script>

    위의 코드를 활용해서 아래에 직접 구현을 해봤습니다.

    랜덤 단어 추출


    랜덤 문단 뽑기