본문 바로가기
개발&코딩

인공지능을 이용한 자동화 코딩 하는법 - OpenAI 라이브러리, Python, Node.js

by 우동이 2022. 9. 17.
300x250

최근에 알게 되었는데 GPT-3을 통해 인공지능이 대신 코딩해주는 기능이 있다고 하더라고요?

 

 

 

OpenAI API

OpenAI is an AI research and deployment company. Our mission is to ensure that artificial general intelligence benefits all of humanity.

openai.com

open API

Python에서 호출한 open API 인 듯합니다.

죄다 영어라 모르겠어서 튜토리얼을 참고했습니다.


openapi - python

쭉 쭉 읽어보니 자사의 davinci002라는 모델을 이용해 AI 코딩에 대한 소개가 나오고

Python 기준 API 사용법에 대해  나와있습니다.

먼저 프로젝트를 깃허브에서 다운로드해옵니다.

git clone https://github.com/openai/openai-quickstart-python.git

python project file

그럼 프로젝트가 다운로드되는데

cd openai-quickstart-python
cp .env.example .env

뭐 quickstart폴더로 들어가. env.example 파일을. env 파일로 하나 더 복사하라고 합니다.

그대로 해준 후 

openai API SECRET KY

SECRET KEY 값을 복사해서. env 파일의 OPENAI_API_KEY에 넣어줍니다.

.env 파일 OPENAI_API_KEY값 삽입

이후 가상 환경(venv) 설정을 하긴 하는데 저는 건너뛰고 파이썬 모듈들을 설치해준 후 바로 실행해봤습니다.

python -m venv venv #가상환경 설정 저는 건너뜀
. venv/bin/activate #가상환경 실행 저는 건너뜀
pip install -r requirements.txt # 파이썬 모듈 한번에 설치
flask run

 

http://127.0.0.1:5000/

펫 이름을 지정하는 프로그램이 실행되었네요 

아래 버튼은 이름을 무작위로 생성하는 듯하고요

 

해당 파일의 코드를 살펴보면 아래와 같습니다.

더보기

파일 코드

import os

import openai
from flask import Flask, redirect, render_template, request, url_for

app = Flask(__name__)
openai.api_key = os.getenv("OPENAI_API_KEY")

response = openai.Completion.create(model="text-davinci-002", prompt="Say this is a test", temperature=0, max_tokens=6)
@app.route("/", methods=("GET", "POST"))
def index():
    if request.method == "POST":
        animal = request.form["animal"]
        response = openai.Completion.create(
            model="text-davinci-002",
            prompt=generate_prompt(animal),
            temperature=0.6,
        )
        return redirect(url_for("index", result=response.choices[0].text))

    result = request.args.get("result")
    return render_template("index.html", result=result)


def generate_prompt(animal):
    return """Suggest three names for an animal that is a superhero.

Animal: Cat
Names: Captain Sharpclaw, Agent Fluffball, The Incredible Feline
Animal: Dog
Names: Ruff the Protector, Wonder Canine, Sir Barks-a-Lot
Animal: {}
Names:""".format(
        animal.capitalize()
    )

코드를 살펴보셨다면 자신의 동물이 Cat, Dog 일 경우 지정된 이름을 출력한다는 걸 알 수 있습니다.


Animal: Cat
Names: Captain Sharpclaw, Agent Fluffball, The Incredible Feline
Animal: Dog
Names: Ruff the Protector, Wonder Canine, Sir Barks-a-Lot

입력값 : Cat

Cat을 입력했을 경우 위 코드 주석에 달린 값이 그대로 나옵니다.

보니까 Sharpclaw라는 이름이 직역하면 날카로운 발톱이고

애니메이션 캐릭터 주인공인가 보더라고요 

입력값 : Dog

주석에 나와있는 값이 나오지는 않았는데

어메이징 스파이더 독, 인크레더블 헐크 독 ㅋㅋ 어벤저스 강아지 이름이네

Say this is a test - test

테스트를 사용하면 테스트 네임을 출력합니다.

 

여기까지 이 코드는 슈퍼히어로 동물 이름을 짓는 예시 프로그램으로써

OpenAI API에 대한 사용법에 대한 기초적인 예시라고 할 수 있습니다.

해당 OpenAI 모듈은 Python, Node.js 에서 라이브러리로 제공되고 있으며

모든 언어의 HTTP 요청을 통해 API와 상호작용 할 수 있다고 합니다.

 


언어별 OpenAI 라이브러리 사용법

 

Python

pip install openai

Node.js

npm install openai

 

라이브러리 설치 후 API에 대한 인증키를 사용해야 합니다.

 

 

OpenAI API

An API for accessing new AI models developed by OpenAI

beta.openai.com

인증키는 위 사이트에서 제공받을 수 있습니다.

 

이 API Key는 어디까지나 Secret KEY 임으로 공유나 외부 노출하지 않을 것을 권장합니다.

 

 

Python 패키지의 인증키 예시

import os
import openai

openai.organization = "org-S9bnWV4O9kqNmnrrEjNjO39L"
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.Model.list()

 

Node.js 패키지의 인증키 예시

import { Configuration, OpenAIApi } from "openai";
const configuration = new Configuration({
    organization: "org-S9bnWV4O9kqNmnrrEjNjO39L",
    apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);
const response = await openai.listEngines();

여기까지 OpenAI 라이브러리에 대한 Python과 Node.js에 대한 기초적인 사용법이었습니다.

코드 없는 개발이라니 괜찮은 기술인 듯합니다.

저도 영어로 된 공식 문서를 뒤져가며 배워본 건 이게 처음인 것 같은데

심심할 때마다 한 번씩 해봐야겠습니다.


 

참고

 

OpenAI API

An API for accessing new AI models developed by OpenAI

beta.openai.com

 

 

GitHub - openai/openai-python

Contribute to openai/openai-python development by creating an account on GitHub.

github.com

 

 

Iptables 기초 사용법과 옵션 정리 -1 , 방화벽, Netfilter, 리눅스

Iptables이란 Iptables는 C로 개발된 리눅스 커널 방화벽입니다. 현재 주요 리눅스 배포 OS에 내장되어 있으며 현재는 리눅스 커널 3.13 버전 이후의 nftables이 후속 버전으로 출시되어 있습니다. Iptables

hobbylists.tistory.com

 

 

광주 수완지구 항공 촬영 사진 - 드론 촬영지 추천

*포스팅에서 사용되는 모든 사진은 상업적 목적으로 촬영되었으므로 무단 사용을 금합니다.* 제 본가는 전...

blog.naver.com

 

 

300x250

댓글