포스팅 시기 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 활용할 수 있는 길이 많아 질 것이다. 틈틈히 공부해보자