본문 바로가기

카테고리 없음

OPENAI의 APIKEY 사용해서 서비스 만들어보기 2 -image

OPENAI는 여러가지 모델을 제공한다. 

 

 

GPT 3.5 - 자연어나 코드를 이해, 생성할 수 있는모델(굉장히 대중적으로 알려진 그 Chat기능)

 

GPT-4 - 멀티모달이라고, 텍스트 또는 이미지를 입력받아서 텍스트를 출력해줌. 3.5버전보다 더 넓은 일반지식, 고급 추론 능력을 가지고 있다. 더 어려운 문제를 큰 정확도로 해결 가능.

 

DALL-E - 자연어를 입력해주면 이미지를 생성하고 편집할 수 있음.

 

Whisper - 오디오를 텍스트로 변환할 수 있는 모델(소리를 글자로 !!)

 

이외에도 코파일럿도 openai와 협력하여 여러가지 기능을 제공한다. 

 

 

 

 

이번엔 DALL-3를 사용해서 이미지 생성해주는 코드를 짜보자 !

 

from dotenv import load_dotenv          #.env 파일의 환경변수 사용을 위함
import os		
from openai import OpenAI			
from PIL import Image					#Python Imaging Library에서 Image 클래스 가져옴. 이미지파일 열고 표시할 때 사용
import requests							#HTTP요청 보낼거라 불러옴.


load_dotenv()  							# .env 파일에서 환경 변수를 로드한다.

# 환경 변수를 사용하여 API 키를 불러옵니다.
openai_api_key = os.getenv("OPENAI_API_KEY")	#.env 파일 중 'OPENAI_API_KEY'라는 놈을 데려옴.
MODEL="dall-e-3"                    #이미지는 달리 쓸거다 !

client = OpenAI(api_key=openai_api_key)			#openai로 api 키 써서 접근

response = client.images.generate(				
    model =MODEL,								
    prompt="열매를 많이 맺는 아름다운 남한의 포도나무.",  	#prompt에 내가 원하는 이미지를 설명하는 텍스트 !!
    size="1024x1024",
    quality="standard",
    n=1,        								#이미지 하나 보내줘
)


image_url = response.data[0].url				#달리가 새로 만든 이미지의 url 가져옴


file_name = "image.jpg" 						#저장파일 이름 설정

response = requests.get(image_url)      		#이미지 url get방식으로 받기
with open(file_name, "wb") as f:				#open함수 사용, "wb"는 파일을 이진 쓰기모드로 연다는 의미.
    f.write(response.content)

Image.open(file_name)

 

 

"wb" - 이진쓰기모드는 뭐나면.....

일단 "w"는 파일을 쓰기 모드로 연다는 의미다. 파일이 이미 존재하는 경우엔 내용이 지워지고, 새로운 내용이 기록된다.

파일이 없는 상태라면 새로운 파일이 생성됨.

 

"b"는 이진 모드(binary)로 연다는 것인데, 이때는 파일을 열때 데이터를 텍스트가 아닌 이진 형태로 처리해준다. 지금처럼 이미지나, 오디오, 비디오 파일 같은 바이너리 데이터를 다룰 때 유용하다. 

 

(바이너리 데이터는 0과 1로 이루어진 이진(binary)형태로 저장되는 애들을 말함. 이진 형식으로 저장하면 컴퓨터가 데이터를 효율적으로 처리할 수 있음. 텍스트 데이터 말고, 이미지-오디오-비디오 같은 데이터 그리고 프로그램 코드같은 데이터도 "바이너리데이터"라고 할 수 있음.)

 

 

 

 

 

결과는 어떻게 나왔을까? 

 

 

 

 

 

AI가 그림을 참 잘그린다.