LLM 호출 규격 전환: 고객사 사내 LLM(FabriX/Gauss) 헤더 지원 (LLM_PROVIDER=fabrix)

- settings: LLM_PROVIDER/LLM_CHAT_PATH/LLM_BODY_MODEL/LLM_JSON_MODE/LLM_MAX_TOKENS, FABRIX_* 3종, llm_enabled()
- llm_client: headers()/body() 를 규격별로 구성. fabrix 는 x-openapi-token(Bearer)/x-generative-ai-client/
  x-llm-model-id/x-generative-ai-user-email, body model 은 LLM_BODY_MODEL
- summarize/ping: 접속 점검 명령 (--show 로 요청만 확인)
- docs/llm-provider-plan.md: 계획·.env 값·오류별 조치. 기본값은 openai 라 기존 동작 불변

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
byeongwook.choi
2026-09-21 15:18:55 +09:00
co-authored by Claude Fable 5.1
parent 89deb108b0
commit 0f70c0d245
7 changed files with 319 additions and 11 deletions
+13
View File
@@ -15,6 +15,19 @@ LLM_BACKOFF_BASE=2.0
LLM_BACKOFF_MAX=60.0
LLM_TIMEOUT_S=180
# --- 호출 규격 (docs/llm-provider-plan.md). 기본은 openai(Authorization: Bearer LLM_API_KEY)
# 고객사 사내 LLM(FabriX/Gauss)은 아래처럼. 확인: python -m summarize.ping
#LLM_PROVIDER=fabrix
#LLM_BASE_URL=https://<고객사 LLM 호스트>/<경로> # 완성 주소면 LLM_CHAT_PATH= (빈값), 아니면 /chat/completions 가 붙는다
#LLM_CHAT_PATH=/chat/completions
#LLM_MODEL=339 # x-llm-model-id (모델 번호)
#LLM_BODY_MODEL=/mnt/models # body 의 model (FabriX 는 고정값)
#LLM_JSON_MODE=1 # response_format 을 서버가 거부(400)하면 0
#LLM_MAX_TOKENS=0 # 0 이면 안 보냄
#FABRIX_CLIENT_KEY= # x-generative-ai-client
#FABRIX_OPENAPI_TOKEN= # x-openapi-token (Bearer 는 코드가 붙임)
#FABRIX_USER_EMAIL= # x-generative-ai-user-email (신원 정보)
# /ingest 가 뒤이어 돌리는 요약의 백엔드: api | file | off
SUMMARIZE_BACKEND=api