bitcheck-document / tests /test_deepseek_llm.py
AI Assistant
Update Bitcheck Document Service and test.html
37a1755
Raw
History Blame Contribute Delete
1.65 kB
from pathlib import Path
from app.config import Settings
from app.services.deepseek_llm import DeepSeekLLM
def make_settings(tmp_path: Path) -> Settings:
return Settings(
app_name="BitCheck Document Verification API",
version="1.0.0",
upload_dir=tmp_path / "uploads",
output_dir=tmp_path / "outputs",
max_upload_mb=20,
max_pdf_pages=5,
deepseek_api_key=None,
deepseek_base_url="https://api.deepseek.com",
deepseek_model="deepseek-chat",
log_level="INFO",
)
def test_json_parser_handles_markdown_wrapped_json(tmp_path: Path) -> None:
content = """
```json
{
"document_type": "certificate",
"fraud_risk_score": 0.22,
"ai_generated_text_likelihood": 0.41,
"summary": "Risk signals are limited.",
"external_verification_required": true
}
```
"""
parsed, warnings = DeepSeekLLM(make_settings(tmp_path)).parse_json_response(content)
assert warnings == []
assert parsed["document_type"] == "certificate"
assert parsed["fraud_risk_score"] == 0.22
assert parsed["ai_generated_text_likelihood"] == 0.41
assert parsed["summary"] == "Risk signals are limited."
assert parsed["external_verification_required"] is True
def test_json_parser_returns_safe_fallback_for_invalid_json(tmp_path: Path) -> None:
parsed, warnings = DeepSeekLLM(make_settings(tmp_path)).parse_json_response("not json")
assert parsed["external_verification_required"] is True
assert parsed["fraud_risk_score"] == 0.0
assert warnings == ["DeepSeek returned invalid JSON; safe fallback was used."]