Reuse memoir JSON payload parsing
This commit is contained in:
@@ -3,11 +3,11 @@ import logging
|
||||
import re
|
||||
from typing import Any, Optional
|
||||
|
||||
from .json_payload import extract_json_payload
|
||||
from .settings import MemoirImageSettings
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
_CJK_RE = re.compile(r"[\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff]")
|
||||
_MARKDOWN_JSON_FENCE_RE = re.compile(r"^\s*```(?:json)?\s*(.*?)\s*```\s*$", re.IGNORECASE | re.DOTALL)
|
||||
|
||||
|
||||
class MemoirImagePromptService:
|
||||
@@ -63,7 +63,7 @@ class MemoirImagePromptService:
|
||||
+ json.dumps(llm_input, ensure_ascii=False)
|
||||
)
|
||||
raw_response = response.content
|
||||
parsed = json.loads(_extract_json_payload(raw_response))
|
||||
parsed = json.loads(extract_json_payload(raw_response))
|
||||
return {
|
||||
"prompt": _ensure_style_in_prompt(parsed["prompt"], parsed.get("style", style)),
|
||||
"style": parsed.get("style", style),
|
||||
@@ -121,23 +121,6 @@ def _contains_cjk(value: str) -> bool:
|
||||
return bool(_CJK_RE.search(value or ""))
|
||||
|
||||
|
||||
def _extract_json_payload(raw_response: str | None) -> str:
|
||||
cleaned = (raw_response or "").strip()
|
||||
fenced_match = _MARKDOWN_JSON_FENCE_RE.match(cleaned)
|
||||
if fenced_match:
|
||||
cleaned = fenced_match.group(1).strip()
|
||||
|
||||
if cleaned.startswith("{") and cleaned.endswith("}"):
|
||||
return cleaned
|
||||
|
||||
start = cleaned.find("{")
|
||||
end = cleaned.rfind("}")
|
||||
if start != -1 and end != -1 and end > start:
|
||||
return cleaned[start : end + 1].strip()
|
||||
|
||||
return cleaned
|
||||
|
||||
|
||||
def _ensure_style_in_prompt(prompt: str, style: str) -> str:
|
||||
cleaned_prompt = (prompt or "").strip()
|
||||
cleaned_style = (style or "").strip()
|
||||
|
||||
Reference in New Issue
Block a user