Files
resume-agent/backend/scripts/smoke_llm.py
T
2026-07-20 14:48:41 +08:00

69 lines
1.9 KiB
Python

from __future__ import annotations
import argparse
import importlib.util
import json
import sys
from dataclasses import replace
from pathlib import Path
BACKEND_ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(BACKEND_ROOT))
from app.llm_services import LLMServiceError, build_services # noqa: E402
from app.settings import load_settings # noqa: E402
def main() -> int:
parser = argparse.ArgumentParser(
description="Call the configured OpenAI-compatible gateway once."
)
parser.add_argument(
"--text",
default="我从2022年3月至今在星河科技有限公司担任产品经理。",
)
args = parser.parse_args()
settings = load_settings()
if not settings.openai_api_key:
print("OPENAI_API_KEY is empty; configure backend/.env first.", file=sys.stderr)
return 2
if importlib.util.find_spec("openai") is None:
print("OpenAI SDK is not installed; run pip install -r requirements.txt.", file=sys.stderr)
return 3
live_settings = replace(
settings,
llm_provider="openai",
fallback_to_rules=False,
)
extractor, _rewriter = build_services(live_settings)
try:
patch = extractor.extract_anchor(
args.text,
"work_experience",
["company", "position", "start_date", "end_date_or_present"],
)
except LLMServiceError as exc:
print(f"Gateway smoke test failed safely: {exc}", file=sys.stderr)
return 1
print(
json.dumps(
{
"ok": True,
"base_url": live_settings.openai_base_url,
"model": live_settings.openai_model,
"structured_output_mode": live_settings.structured_output_mode,
"extracted": patch,
},
ensure_ascii=False,
indent=2,
)
)
return 0
if __name__ == "__main__":
raise SystemExit(main())