try
This commit is contained in:
+18
-15
@@ -355,6 +355,7 @@ def generate_image_query(title, summary):
|
||||
|
||||
def smart_image_and_filter(title, summary):
|
||||
try:
|
||||
logging.info(f"Processing title: raw_title='{title}', summary='{summary[:100]}...'")
|
||||
content = f"{title}\n\n{summary}"
|
||||
|
||||
prompt = (
|
||||
@@ -375,13 +376,29 @@ def smart_image_and_filter(title, summary):
|
||||
max_tokens=100
|
||||
)
|
||||
raw_result = response.choices[0].message.content.strip()
|
||||
logging.debug(f"Raw GPT smart image/filter response: '{raw_result}'")
|
||||
logging.debug(f"Raw GPT response: '{raw_result}'")
|
||||
|
||||
cleaned_result = re.sub(r'```json\s*|\s*```', '', raw_result).strip()
|
||||
fixed_result = re.sub(r"(?<!\\)'(?=\s*[\w\s]*\])|(?<=\[|\{|\s)'|'(?=\s*[\]\},:])|(?<=\w)'(?=\s*:)", '"', cleaned_result)
|
||||
|
||||
try:
|
||||
result = json.loads(fixed_result)
|
||||
if not isinstance(result, dict) or "image_query" not in result or "relevance" not in result or "action" not in result:
|
||||
logging.warning(f"Invalid GPT response format: {result}, checking action before fallback")
|
||||
if isinstance(result, dict) and result.get("action") == "SKIP":
|
||||
logging.info(f"Respecting AI SKIP action for '{title}'")
|
||||
return extract_main_topic(title.lower() + " " + summary.lower()), ["food"], "food", True
|
||||
main_topic = extract_main_topic(title.lower() + " " + summary.lower())
|
||||
skip_flag = (
|
||||
"homemade" in title.lower() or
|
||||
"homemade" in summary.lower() or
|
||||
any(kw in title.lower() or kw in summary.lower() for kw in RECIPE_KEYWORDS)
|
||||
)
|
||||
logging.info(f"Fallback for '{title}': Skip={skip_flag}, Reasons: "
|
||||
f"homemade_in_title={'homemade' in title.lower()}, "
|
||||
f"homemade_in_summary={'homemade' in summary.lower()}, "
|
||||
f"recipe_keywords={any(kw in title.lower() or kw in summary.lower() for kw in RECIPE_KEYWORDS)}")
|
||||
return main_topic, [main_topic, "food"], main_topic, skip_flag
|
||||
except json.JSONDecodeError as e:
|
||||
logging.warning(f"JSON parsing failed: {e}, raw: '{fixed_result}'. Using fallback.")
|
||||
main_topic = extract_main_topic(title.lower() + " " + summary.lower())
|
||||
@@ -396,20 +413,6 @@ def smart_image_and_filter(title, summary):
|
||||
f"recipe_keywords={any(kw in title.lower() or kw in summary.lower() for kw in RECIPE_KEYWORDS)}")
|
||||
return main_topic, [main_topic, "food"], main_topic, skip_flag
|
||||
|
||||
if not isinstance(result, dict) or "image_query" not in result or "relevance" not in result or "action" not in result:
|
||||
logging.warning(f"Invalid GPT response format: {result}, using fallback")
|
||||
main_topic = extract_main_topic(title.lower() + " " + summary.lower())
|
||||
skip_flag = (
|
||||
"homemade" in title.lower() or
|
||||
"homemade" in summary.lower() or
|
||||
any(kw in title.lower() or kw in summary.lower() for kw in RECIPE_KEYWORDS)
|
||||
)
|
||||
logging.info(f"Fallback for '{title}': Skip={skip_flag}, Reasons: "
|
||||
f"homemade_in_title={'homemade' in title.lower()}, "
|
||||
f"homemade_in_summary={'homemade' in summary.lower()}, "
|
||||
f"recipe_keywords={any(kw in title.lower() or kw in summary.lower() for kw in RECIPE_KEYWORDS)}")
|
||||
return main_topic, [main_topic, "food"], main_topic, skip_flag
|
||||
|
||||
image_query = result["image_query"]
|
||||
relevance_keywords = result["relevance"]
|
||||
main_topic = result.get("main_topic", extract_main_topic(title.lower() + " " + summary.lower()))
|
||||
|
||||
Reference in New Issue
Block a user