Gemini API는 전달된 PDF 문서에서 추론을 처리하고 실행할 수 있습니다. PDF가 업로드되면 Gemini API는 다음 작업을 실행할 수 있습니다.
- 콘텐츠에 관한 질문을 설명하거나 답변
- 콘텐츠를 요약하세요.
- 콘텐츠에서 추론
이 튜토리얼에서는 제공된 PDF 문서로 Gemini API를 프롬프트하는 몇 가지 방법을 보여줍니다. 모든 출력은 텍스트로만 표시됩니다.
시작하기 전에: 프로젝트 및 API 키 설정
Gemini API를 호출하기 전에 프로젝트를 설정하고 API 키를 구성해야 합니다.
기술 세부정보
Gemini 1.5 Pro 및 1.5 Flash는 최대 3,600개의 문서 페이지를 지원합니다. 문서 페이지는 다음 텍스트 데이터 MIME 유형 중 하나여야 합니다.
- PDF -
application/pdf
- JavaScript -
application/x-javascript
,text/javascript
- Python -
application/x-python
,text/x-python
- TXT -
text/plain
- HTML -
text/html
- CSS -
text/css
- 마크다운 -
text/md
- CSV -
text/csv
- XML -
text/xml
- RTF -
text/rtf
각 문서 페이지는 토큰 258개에 해당합니다.
문서의 픽셀 수는 모델의 컨텍스트 창 외에는 특별히 제한되지 않지만, 큰 페이지는 원래 가로세로 비율을 유지하면서 최대 해상도인 3072x3072로 축소되고, 작은 페이지는 768x768픽셀로 확대됩니다. 크기가 작은 페이지의 경우 대역폭을 제외하고 비용이 절감되지 않으며, 해상도가 높은 페이지의 경우 성능이 개선되지 않습니다.
최상의 결과를 얻는 방법
- 업로드하기 전에 페이지를 올바른 방향으로 회전하세요.
- 흐릿한 페이지는 피하세요.
- 단일 페이지를 사용하는 경우 텍스트 프롬프트를 페이지 뒤에 배치합니다.
문서 업로드 및 콘텐츠 생성
File API를 사용하여 크기에 관계없이 문서를 업로드할 수 있습니다. 총 요청 크기(파일, 텍스트 프롬프트, 시스템 안내 등 포함)가 20MB를 초과하는 경우 항상 File API를 사용하세요.
media.upload
를 호출하여 File API를 사용하여 파일을 업로드합니다. 다음 코드는 문서 파일을 업로드한 다음 models.generateContent
호출에서 이 파일을 사용합니다.
model = genai.GenerativeModel("gemini-1.5-flash")
sample_pdf = genai.upload_file(media / "test.pdf")
response = model.generate_content(["Give me a summary of this pdf file.", sample_pdf])
print(response.text)
파일의 메타데이터 가져오기
API가 업로드된 파일을 성공적으로 저장했는지 확인하고 files.get
를 호출하여 메타데이터를 가져올 수 있습니다. name
(및 확장적으로 uri
)만 고유합니다.
myfile = genai.upload_file(media / "poem.txt")
file_name = myfile.name
print(file_name) # "files/*"
myfile = genai.get_file(file_name)
print(myfile)
로컬에 저장된 파일 하나 이상 업로드
또는 로컬에 저장된 파일을 하나 이상 업로드할 수 있습니다.
전송하려는 파일 및 시스템 안내의 조합이 20MB보다 큰 경우 이전에 표시된 대로 File API를 사용하여 이러한 파일을 업로드합니다. 대신 작은 파일은 Gemini API에서 로컬로 호출할 수 있습니다.
import PyPDF2
def extract_text_from_pdf(pdf_path):
with open(pdf_path, 'rb') as pdf_file:
pdf_reader = PyPDF2.PdfReader(pdf_file)
extracted_text = ""
for page in pdf_reader.pages:
text = page.extract_text()
if text:
extracted_text += text
return extracted_text
sample_file_2 = extract_text_from_pdf('example-1.pdf')
sample_file_3 = extract_text_from_pdf('example-2.pdf')
여러 문서가 있는 프롬프트
모델의 컨텍스트 창에 맞는 문서와 텍스트의 조합을 Gemini API에 제공할 수 있습니다. 이 예에서는 짧은 텍스트 프롬프트 1개와 이전에 업로드한 문서 3개를 제공합니다.
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-flash")
prompt = "Summarize the differences between the thesis statements for these documents."
response = model.generate_content([prompt, sample_file, sample_file_2, sample_file_3])
print(response.text)
파일 나열
File API를 사용하여 업로드된 모든 파일과 files.list
를 사용하여 해당 파일의 URI를 나열할 수 있습니다.
print("My files:")
for f in genai.list_files():
print(" ", f.name)
파일 삭제
File API를 사용하여 업로드된 파일은 2일 후에 자동으로 삭제됩니다. files.delete
를 사용하여 수동으로 삭제할 수도 있습니다.
myfile = genai.upload_file(media / "poem.txt")
myfile.delete()
try:
# Error.
model = genai.GenerativeModel("gemini-1.5-flash")
result = model.generate_content([myfile, "Describe this file."])
except google.api_core.exceptions.PermissionDenied:
pass
다음 단계
이 가이드에서는 generateContent
를 사용하고 처리된 문서에서 텍스트 출력을 생성하는 방법을 보여줍니다. 자세한 내용은 다음 리소스를 참고하세요.
- 파일 프롬프트 전략: Gemini API는 텍스트, 이미지, 오디오, 동영상 데이터를 사용한 프롬프트를 지원합니다. 이를 멀티모달 프롬프트라고도 합니다.
- 시스템 안내: 시스템 안내를 사용하면 특정 요구사항 및 사용 사례에 따라 모델의 동작을 조정할 수 있습니다.
- 안전 가이드: 생성형 AI 모델이 부정확하거나 편향적이거나 불쾌감을 주는 출력과 같은 예상치 못한 출력을 생성하는 경우가 있습니다. 이러한 출력으로 인한 피해 위험을 최소화하기 위해서는 후처리와 사람의 평가가 필수적입니다.