chore(gateway): 요청 파트 종류·선택 모델 한 줄 로그 — 이미지 분기 확인용
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
c77fc8a737
commit
377a36a313
@@ -10,6 +10,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import logging
|
||||
from typing import AsyncIterator
|
||||
|
||||
import httpx
|
||||
@@ -19,6 +20,8 @@ from django.views.decorators.csrf import csrf_exempt
|
||||
|
||||
from .fabrix import FabrixConfig, Variant, auth_variants
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
# 테스트가 httpx.MockTransport 를 꽂는 자리. None 이면 진짜 네트워크.
|
||||
TRANSPORT: httpx.AsyncBaseTransport | None = None
|
||||
# 마지막에 통과한 인증 형식 — 프로세스당 하나. 다음 요청은 이것부터 시도.
|
||||
@@ -83,6 +86,9 @@ async def chat_completions(request: HttpRequest) -> HttpResponse:
|
||||
return _err(400, "본문이 JSON 객체가 아니야", "invalid_request")
|
||||
|
||||
body, headers = cfg.prepare(payload)
|
||||
# 어떤 파트가 왔고 어느 모델로 가는지 — 이미지 분기 확인용(본문은 안 찍음)
|
||||
kinds = sorted({p.get("type", "?") for m in payload.get("messages") or [] for p in (m.get("content") if isinstance(m.get("content"), list) else [])})
|
||||
log.info("ito → model=%s parts=%s stream=%s", headers.get("x-llm-model-id"), kinds or ["text"], bool(body.get("stream")))
|
||||
variants = auth_variants(headers, _last_ok["variant"])
|
||||
|
||||
if body.get("stream"):
|
||||
|
||||
Reference in New Issue
Block a user