이미지 생성 절차
- dall-e-3 모델을 사용하여 이미지를 생성한다
- prompt에 원하는 이미지 설명을 입력한다
- 생성된 이미지의 URL을 출력하여 확인한다
import openai
client = openai.OpenAI()
easy_prompt = """A detailed image of a small orange tabby cat staring at its reflection in an ornate, vintage mirror. The reflection shows a majestic lion, symbolizing confidence and inner strength."""
response = client.images.generate(
model="dall-e-3",
prompt=easy_prompt,
size="1024x1024",
)
image_link = response.data[0].url
print(image_link)
※ 이미지 프롬프트 수정 (revised_prompt)
DALL-E 3는 사용자의 프롬프트를 더 자세하게 수정하는 기능을 제공한다. 이는 보다 정밀한 이미지 생성을 돕는다!
revised_prompt = response.data[0].revised_prompt
print(revised_prompt)
- 프롬프트를 보다 구체적으로 다듬어 보다 정교한 이미지를 생성할 수 있음
- AI가 추천하는 세부 묘사를 활용하여 더욱 생생한 결과물을 얻을 수 있음
이미지 출력
from IPython.display import Image
import requests
img = Image(url=image_link)
response = requests.get(image_link)
with open('generated_image.png', 'wb') as file:
file.write(response.content)
img
- 생성된 이미지의 URL을 이용하여 이미지를 출력한다
- requests 라이브러리를 활용하여 이미지를 다운로드하여 저장한다
이미지 프롬프트 전달하기
OpenAI API에서는 기존의 이미지 파일을 함께 전달하여 AI가 이를 분석하고 반응하도록 할 수도 있다
(이미지 URL 전달)
messages = [
{"role": "user", "content": [
{"type": "text", "text": "이 그림을 묘사하고, 일반적인 그림과 비교해서 특이한 점을 언급하세요."},
{"type": "image_url", "image_url": {"url": image_link}},
]}
]
response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
max_tokens=1024,
)
print(response.choices[0].message.content)
- 사용자의 질문과 함께 이미지를 OpenAI API에 전달한다
- AI가 이미지를 분석한 후, 특이한 점을 언급하며 묘사한다
오프라인 이미지 base64 인코딩하여 전달
기존 로컬 이미지를 base64로 변환하여 OpenAI API에 전달할 수도 있다
import base64
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode('utf-8')
image_path = "generated_image.png"
base64_image = encode_image(image_path)
messages = [
{"role": "user", "content": [
{"type": "text", "text": "이 그림을 전시회에서 소개한다고 생각하고, 즐겁고 유쾌하게, 유머를 섞어 홍보하세요"},
{"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}},
]}
]
response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
max_tokens=1024,
)
print(response.choices[0].message.content)
- 로컬 이미지를 base64로 변환하여 AI에 전달한다
- AI가 이미지와 함께 제공된 요청에 맞춰 응답을 생성한다
- 예제에서는 전시회에서 유쾌하게 홍보하는 방식으로 설명을 요청하였다
'인공지능 > 생성형 AI' 카테고리의 다른 글
[생성형 AI] 초보자도 바로 이해하는 RAG(Retrieval-Augmented Generation) 개념 (0) | 2025.03.10 |
---|---|
[생성형 AI] 파인 튜닝 vs LLM 오케스트레이션 (2) | 2025.03.07 |
[생성형 AI] OpenAI 음성 생성 및 입력 활용 (0) | 2025.02.17 |
[생성형 AI] LangGraph vs CrewAI 라이브러리 (1) | 2025.02.17 |
[생성형 AI] LangChain이란? (0) | 2025.02.17 |