openai_service.py 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. import os
  2. import base64
  3. from openai import OpenAI
  4. from dotenv import load_dotenv
  5. from schemas import ExtractionResponse
  6. load_dotenv()
  7. client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
  8. async def extract_receipt_data(image_content: bytes, user_name: str, department: str) -> ExtractionResponse:
  9. base64_image = base64.b64encode(image_content).decode("utf-8")
  10. prompt = f"You are an HR data entry assistant. Extract the requested fields from the provided medical receipt image. The employee submitting this is {user_name} from {department}. If the date is missing, look for a 'Payment Date' as a fallback."
  11. completion = client.beta.chat.completions.parse(
  12. model="gpt-4o",
  13. messages=[
  14. {
  15. "role": "user",
  16. "content": [
  17. {"type": "text", "text": prompt},
  18. {
  19. "type": "image_url",
  20. "image_url": {"url": f"data:image/jpeg;base64,{base64_image}"},
  21. },
  22. ],
  23. }
  24. ],
  25. response_format=ExtractionResponse,
  26. )
  27. return completion.choices[0].message.parsed