bluenevus commited on
Commit
e2acf18
·
1 Parent(s): 174e22a

Update app.py via AI Editor

Browse files
Files changed (1) hide show
  1. app.py +49 -6
app.py CHANGED
@@ -8,6 +8,8 @@ import pandas as pd
8
  import openai
9
  import logging
10
  from docx import Document
 
 
11
 
12
  logging.basicConfig(
13
  level=logging.INFO,
@@ -44,15 +46,56 @@ def decode_document(decoded_bytes):
44
  logging.error("Document decode failed for both utf-8 and latin-1: %s", e)
45
  return None
46
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  def upload_to_openai_file(decoded_bytes, filename):
48
  try:
49
- memfile = io.BytesIO(decoded_bytes)
50
- memfile.seek(0)
51
- resp = openai.files.create(file=memfile, purpose="assistants", file_name=filename)
52
- logging.info(f"File uploaded to OpenAI: {filename}, file_id: {resp.id}")
53
- return resp.id
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  except Exception as e:
55
- logging.error(f"Failed uploading file to OpenAI API: {e}")
56
  return None
57
 
58
  def openai_stream_generate(prompt, file_id=None):
 
8
  import openai
9
  import logging
10
  from docx import Document
11
+ import requests
12
+ import mimetypes
13
 
14
  logging.basicConfig(
15
  level=logging.INFO,
 
46
  logging.error("Document decode failed for both utf-8 and latin-1: %s", e)
47
  return None
48
 
49
+ def guess_mime_type(filename):
50
+ mime_type, _ = mimetypes.guess_type(filename)
51
+ if not mime_type:
52
+ ext = filename.lower().split('.')[-1]
53
+ if ext == "pdf":
54
+ mime_type = "application/pdf"
55
+ elif ext == "docx":
56
+ mime_type = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
57
+ elif ext == "doc":
58
+ mime_type = "application/msword"
59
+ elif ext == "xlsx":
60
+ mime_type = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
61
+ elif ext == "xls":
62
+ mime_type = "application/vnd.ms-excel"
63
+ else:
64
+ mime_type = "application/octet-stream"
65
+ return mime_type
66
+
67
  def upload_to_openai_file(decoded_bytes, filename):
68
  try:
69
+ url = "https://api.openai.com/v1/uploads"
70
+ mime_type = guess_mime_type(filename)
71
+ headers = {
72
+ "Authorization": f"Bearer {OPENAI_API_KEY}"
73
+ }
74
+ files = {
75
+ "file": (filename, io.BytesIO(decoded_bytes), mime_type)
76
+ }
77
+ data = {
78
+ "bytes": str(len(decoded_bytes)),
79
+ "filename": filename,
80
+ "mime_type": mime_type,
81
+ "purpose": "assistants"
82
+ }
83
+ logging.info(f"Uploading file to OpenAI /v1/uploads: {filename}, size={len(decoded_bytes)}, mime_type={mime_type}")
84
+ resp = requests.post(url, headers=headers, files=files, data=data)
85
+ if resp.status_code == 200:
86
+ resp_json = resp.json()
87
+ file_id = resp_json.get("id")
88
+ if file_id:
89
+ logging.info(f"File uploaded to OpenAI uploads: {filename}, file_id: {file_id}")
90
+ return file_id
91
+ else:
92
+ logging.error(f"OpenAI /v1/uploads did not return file id. Response: {resp_json}")
93
+ return None
94
+ else:
95
+ logging.error(f"Failed uploading file to OpenAI API /v1/uploads: {resp.status_code}, {resp.text}")
96
+ return None
97
  except Exception as e:
98
+ logging.error(f"Exception during file upload to OpenAI /v1/uploads: {e}")
99
  return None
100
 
101
  def openai_stream_generate(prompt, file_id=None):