2023. 10. 27. 00:51ㆍWEB
안녕하세요. GPT로 만드는 삼시세끼 요리 블로거, 챗종원 설명회가 이제 막 중간 정도를 지났습니다.
개념 설명할 때에는 틀린 부분이 없도록 교차검증하느라 포스팅에 시간을 많이 갈아 넣어야 했는데, 그냥 했던 거 설명만 하니까 시리즈 물임에도 부담이 적고 금방금방 쓰는 것 같네요.. 굿
지난 포스팅을 통해 인증 후에 티스토리 Access Token을 처리하고, 메뉴를 추천받고 다루기 편하게 JSON 포맷으로 변환하는 과정까지 설명했습니다.
중간 점검
이러한 일련의 과정을 통해
오늘 추천드릴 메뉴는 팬케이크입니다. 부드럽고 달콤한 팬케이크는 만들기가 어렵지 않으며, 맛있는 아침식사나 간식대용으로 유용합니다.
우선 팬케이크를 만들기 위해 달걀과 우유를...
와 같은 답변을 얻게되고,
이러한 자연어는 Json 변환 과정을 거쳐
{
"title": "팬케이크",
"description": "팬케이크는 간단하면서도 맛있는 아침식사나 간식으로 좋습니다. 부드럽고 달콤한 맛이 인기입니다.",
"content": "재료:\n1. 달걀\n2. 우유 ..."
}
의 형태로 변환이 됩니다.
이번 포스팅에서는 이렇게 가공된 데이터를 통해, 글의 내용과 어울리는 사진을 생성해 보는 시간을 가지겠습니다.
DALL-E
뉴스나 각종 매체를 통해 대화형 인공지능 서비스인 Chat GPT는 이제 모르는 사람이 없는 것 같지만, 텍스트 기반의 이미지 생성 모델인 DALL-E에 대해서는 아직 모르는 사람이 많다고 생각합니다.
Chat GPT와 마찬가지로 OpenAI에서 개발한 인공지능 모델인 DALL-E는 달리라고 발음되며, 입력되는 텍스트를 이해하고 이미지로 구현해 줍니다.
자세한 설명을 하면 길어지기 때문에 달리에 대한 설명은 줄이도록 하겠고, 여기서는 Dall-E 2.0 API를 통해 음식의 이미지를 생성하는 용도로 사용하겠습니다.
예시로 위에 만들어진 JSON의 title 속성에 접근하면 "팬케이크"라는 값을 얻을 수 있는데, 프롬프트에
f"{}의 이미지를 만들어줘".format(json_data["title"])
를 입력하면 달리는 팬케이크의 이미지를 신나서 만들겠죠?
그러면
이런 이미지가 생성이 됩니다!
❗️ 문제점 ❗️
그런데 여기서 약간의 문제가 있습니다.
해당 글을 쓰는 시점은 23년 10월 26일인데, Dall-E 3.0의 API가 아직 공개가 되지 않았습니다.
Dall-E 2.0을 사용해 이미지 생성을 해야 하는데, 한국말을 학습하지 못해서 한국어 그대로 입력하면 사용할 수 없는 이미지를 생성합니다.
위 사진 역시 영어로 한 번 번역한 후에 입력한 결과이구요
때문에 여기서 프롬프트를 그대로 입력하지 않고 국문을 영문으로 번역하는 과정을 한 번 더 거쳐야 하는데, 저는 네이버의 파파고 API를 사용해 프롬프트를 영어로 변환했습니다.
Naver API 등록 과정은 앞선 Tistory나 OpenAI와 유사하니 생략하도록 하겠습니다.
이제 영문 프롬프트까지 완성했으니 Dall E에게 요청해 보도록 하겠습니다.
위 요청에서 매개변수인 n은 생성할 이미지의 수이고 size는 256x256, 512x512, 1024x1024 등이 있습니다.
주목할 점은 response_format의 값이 b64_json으로 되어있다는 점인데요.
response_format으로 들어갈 수 있는 값은 url과 b64_json 두 가지가 있지만, 해당 로직에서는 b64_json을 사용했습니다.
b64_json을 응답 포맷으로 선택하면 base64 방식으로 인코딩 된 이미지를 반환하게 됩니다. 이 데이터는 url을 통해 이미지에 접근하는 게 아니라 디코딩해서 바로 이미지 변환이 가능한 실제 이미지이므로 데이터를 바로 저장하기에 유리합니다.
url을 그냥 받아서 블로그에 올리면 되는 게 아닌가? 하시겠지만 Dall E가 이미지를 생성한 이후에, 약 3시간이 지나면 링크가 만료되어 버리는 문제가 있었습니다.
그래서 직접 생성된 이미지를 저장하고 호스팅 해야 하는데, 해당 프로젝트의 전체적인 기조에 따라 정적 파일의 호스팅 역시 서버리스로 진행했습니다.
이번 포스팅에서는 Json 포맷으로 가공된 데이터를 통해 영문으로 이루어진 프롬프트를 생성, Dall-E에게 이미지를 생성하는 방법까지 다루었습니다.
이미지를 포함해서 컨텐츠는 이제 다 만들었고, 이제는 저장 후에 포스팅만 하면 됩니다.
다음 시간에는 생성된 이미지를 구글의 클라우드 저장소인 GCS(Google Cloud Storage)를 통해 호스팅하고 티스토리에 포스팅하는 과정을 설명해 보도록 하겠습니다.
'WEB' 카테고리의 다른 글
[서비스] AI 요리 블로거 챗종원 개발기 -6 (0) | 2023.10.27 |
---|---|
[서비스] AI 요리 블로거 챗종원 개발기 -5 (2) | 2023.10.27 |
[서비스] AI 요리 블로거 챗종원 개발기 -3 (2) | 2023.10.26 |
[서비스] AI 요리 블로거 챗종원 개발기 -2 (2) | 2023.10.25 |
[서비스] AI 요리 블로거 챗종원 개발기 -1 (0) | 2023.10.25 |