D146: 修复qwen-vision.py密钥加载路径
- 变量名改为ALIYUN_QWEN_VL_KEY + ALIYUN_QWEN_VL_ENDPOINT - 按LOCAL-SECRETS-PATH.hdlp顺序读: 本地secrets → .env → 环境变量 - 头部注释写明密钥来源路径规则
This commit is contained in:
parent
2d8dcf0430
commit
e122ac92e3
@ -2,6 +2,13 @@
|
|||||||
"""铸渊之眼 · 通义千问视觉分析器
|
"""铸渊之眼 · 通义千问视觉分析器
|
||||||
用阿里百炼 qwen-vl 模型看图片,输出风格/色调/构图分析
|
用阿里百炼 qwen-vl 模型看图片,输出风格/色调/构图分析
|
||||||
|
|
||||||
|
⚠️ 密钥不在代码仓库里。读取规则见 LOCAL-SECRETS-PATH.hdlp。
|
||||||
|
密钥变量: ALIYUN_QWEN_VL_KEY + ALIYUN_QWEN_VL_ENDPOINT
|
||||||
|
读取顺序:
|
||||||
|
1. /Users/bingshuolingdianyuanhe/Documents/guanghulab-local-secrets/video-ai-system.env
|
||||||
|
2. ~/guanghulab/video-ai-system/.env
|
||||||
|
3. 当前进程环境变量
|
||||||
|
|
||||||
用法:
|
用法:
|
||||||
python3 qwen-vision.py <image.jpg> # 单图分析
|
python3 qwen-vision.py <image.jpg> # 单图分析
|
||||||
python3 qwen-vision.py <image1.jpg> <image2.jpg> # 双图对比
|
python3 qwen-vision.py <image1.jpg> <image2.jpg> # 双图对比
|
||||||
@ -11,23 +18,46 @@ import sys, os, json, base64
|
|||||||
from urllib.request import Request, urlopen
|
from urllib.request import Request, urlopen
|
||||||
from urllib.error import URLError
|
from urllib.error import URLError
|
||||||
|
|
||||||
# === 配置 ===
|
# === 密钥加载 ===
|
||||||
# 从 .env 读 key
|
# 按 LOCAL-SECRETS-PATH.hdlp 规定的顺序加载
|
||||||
env_path = os.path.expanduser("~/guanghulab/video-ai-system/.env")
|
SECRET_PATHS = [
|
||||||
|
"/Users/bingshuolingdianyuanhe/Documents/guanghulab-local-secrets/video-ai-system.env",
|
||||||
|
os.path.expanduser("~/guanghulab/video-ai-system/.env"),
|
||||||
|
]
|
||||||
|
|
||||||
api_key = None
|
api_key = None
|
||||||
if os.path.exists(env_path):
|
endpoint = None
|
||||||
for line in open(env_path):
|
|
||||||
line = line.strip()
|
# 先试环境变量
|
||||||
if line.startswith("ALIYUN_API_KEY="):
|
api_key = os.environ.get("ALIYUN_QWEN_VL_KEY") or os.environ.get("ALIYUN_BAILIAN_API_KEY")
|
||||||
api_key = line.split("=", 1)[1].strip()
|
endpoint = os.environ.get("ALIYUN_QWEN_VL_ENDPOINT") or "https://ws-umd6xwlovzmshuat.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation"
|
||||||
break
|
|
||||||
|
# 再从文件读
|
||||||
|
if not api_key:
|
||||||
|
for secret_path in SECRET_PATHS:
|
||||||
|
if os.path.exists(secret_path):
|
||||||
|
for line in open(secret_path):
|
||||||
|
line = line.strip()
|
||||||
|
if not line or line.startswith("#"):
|
||||||
|
continue
|
||||||
|
if "=" in line:
|
||||||
|
k, v = line.split("=", 1)
|
||||||
|
k = k.strip()
|
||||||
|
v = v.strip()
|
||||||
|
if k in ("ALIYUN_QWEN_VL_KEY", "ALIYUN_API_KEY", "ALIYUN_BAILIAN_API_KEY") and v and not api_key:
|
||||||
|
api_key = v
|
||||||
|
if k == "ALIYUN_QWEN_VL_ENDPOINT" and v and not os.environ.get("ALIYUN_QWEN_VL_ENDPOINT"):
|
||||||
|
endpoint = v
|
||||||
|
if api_key:
|
||||||
|
break
|
||||||
|
|
||||||
if not api_key:
|
if not api_key:
|
||||||
print(json.dumps({"error": "未找到ALIYUN_API_KEY"}))
|
print(json.dumps({"error": "未找到ALIYUN_QWEN_VL_KEY。请确认密钥文件存在。路径: LOCAL-SECRETS-PATH.hdlp"}))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# 端点:先试公网,再试北京
|
# 端点
|
||||||
ENDPOINTS = [
|
ENDPOINTS = [
|
||||||
|
endpoint,
|
||||||
"https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation",
|
"https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation",
|
||||||
]
|
]
|
||||||
MODELS = ["qwen-vl-max", "qwen3-vl-plus", "qwen-vl-plus"]
|
MODELS = ["qwen-vl-max", "qwen3-vl-plus", "qwen-vl-plus"]
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user