Shane 7 months ago
parent 2554693895
commit d54e640644
  1. 33
      foodie_utils.py

@ -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()))

Loading…
Cancel
Save