어떻게 하면 잘 정리했다고 소문이 날까...
[요저개 6편] Open AI API 활용하기 - DallE 3편 본문
👋🏻 Introduction
안녕하세요 ! 오늘은 Open AI에서 제공하는 API를 활용해 DallE 3 모델로 그림을 그리는 작업을 해보려고 합니다!
해당 포스트는 아래 과정들을 정리하였습니다.
1. Open AI API 활용 환경 세팅
2. Open AI API DallE 3로 그린 결과물 확인
그러면 함께 Open AI의 API를 활용하고 알아보러 가볼까요??
💡 Base Knowledge
우선, 이 포스트에 들어오신 분들은 대부분 Open AI의 API를 활용해보고자 하시는 분들일거라 생각됩니다.
Open AI의 API를 활용할 수 있는 방안은 크게 2가지가 있습니다.
1. Open AI Platform 활용
https://platform.openai.com/docs/guides/images?context=node
2. MS Azure Open AI API 활용
빠른 시작: Azure OpenAI Service를 사용하여 이미지 생성 - Azure OpenAI
Python SDK, REST API 또는 Azure OpenAI Studio를 사용하여 Azure OpenAI Service를 사용하여 이미지 생성을 시작하는 방법을 알아봅니다.
learn.microsoft.com
MS Azure Open AI API | Open AI API | |
공통점 | - 같은 모델을 사용할 수 있다는 점. - Open AI에서 작성된 API와 거의 같다는 점. |
|
차이점 | - MS Azure의 경우 인스턴스 서버를 만들어 해당 서버 위에 DallE 모델을 배포해야 함. - MS Azure 서비스를 활용하고자 하면 MS Azure Open AI Service를 활용하고자 하는 access 서류를 작성하여 제출해야 함. |
- Open AI에서 운영하는 자체 서버에 접근하여 사용 가능함. |
과금 | - https://azure.microsoft.com/ko-kr/pricing/details/cognitive-services/openai-service/ - 모델별로 과금이 다릅니다. 해당 페이지를 참고하세요. |
- 무료 크레딧으로 5달러를 주지만 3개월 내에 모두 사용해야 하고, 일정 부분 모델만 지원 가능함. - DallE2는 지원하지만,DallE3의 경우에는 지원하지 않았음. - 전화번호를 기준으로 무료 크레딧을 지원하고 있기 때문에, 다른 계정이더라도 이미 등록된 전화번호라면 무료 크레딧을 주지 않습니다. |
저는 Open AI Platform API를 활용하였습니다.
💡 Open AI API 활용하기 - DallE3 편
1. 우선 로그인을 해줍니다. (https://platform.openai.com/)
2. 전화번호를 넣어서 verify를 해줍니다. 해당 과정이 있어야 무료 크레딧을 받을 수 있습니다.
3. 그리고 Settings > Billing에 들어가면 5달러가 들어온 것을 확인할 수 있습니다.
4. 이제 API Key를 생성하면 됩니다.
이때 생성된 API Secret은 다시 열람할 수 없으니 꼭 ! 잘 저장해두셔야 합니다!!!
5. 이제 DallE3를 활용해보려고 했는데! 요청이 가지 않고 400 Bad Request가 오는 것이 아니겠습니까..??
6. 그래서 Limits를 확인해보았는데, 제가 free tier(프리티어) 여서 dalle-3에 request를 못 보내는 거였습니당... :0
여기 달리3 보시면! 달리2와 다르게 5 images per minute이 없지용..??
7. 그래서 저는 5달러를 지불하기로 했습니당!! 일단 지불 수단을 추가합니다.
저는 주로 잘 사용하지 않는 체크카드를 연결해놓고는 합니다.
지금 캡처를 못했는데, 주의할 점이 몇가지 있습니다!
(1) Auto Recharge를 꺼주세요!
만약 크레딧을 다 썼다면 API request가 자동을 중지된답니다.
(2) 지불 가능한 범위는 5-10달러 사이! (Tier 1인 경우에만 해당됩니다!)
달리의 경우 한번 request 보낼 때마다 0.02 달러더라구요! 저는 5달러로도 충분하다고 생각해서 5달러만 충전했고,
부가세 0.5도 붙습니당...
(3) 마지막으로 limit 설정하기.
그렇게 많은 API 호출을 하지 않을 거고, 테스트 용이기 때문에 저는 가장 낮은 10달러로 리밋을 해두었습니다.
만약 제가 10달러 이상으로 API 호출이 되면 메일이 오도록 설정하는 것으로 이해하시면 되겠습니다.
8. 이제 달리 3를 쓰기 위한 준비는 끝났습니다! 코드만 작성하면 됩니다! (🧑🏻🔬 뒤에 가서 제가 달리로 만든 결과도 보여드리겠습니다!)
API는 이 링크를 참고하세용! (https://platform.openai.com/docs/api-reference/images/create)
저는 Node를 활용하여 간단한 코드를 작성하였습니다. axios와 express를 함께 활용하였습니다.
//노드 설치 여부 확인
//node --version
//노드 프로젝트 생성
// npm init -y
//axios, express 패키지 설정
// npm install axios express
//index.js
const express = require('express');
const axios = require('axios');
const app = express();
const OPENAI_API_KEY = 'API Secret 작성 부분';
app.get('/', (req, res) => {
res.send(
`<h1> Open AI test </h1>
<a href="/openai"> create </a>`
);
});
app.get('/', async (req, res) => {
const startTime = new Date().getTime();
const resp = await axios.post(
'https://api.openai.com/v1/images/generations',
{
model: 'dall-e-3',
prompt: '프롬프트 작성 부분',
n: 1, // 달리3는 1만 지원
size: '1792x1024', // 사이즈는 1024x1024, 1792x1024, 1024x1792 제공
},
{
headers: {
Authorization: `Bearer ${OPENAI_API_KEY}`,
'Content-Type': 'application/json',
}
});
const EndTime = new Date().getTime();
console.log("time spent", EndTime - startTime);
console.log(resp.data);
});
app.listen(3000, () => {
console.log("server is running at 3000");
});
response 형태는 아래와 같습니다.
{
"created": 1589478378,
"data": [
{
"url": "https://..."
},
{
"url": "https://..." //url에 들어가면 사진을 볼 수 있습니다. 해당 url은 1h만 active 합니다.
}
]
}
💡 Open AI API 활용하기 - DallE3 결과물
제가 활용하면서 느낀 장단점을 사진이랑 같이 보여드릴게요.
장점 1. 진짜 그림을 잘 그린다... 나의 상상을 거의 실제와 같이 그린다.
장점 2. 아마존에 눈이 내린 그림을 그리라고 했는데.. 생각보다 너무 준수한 그림이어서 진짜 이런 말도 안되는 상황을 실제로 그려낼 수 있다는 점에서 활용도가 매우 높다고 생각했다. 예를 들어 기후 위기에 대한 경각심을 줄 수 있을 때 이런 상황을 사진처럼 뽑아내는 게 가능하지 않을 까?
장점 3. 어떤 그림인든지 내가 원하는 화풍으로 그려낼 수 있다. 나는 모네의 화풍을 좋아하는 데 모네의 스타일로 그린 에펠탑을 보여달라고 했더니 뚝딱! 완전 내가 소장하고 싶을 정도로 예쁜 그림을 그렸다.
장점 4. 내가 아무리 프롬프트를 짧게 작성해도 chat GPT를 활용하여 그 부분을 보충하고 더 풍성한 프롬프트를 만들어서 반환해준다.
수정된 프롬프트는 response에 들어간다.
단점 1. 기괴한 결과물이 나오는 경우가 있다. 아직 얼굴을 완벽하게는 못 그리는 듯 하다.. 이 사진 보고 토할뻔... 웩 🤢
단점 2. Dalle3의 경우 n=1로 고정인데 가끔 여러개의 response가 들어오는 것을 볼 수 있었다.
단점 3. 같은 프롬프트라도 사이즈에 따라서 약간 결과물의 퀄리티가 다른 것 같기도 하다.
내가 작성한 프롬프트 : 눈이 엄청 많이 온 아마존
1792 x 1024 | 1024 x 1024 | 1024 x 1792 | |
사진 | ![]() |
![]() |
![]() |
수정된 프롬프트 | 'The Amazon rainforest blanketed by a heavy snowfall, creating a stunning contrast between the usual lush greenery and the stark whiteness of the snow. The high canopies of the trees are laden with snow and icicles are hanging from the branches. The Amazon river winds its way through the snowy landscape, its dark waters providing a stark contrast to the surrounding snow-covered expanse. The exotic wildlife is taking shelter, leaving only the faint traces of their tracks in the snow.', | An unusual scene in the Amazon rainforest, typically known for its tropical weather, covered in a thick blanket of snow. The towering trees' canopies hold onto big clusters of snowflakes, their limbs bending slightly under the weight. Delicate snowflakes continue to fall gently, contrasted against the vibrant green foliage peeking through in places. | A rare scene of the Amazon rainforest experiencing a heavy fall of snow. The lush green foliage is coated in a thick layer of white snow. Gently, the snowflakes continue to fall from the sky, blanketing the tall trees and the forest floor. Despite the unusual weather, the wildlife continues their routine with animals such as monkeys and birds adapting to the snowy landscape |
'요것저것 개발 지식쌓기😎 > 요저개 시리즈' 카테고리의 다른 글
[요저개 4편] REST API (0) | 2023.07.21 |
---|---|
[요저개 3편] 웹서버와 웹 어플리케이션 서버 (0) | 2023.07.20 |
[요저개 2편] JWT(Json Web Token) (1) | 2023.05.16 |
[요저개 1편] 마이크로서비스 아키텍처(MSA) (0) | 2023.05.03 |