""" 测试脚本:上传文件到 OSS → 获取 URL → 发送给 GLM 进行识别 用法: cd server source ~/.bashrc && source .venv/bin/activate python -m utils.test_oss_glm --file <本地文件路径> [--prompt "描述一下这张图片"] """ import argparse import sys from pathlib import Path # 确保 server 目录在 sys.path sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) from utils.oss_uploader import upload_file from utils.glm_adapter import glm_chat_sync def main(): parser = argparse.ArgumentParser(description="上传文件到 OSS 并让 GLM 读取") parser.add_argument("--file", required=True, help="要上传的本地文件路径") parser.add_argument( "--prompt", default="请描述一下这张图片的内容", help="发给 GLM 的提示词" ) parser.add_argument( "--model", default="glm-4.6v", help="GLM 模型名称(默认: glm-4.6v)" ) args = parser.parse_args() # ── 第一步:上传文件到 OSS ──────────────────────────────── file_path = args.file if not Path(file_path).exists(): print(f"❌ 文件不存在: {file_path}") sys.exit(1) print(f"📤 正在上传文件: {file_path}") oss_result = upload_file(file_path) file_url = oss_result["url"] print(f"✅ 上传成功!") print(f" URL: {file_url}") print() # ── 第二步:构建消息,把 URL 发给 GLM ────────────────────── messages = [ { "role": "user", "content": [ { "type": "image_url", "image_url": {"url": file_url}, }, { "type": "text", "text": args.prompt, }, ], } ] print(f"🤖 正在请求 GLM ({args.model}) 识别图片...") print(f" 提示词: {args.prompt}") print() result = glm_chat_sync( messages=messages, model=args.model, temperature=0.7, max_tokens=2048, ) print("─" * 60) print("📝 GLM 回复:") print("─" * 60) print(result["content"]) print("─" * 60) if result.get("usage"): usage = result["usage"] print( f"\n📊 Token 用量: 输入 {usage['promptTokens']} | " f"输出 {usage['completionTokens']} | " f"总计 {usage['totalTokens']}" ) if __name__ == "__main__": main()