PIL이라는 라이브러리와 natsort라는 라이브러를 사용하여,

 

 

아주 쉽게 PDF파일을 만들어내는 스크립트.

import os
from PIL import Image
import natsort


realpath = "/Users/1111964/Downloads/images"
originimages = natsort.natsorted(os.listdir(realpath))
images = []

for i in originimages:
    try:
       print (i)
       print (Image.open (realpath + '/' + i))
       images.append(Image.open (realpath + '/' + i))
    except:
       print ("error : " + i)


images[0].save(
    realpath +"/out.pdf", "PDF", resolution=100.0, save_all=True, append_images=images[1:]
)

 

ㅇ 당연한것이지만 image, narsort에 대한 PIP 라이브러리 설치가 선행되어야 한다.

ㅇ 이미지 파일들이 모아놓은 폴더 주소를 딴다. 여기서는 맥북 기준으로 "/Users/1111964/Downloads/images"를 사용했다. 윈도우면 "C:\\Users\\USER\\Downloads" 대략 이런식으로 폴더 지정 하면 된다"

 

 

ㅇ이름이나 저장경로를 바꾸고 싶으면 realpath +"/out.pdf" 이부분을 손봐주시면 되겠다. 여기는

이미지가 모여있는 폴더에서 out.pdf라는 파일로 저장하겠다는 것이다.

 

 

 

 

 

chatgpt 명령한것과 똑같은 효과를 두는

open api chatCompletion 호출 사용의 예제이다. 매~우 간단함

 

다만, 챗gpt는 원래 대화방 단위로 사용자와의 대화이력을 이어갈수 있다.

그러면 앞서 나누던 대화의 맥락을 이어갈수 있다.

 

message에 role:user와 role:assistant에 대화를 누적해가며 계속 호출하면되는데

대화방 컨텍스트에 따른 대화이력 저장방식이 필요함으로 

 

여기서는 단순 1회성 호출만 소개한다.

import os
import openai
import datetime
openai.api_key = os.getenv("OPENAI_API_KEY") #부여 받은 api key, 이걸 기준으로 과금된다.
로컬에 환경변수에 저장된 key를 가져오도록 해놨다. 

#openai.organization = "org-cT1P어쩌고L"  #api key의 계정-조직의 id, 
#지금처럼 주석으로 막아놓듯이 선언을 따로 안하면 open ai에 세팅된 디폴트 organizaion을 사용한다.

inputPrompt = "자기 소개서 잘 쓰는법 알려줘"           # reqeust 문장
model = "gpt-3.5-turbo"                                          # 모델선택 gpt-4, gpt-4-0314, gpt-4-32k, gpt-4-32k-0314, gpt-3.5-turbo, gpt-3.5-turbo-0301


# massage는 복수형 array인데, user와 assistant의 대화 히스토리를 통째로 보내서 
요청할수 있는 구조이다. 여기선 1회성 호출만 하도록 role user의 명렁 1개만 넣어 호출한다

completion = openai.ChatCompletion.create(
  model=model,
  temperature=0,
  messages=[
    {"role": "user", "content": inputPrompt}
  ]
)
result = completion.choices[0]
# 결과는 복수개를 돌려준다, 이중에 최상단 1개값만 가져온다


#print (result)
# 결과값은 obect로 되어있다. 주석처리하여 따로 보지않도록 해놨고 보고싶으면 주석해제하면됨

print (result.message.content)
# 결과값에서 assistant 응답메세지만 가져온다

print(datetime.datetime.now())
# 그냥 현재 시간 표시용

*openai.api_key는 open ai에서 발급받아 사용하며, 유료 호출이다.  gpt-3.5의 경우 매우 저렴하기에 딱히 별 이슈가 없다.

*api_key는 local에 저장된 환경변수를 가져다 쓰는 방식이 스탠다드다, 윈도우는 환경변수로 key를 넣는게 매우 쉽고, MAC은 터미널로 좀 까다로운 작업이 필요함,  잘 모르겠으면 그냥 open ai의 api key 를 그대로 = 뒤에다가 string으로 붙여서 써도 된다.

다만 이럴경우 스크립트를 온라인으로 그대로 공유할때 api key가 공개됨으로 남이 막 쓸수있다. 유료라서 과금이 되니 문제가됨

 

message의 role user의 content에 명령어를 넣고,

결과는 completion이 복수형으로 나오는데, 이중에 만앞에꺼면 뽑아서 message.content를 출력하면 된다.

 

 

 

+ Recent posts