본문 바로가기

AI

5분만에 GPT-3 연동 웹사이트 만들기

웹사이트 예시

포스팅 시기 24년 6월 28일. 세상이 워낙 빠르게 변하니 변경사항이 존재 할 수 있음.

해당 포스팅은 macOS 환경에서 수행 됨, 준비물은 Python3

빠르게 가보자고

1. 환경세팅

# 1. 프로젝트 폴더 생성
mkdir sml_project
cd sml_project

# 2. 가상환경 생성
python3 -m venv venv

# 3. 가상환경 활성화
source venv/bin/activate

# 4. 가상환경에 필요한 패키지 설치 (flask, openai, python-dotenv)
pip install flask openai python-dotenv

# 5. 패키지 업데이트
pip install --upgrade openai

# 참고. 가상환경 비활성화 방법
deactivate

가상환경을 만들어서 사용하는 이유는 그냥 pip install 을 하려고하면 시스템 전체에 직접 Python 패키지를 설치가 될 수 있음.
macOS의 최근 버전에서는 시스템 Python 환경을 보호하기 위해서 패키지를 가상환경에 설치하도록 제한함.

설치한 라이브러리
flask:파이썬 웹 프레임워크
python-dotenv: 환경변수 관리 라이브러리
openai: 오픈ai 라이브러리

2. 파일생성

파일구조

프로젝트 폴더 안에 아까 만든 venv 폴더만 존재할텐데 위 이미지 처럼 파일을 생성해야됨.

app.py 파일 - 이 프로젝트에서 가장 기본이 되는 파일

from flask import Flask, request, jsonify, render_template
import os
from dotenv import load_dotenv
from openai import OpenAI

app = Flask(__name__)
load_dotenv()

client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

@app.route('/')
def home():
    return render_template('index.html')

@app.route('/generate', methods=['POST'])
def generate_text():
    prompt = request.json['prompt']
    try:
        response = client.completions.create(
            model="gpt-3.5-turbo-instruct",  # Using an instruction-following model
            prompt=prompt,
            max_tokens=150,
            n=1,
            stop=None,
            temperature=0.7,
        )
        return jsonify({"response": response.choices[0].text.strip()})
    except Exception as e:
        return jsonify({"error": str(e)}), 500

if __name__ == '__main__':
    app.run(debug=True)

 

.env 파일 - 환경변수를 저장하는 파일, 대부분 민감정보를 이 파일에 넣는 경우가 많음(db정보나 api의 키값 같은 것들)
아까 설치한 dotenv 를 이용해 이 파일 활용

your-openai-api-key-here 에 본인의 openai api key 를 넣어야된다. 

키를 가져오는 방법은 해당 블로그를 참고하였음 (링크) (Jiwon Kang 님의 velog)

OPENAI_API_KEY=your-openai-api-key-here

 

templates/index.html 파일 - 화면이 되어 줄 HTML 파일

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Simple SLM Demo</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            max-width: 800px;
            margin: 0 auto;
            padding: 20px;
        }

        #response {
            margin-top: 20px;
            white-space: pre-wrap;
        }
    </style>
</head>

<body>
    <h1>Simple SLM Demo</h1>
    <textarea id="prompt" rows="4" cols="50" placeholder="Enter your prompt here..."></textarea>
    <br>
    <button onclick="generateText()">Generate</button>
    <div id="response"></div>

    <script>
        function generateText() {
            const prompt = document.getElementById('prompt').value;
            const responseDiv = document.getElementById('response');
            responseDiv.innerText = 'Generating...';

            fetch('/generate', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                },
                body: JSON.stringify({ prompt: prompt }),
            })
                .then(response => response.json())
                .then(data => {
                    if (data.error) {
                        responseDiv.innerText = 'Error: ' + data.error;
                    } else {
                        responseDiv.innerText = data.response;
                    }
                })
                .catch((error) => {
                    responseDiv.innerText = 'Error: ' + error;
                });
        }
    </script>
</body>

</html>

 

 

이제 모든 준비가 끝났다. 실행만 하면된다. 정말 쉽다.

3. 실행

터미널을 통해 app.py 를 실행시켜준다. 이 때 아까 만든 가상환경 내에서 해야된다는 것을 잊지 말자

# 가상환경 활성화
source venv/bin/activate
# app.py 실행
python app.py

 

4. 결과

앞으로 AI 활용할 수 있는 길이 많아 질 것이다. 틈틈히 공부해보자