Spaces:
Running
Running
import asyncio | |
import io | |
from starlette.datastructures import UploadFile | |
from ocr.api.message.prompts import OCRPrompts | |
from ocr.api.message.utils import clean_assistant_response | |
from ocr.core.config import settings | |
async def analyze_uploaded_document(file: UploadFile): | |
contents = await file.read() | |
openai_file = io.BytesIO(contents) | |
openai_file.name = file.filename | |
thread, openai_file = await asyncio.gather( | |
settings.OPENAI_CLIENT.beta.threads.create(), | |
settings.OPENAI_CLIENT.files.create(purpose='assistants', file=openai_file) | |
) | |
await settings.OPENAI_CLIENT.beta.threads.messages.create( | |
attachments=[{"file_id": openai_file.id, "tools": [{"type": "file_search"}]}], | |
thread_id=thread.id, | |
role="user", | |
content='Generate a report on the attached document' | |
) | |
run = await settings.OPENAI_CLIENT.beta.threads.runs.create_and_poll( | |
assistant_id=settings.ASSISTANT_ID, thread_id=thread.id, instructions=OCRPrompts.generate_general_answer | |
) | |
return await clean_assistant_response(thread.id, run.id) | |