hub-gif 9fd32a3f84 refactor(pipeline): OpenAI 网关与配料视觉抽离至 openai_gateway
新增 pipeline/openai_gateway:credentials、text_chat、ingredients_op、ingredients_defaults 等;AI_crawler 仅加载 .env 与重导出。CrawlerOpenAiCompatible 与京东详情/流水线改走 import pipeline.openai_gateway,不再依赖 sys.path 注入爬虫目录。llm/providers/shared 转重导 gateway。详情脚本补充 backend 入 path。

Made-with: Cursor
2026-04-27 10:24:50 +08:00

64 lines
1.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""OpenAI 兼容网关:从环境或参数解析 API 凭证与模型名(文本 / 多模态共用)。"""
from __future__ import annotations
import os
from .constants import DEFAULT_MODEL
def _resolve_credentials(
api_key: str | None,
base_url: str | None,
model: str | None,
) -> tuple[str, str, str]:
key = (
(api_key or "").strip()
or (os.environ.get("OPENAI_API_KEY") or os.environ.get("LLM_API_KEY") or "").strip()
)
base = (
(base_url or "").strip().rstrip("/")
or (
os.environ.get("OPENAI_BASE_URL") or os.environ.get("LLM_BASE_URL") or ""
).strip().rstrip("/")
)
m = (
(model or "").strip()
or (
os.environ.get("OPENAI_VISION_MODEL")
or os.environ.get("LLM_MODEL")
or DEFAULT_MODEL
).strip()
)
if not key:
raise ValueError("请设置环境变量 OPENAI_API_KEY或 LLM_API_KEY")
if not base:
raise ValueError(
"请设置环境变量 OPENAI_BASE_URL或 LLM_BASE_URL例如 https://your-gateway.com/v1"
)
return key, base, m
def resolve_text_model_name(model: str | None = None) -> str:
m = (model or "").strip()
if m:
return m
for env in (
"OPENAI_TEXT_MODEL",
"LLM_TEXT_MODEL",
"OPENAI_VISION_MODEL",
"LLM_MODEL",
):
v = (os.environ.get(env) or "").strip()
if v:
return v
return DEFAULT_MODEL
def resolve_credentials(
api_key: str | None = None,
base_url: str | None = None,
model: str | None = None,
) -> tuple[str, str, str]:
"""与历史 ``AI_crawler._resolve_credentials`` 行为一致,供业务显式预检(如多模态是否可用)。"""
return _resolve_credentials(api_key, base_url, model)