Spaces:
Running
on
Zero
Running
on
Zero
from openai import OpenAI | |
import os | |
from typing import Tuple | |
def retrieve_with_gpt(pdf_file: str, claim: str) -> Tuple[str, int, int]: | |
""" | |
Retrieve evidence from PDF using GPT | |
Args: | |
pdf_file: Path to PDF file | |
claim: Claim to find evidence for | |
Returns: | |
Tuple with retrieved evidence text, prompt tokens, and completion tokens | |
""" | |
model = "gpt-4o-mini-2024-07-18" | |
prompt = """Retrieve sentences from the PDF (title, abstract, text, sections, not References/Bibliography) to support or refute this claim. \ | |
Summarize any information from images. \ | |
Respond only with verbatim sentences from the text and/or summarized sentences from images. \ | |
If no conclusive evidence is found, respond with the five sentences that are most relevant to the claim. \ | |
Combine all sentences into one response without quotation marks or line numbers. \ | |
""" | |
prompt = "".join([prompt, f"CLAIM: {claim}"]) | |
client = OpenAI() | |
file = client.files.create(file=open(pdf_file, "rb"), purpose="user_data") | |
completion = client.chat.completions.create( | |
model=model, | |
messages=[ | |
{ | |
"role": "user", | |
"content": [ | |
{ | |
"type": "file", | |
"file": { | |
"file_id": file.id, | |
}, | |
}, | |
{ | |
"type": "text", | |
"text": prompt, | |
}, | |
], | |
} | |
], | |
) | |
return ( | |
completion.choices[0].message.content, | |
completion.usage.prompt_tokens, | |
completion.usage.completion_tokens, | |
) | |