fix(opencode): 이미지가 게이트웨이까지 안 오던 것 — vision 모델에 modalities.image 표시 + 이미지 턴은 OpenCode 에 gateway/605 지정
고객사 실측: 게이트웨이 로그 parts=['text']. OpenCode 는 모델 설정에 이미지 입력 표시가 없으면 파트를 떨구고 텍스트만 보냄. render_opencode 가 AAF_FABRIX_VISION_MODEL_ID 모델에 attachment/modalities 를 붙이고, deploy.sh 가 OPENCODE_VISION_MODEL=gateway/605 를 채워 백엔드가 이미지 턴에 그 모델을 지정. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
377a36a313
commit
7397061665
@@ -34,7 +34,7 @@ def load_env(path: Path) -> dict[str, str]:
|
||||
k, v = line.split("=", 1)
|
||||
v = v.split(" #", 1)[0].strip().strip("\"'") # 줄 끝 주석은 두 칸 띄고 #
|
||||
out[k.strip()] = v
|
||||
out.update({k: v for k, v in os.environ.items() if k.startswith(("AAF_", "BACKEND_PORT", "MCP_"))})
|
||||
out.update({k: v for k, v in os.environ.items() if k.startswith(("AAF_", "BACKEND_PORT", "MCP_", "OPENCODE_"))})
|
||||
return out
|
||||
|
||||
|
||||
@@ -43,7 +43,15 @@ def render(env: dict[str, str]) -> str:
|
||||
(env.get("AAF_FABRIX_MODEL_ID") or "default"): "FabriX"
|
||||
}
|
||||
values = dict(env)
|
||||
values["AAF_FABRIX_MODELS_JSON"] = json.dumps({mid: {"name": name} for mid, name in models.items()}, ensure_ascii=False)
|
||||
# vision 모델엔 이미지 입력 가능 표시 — 없으면 OpenCode 가 이미지 파트를 떨구고 텍스트만 보냄(고객사 실측: parts=['text'])
|
||||
vision = (env.get("AAF_FABRIX_VISION_MODEL_ID") or "").strip()
|
||||
def _model(mid: str, name: str) -> dict:
|
||||
m: dict = {"name": name}
|
||||
if mid == vision:
|
||||
m["attachment"] = True
|
||||
m["modalities"] = {"input": ["text", "image"], "output": ["text"]}
|
||||
return m
|
||||
values["AAF_FABRIX_MODELS_JSON"] = json.dumps({mid: _model(mid, name) for mid, name in models.items()}, ensure_ascii=False)
|
||||
values["AAF_FABRIX_DEFAULT_MODEL"] = next(iter(models))
|
||||
values.setdefault("BACKEND_PORT", "8001")
|
||||
values.setdefault("MCP_PORT", "8888")
|
||||
|
||||
Reference in New Issue
Block a user