스테이블디퓨전의 한계와 내 꾸져먹은 PC와 3060의 한계를 느끼고 고급 API를 사용해보도록 한다.....
바뀐프로세스는 아래와 같다.
원래 대로는 비슷하긴 하지만 조금의 API 비용을 투자해야 한다.
참고로 한 달에 500개의 512x512 이미지를 생성한다고 가정했을때 비용은 아래와 같다.
- DALL·E API 비용: 500 x $0.018 = $9.0 (약 12,000원)
Craiyon (DALL·E Mini)을 사용해 무료로 이미지를 생성할 수 있지만 품질은 DALL·E보다 낮다는 말에
스테이블 디퓨전 정도의 품질을 기대하느니 차라리 조금 투자해보기로 한다.
한달에 만원이면 커피 좀 덜마시면 되지 안그래?
프로세스 요약
- 사용자 요청 처리:
- 사용자가 텍스트 요청(예: "화가 난 사람")을 입력.
- 텍스트 분석 및 프롬프트 생성:
- 간단한 자연어 처리로 사용자의 요청을 영어로 변환하거나, 감정을 분석해 최적의 프롬프트 생성.
- DALL·E API 호출:
- OpenAI DALL·E API를 사용해 프롬프트에 맞는 이미지를 생성.
- 이미지 반환:
- Flask 서버에서 생성된 이미지를 클라이언트로 반환.
좋다............
기존의 스테이블디퓨전은 잊어버리자!!!!!!!
5시간의 고생 + 공부(삽질)은 ..............
새로 시작해보자구~
필요한 준비
- OpenAI API Key 발급:
- OpenAI에서 API Key를 발급받아 사용: OpenAI API.
- Python 패키지 설치:
- OpenAI Python 라이브러리 설치:
pip install openai flask
Flask 서버 구축:
- 사용자 요청을 처리하고, OpenAI API와 통신.
일단 기존에 있던 로라폴더와 허깅페이스로그인.py는 싹 날려준다.
날려주는 이유는 아래와 같다.
#보면 볼수록 가슴이 미어지기 때문
app.py는 남겨두고 OpenAI의 API 키를 발급받아 보겠다.
1. OpenAI 웹사이트 방문
- 브라우저에서 OpenAI 웹사이트로 이동
- 회원가입 (Google 계정으로 빠르게 가입 가능)
- 가입 후 로그인하면 OpenAI의 대시보드로 이동
2. API 키 생성
- 대시보드 상단 메뉴에서 **"API Keys"**를 클릭
- "Create new secret key" 버튼을 클릭하여 API 키를 생성
- 생성된 키를 복사해 안전한 곳(예: 노트패드)에 저장
- 예시 키: sk-abcdefghijklmnopqrstuvwx123456
보통의 API를 끌어다 쓰는 과정은 모두 비스무리한 것 같다.
회원가입하고... 토큰발급이나 키를 발급받고...... 이러한 방식들~
빠르게 만들어주고~ 다음으로 넘어가자 .
2단계: 필요한 라이브러리 설치
OpenAI API와 Flask 서버를 사용하려면 필요한 라이브러리를 설치해야 한다.
pip install openai flask
이전에 생성해 둔 가상환경 (venv)에서 작업하는건 필수다.
준비완료!
설치가 완료되었으니 이제 로직을 만들어보자.
app.py에서 기존에 있던걸 싸악 ~ 날려주고
from flask import Flask, request, jsonify
import openai
app = Flask(__name__)
# OpenAI API Key 설정
openai.api_key = "YOUR_API_KEY" # 발급받은 OpenAI API 키를 여기에 입력하세요.
@app.route('/generate', methods=['POST'])
def generate_image():
try:
# 사용자 요청 데이터 받기
data = request.json
user_input = data.get("prompt", "a cat sitting on a chair")
# 최신 OpenAI API로 이미지 생성 요청
response = openai.Image.create(
prompt=user_input,
n=1,
size="512x512"
)
# 생성된 이미지 URL 반환
image_url = response['data'][0]['url']
return jsonify({"image_url": image_url})
except Exception as e:
return jsonify({"error": str(e)}), 500
if __name__ == "__main__":
app.run(debug=True)
아래처럼 코드를 작성한다.
/generate로 Post API 요청을 하면 사진으로 응답오는것은 같지만
내부의 로직이 조금 달라졌다.
이전에 스테이블 디퓨전은 자연어가 아닌 프롬프트 형식으로 자세하게 써야만() 원하는 결과값을 도출해낼수 있었다면
OpenAI api는 챗봇에 내가 원하는 걸 말하면 자연어 처리로 사용자의 요청을 영어로 변환하거나 분석해 최적의 프롬프트를 알아서 생성해서 이미지를 만들어낸다!!!!
- 직접 프롬프트 작성은 고급 사용자나 세부 조정을 원하는 사람들에게 적합
- 챗봇 방식은 직관적이고 빠르게 원하는 결과를 얻고자 하는 초보자 또는 비전문가에게 적합
직접 프롬프트에 작성한다는 말이 사용하지 않은 분들 입장에서 이해하기 어려울 수 있는데 직접 써보면 안다.
프롬프트를 아주아주 정밀하게 작성해야 원하는 값이 나올 확률이 높아진다.....
프롬프트의 예시는 civitai에 들어가면 자세하게 확인할 수 있따.
예를 들어 귀여운 고양이 사진을 도출하려면 주저리주저리 프롬프트를 아래 이미지처럼 잔뜩 넣어줘야한다.
프롬프트
웃는 고양이의 그림, 르네상스 시대의 유화 예술 스타일, 명작, 르네상스 무드, 르네상스 유화, 붓질, 판타지 일러스트레이션 스타일로 시청자를 상상의 세계, 서사시적 풍경, 영웅적 모험으로 안내하며 경이로움과 영감을 불러일으킵니다
부정적프롬프트(필터링 개념)
페인팅 프레임, 시그니처, 워터마크, 사진, 사실감, 사실감, 추악한, 중심을 벗어난, 변형된, 35mm 필름, dslr, 크롭, 프레임, 최악의 품질, 저품질, 로우레스, JPEG 유물, 시그니처, 워터마크, 사진, 사실감, 추악한, 중심을 벗어난, 변형된, 35mm 필름, dslr, 크롭, 프레임, 최악의 품질, 저품질, 로우레스, JPEG
유물
하지만! 챗봇처럼 내가 원하는 자연어를 말하면 자연어를 처리해서 최적의 프롬프트를 만들어주는 API를 사용한다는게 다른점이라는 사실이다.
API를 보내는 요청자 입장에서 보면 똑같지만 뒤에서는 이렇게 로직이 크게 달라진다.
또한 내가 직접 AI이미지 생성서버를 기동하고 관리하는게 아닌 openAI에서 이미 만들어놓은 클라우드 환경에 나 역시 API만 써서 이미지를 만들어달라고 요청하는 것이다.
웹사이트에서 원하는 이미지를 텍스트로 입력하는 사용자 -> 내 flask서버 -> OpenAI DALL·E API 서비스
API를 쏴보니 Billing hard limit has been reached 라고 나온다.
빌링 어쩌구는 보통 돈 내라는 뜻이다.
50달러 결제완료 ㅠㅠ ......
남의것을 가져다 쓰는데 이정도 지출은 뭐........ 라고 마음을 안정시키자.
#라고 생각했는데 그냥 제한 항목에서 Monthly Spend Limit이 $0로 설정되어 있어서 더 높은 값으로 설정하면 되는거였다. 글을 잘 읽지 않으면 돈을 쓰게된다....................
아무튼 다시 API를 요청해보자.
Postman으로 화가난 사람이라고 이미지를 뽑아달라고 요청했다.
그랬더니 🌺꽃🌺이 나옴?
ㅋㅋ
영어로 해보자.............
마치 내 현재 심정만큼 잘나온다..........
이거다..........
하나 더 해보자.
너무 화가 난 나머지 6손이 되어버렸다. 아주 잘나온다. 만족스럽다.
5장 정도 내외로 테스트 했을때 가격은 0.07달러다 (98원)
5장에 백원... 50장에 천원 500장에 만원...... 적당히 싸다.
저렴하군.
이걸 기반으로 만들어보겠다....... 으흐흐.... 다음화에 계속
'만들고 싶은거 만들기' 카테고리의 다른 글
광고 수익을 창출할 웹사이트 만들어보기 2-6(React-Flask연동 feat.CORS) (2) | 2024.12.04 |
---|---|
광고 수익을 창출할 웹사이트 만들어보기 2-5(React.js 프로젝트 만들기) (1) | 2024.12.04 |
광고 수익을 창출할 웹사이트 만들어보기 2-3 (Stable Diffusion 파고들기 With LoRA삽질) (0) | 2024.12.03 |
광고 수익을 창출할 웹사이트 만들어보기 2-2 (stable Diffusion 사용) (0) | 2024.12.03 |
광고 수익을 창출할 웹사이트 만들어보기 2-1 (flask 개발환경 만들기) (0) | 2024.12.03 |