ㅁ 개요
O 프로그램 소개
**본 포스팅 글은 아래 유튜브 사이트(국내 파이썬 최고 실력자 중 한 분)의 내용을 참고하여 작성하였으며, 초보자들이 좀 더 쉽고, 잘 따라할 수 있도록 해당 내용을 세부적으로 잘게 쪼개서 설명한 글입니다. 자세한 내용은 아래 사이트를 참고하여 주시기 바랍니다.
[GPT-4] 책 요약해서 유튜브 쇼츠 영상으로 돈버는 인공지능 만들기|빵형의 개발도상국
https://www.youtube.com/watch?v=_TVyF_4JJgk&t=814shttps://www.youtube.com/watch?v=sLgYJIpqUJg
O 완성된 프로그램 실행 화면
1.프로그램 실행 시 아래와 같이 에러 없이 잘 실행되었습니다.(이미지 2장 생성 시간은 총 4.52초가 걸렸습니다.)
2. 실제 폴더에 가서 확인 결과 'temp2' 폴더가 생성되었고, 더블 클릭하여 들어가 보면
3. 이미지 2장이 '001.png', '002.png' 의 이름으로 잘 생성된 것을 확인할 수 있습니다.
4. openai.com에 가서 사용량을 확인 결과 1장당 0.02 달러, 즉 2장을 생성하였으므로 0.04달러가 청구될 예정입니다.
ㅁ 세부 내용
O 완성된 소스
소스 : 3.py
from tqdm import tqdm
import openai
import urllib
import os
from config import *
openai.api_key = OPENAI_API_KEY
summary_list = [{'role': 'system', 'content': 'You are a helpful assistant for summarizing books.'}, {'role': 'user', 'content': 'The Indian village was once portrayed as a "closed" and "isolated" system by British administrator Charles Metcalf. However, recent studies suggest that Indian villages were never self-sufficient and had connections with wider society, including migration, trade, and religious pilgrimages. For government purposes, a village is defined as a revenue village with surveyed boundaries, and rural social life is determined by factors such as geographic and cultural environments, as well as social stratification and mobility. India has an ancient civilization that dates back to the Indus valley civilization and has a complex rural social structure influenced by various factors.'}, {'role': 'user', 'content': 'The article discusses the economic, social, and religious aspects of Indian villages. The villages were not economically self-sufficient even in British times and have been affected by industrialization and urbanization. Villagers have horizontal ties of caste and kinship that extend beyond the village to other villages and even towns. Intra-caste relations and caste matters are regulated by a caste panchayat whose members belong to different villages. The spread of Sanskritic theological ideas increased during British rule and after, due to the development of communications and spread of literacy. Western technology has helped the spread of Sanskritization. The article also discusses the political system of Indian villages.'}]
def generateImage():
os.makedirs('temp2', exist_ok=True)
for i, summary in tqdm(enumerate(summary_list)):
if summary['role'] != 'user':
continue
res_img = openai.Image.create(
prompt=f'book illustration, {summary["content"][-390:]}',
n=1,
size='512x512'
)
img_url = res_img['data'][0]['url']
img_path = f'temp2/{str(i).zfill(3)}.png'
urllib.request.urlretrieve(img_url, img_path) # img_url url의 이미지를 img_path 경로에 저장하라
generateImage()
O 주요 내용
1.아래 소스코드의 주요 부분에 대해 간략히 설명 드리겠습니다.
토큰 수 제약을 회피하기 위해서 summarize_every = 1(line 20)로 설정합니다.(사실 summarize_every = 4로 설정해도 총 5페이지니까 700 X 5 = 3500 토큰이므로 제약에 걸리지 않으나, 테스트로 1로 설정하였습니다.)
summary_list에 chatGPT의 역할과 내용을 알려줍니다. (line 21~24)
이전글에서 얻은 summary_list 리스트를 활용하여 이미지를 생성할 것이므로 summary_list가 있어야 합니다.
만일 summary_list가 없는 경우 아래와 같이 이전 소스를 수정 후 다시 실행 하시기 바랍니다.
2. 소스 실행 시 아래와 같이 summary_list를 잘 얻어 올 수 있습니다.
3. 이미지 생성을 위해 openai의 API 키가 필요합니다.
아래와 같이 config.py를 만들고 본인의 api 키를 넣어 둡니다.
4. '3.generateImage2.py' 소스파일을 열어서 아래와 같이 코딩합니다.
5. '3.generateImage2.py' 소스파일의 나머지 부분을 아래와 같이 코딩합니다.
(자세한 내용은 아래 설명(빨간색)을 참고해 주세요)
ㅁ 정리
O 우리가 배운 내용
if summary['role'] != 'user':
continue
res_img = openai.Image.create( #<-- 위의 1번에 해당
prompt=f'book illustration, {summary["content"][-390:]}',
n=1,
size='512x512'
)
img_url = res_img['data'][0]['url'] #<-- 위의 2번에 해당
img_path = f'temp2/{str(i).zfill(3)}.png'
urllib.request.urlretrieve(img_url, img_path) # img_url url의 이미지를 img_path 경로에 저장하라
오늘은 여기까지이며, 댓글과 하트는 제가 이글을 지속할 수 있게 해주는 힘이 됩니다.
위의 내용이 유익하셨다면, 댓글과 하트 부탁드립니다.
감사합니다.
※ 추가적인 정보는 아래 유튜브 영상에서 해당 내용을 더욱 자세히 보실 수 있습니다.