Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 6 additions & 16 deletions dtable_events/utils/dtable_ai_api.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
import requests
import logging
import time
from dtable_events.utils import get_file_ext, process_pdf_to_images
from dtable_events.utils.constants import EXTRACT_TEXT_SUPPORTED_FILES
import jwt

from dtable_events.app.config import DTABLE_PRIVATE_KEY

logger = logging.getLogger(__name__)

class DTableAIAPIError(Exception):
pass

Expand Down Expand Up @@ -46,8 +43,7 @@ def summarize(self, content, summary_prompt):
result = response.json()
return result.get('summary', '')
else:
logger.error(f"Failed to summarize text: {response.text}")
raise DTableAIAPIError()
raise DTableAIAPIError(f"Failed to summarize text: {response.text}")

def classify(self, content, classify_prompt=''):
if not content or not content.strip():
Expand All @@ -70,8 +66,7 @@ def classify(self, content, classify_prompt=''):
classification = result.get('classification', [])
return classification
else:
logger.error(f"Failed to classify text: {response.text}")
raise DTableAIAPIError()
raise DTableAIAPIError(f"Failed to classify text: {response.text}")

def ocr(self, file_name, file_content):
file_ext = get_file_ext(file_name)
Expand All @@ -82,7 +77,6 @@ def ocr(self, file_name, file_content):
try:
image_pages = process_pdf_to_images(file_content, max_pages=5)
except Exception as e:
logger.error(f"Failed to process PDF to images: {e}")
raise DTableAIAPIError(f"PDF processing failed: {e}")
else:
image_pages = [file_content]
Expand All @@ -106,8 +100,7 @@ def ocr(self, file_name, file_content):
result = response.json()
return result.get('ocr_result', '')
else:
logger.error(f"Failed to ocr file: {response.text}")
raise DTableAIAPIError()
raise DTableAIAPIError(f"Failed to ocr file: {response.text}")

def extract(self, content, extract_fields, extract_prompt):
"""Extract specific information from content based on field descriptions"""
Expand All @@ -131,8 +124,7 @@ def extract(self, content, extract_fields, extract_prompt):
result = response.json()
return result.get('extracted_data', {})
else:
logger.error(f"Failed to extract information: {response.text}")
raise DTableAIAPIError()
raise DTableAIAPIError(f"Failed to extract information: {response.text}")

def custom(self, content):
"""Execute custom AI processing with user-defined prompt"""
Expand All @@ -154,8 +146,7 @@ def custom(self, content):
result = response.json()
return result.get('result', '')
else:
logger.error(f"Failed to process custom AI request: {response.text}")
raise DTableAIAPIError()
raise DTableAIAPIError(f"Failed to process custom AI request: {response.text}")

def recognize_chinese_invoice(self, file_name, file_content):
data = {
Expand All @@ -175,5 +166,4 @@ def recognize_chinese_invoice(self, file_name, file_content):
result = response.json()
return result.get('result', {})
else:
logger.error(f"Failed to recognize Chinese invoice: {response.text}")
raise DTableAIAPIError()
raise DTableAIAPIError(f"Failed to recognize Chinese invoice: {response.text}")
Loading