当前位置: 首页 > news >正文

腾讯混元调用代码实践

目录

查看资源是否用尽:

ai3d的资源包,可以免费领取

api调用实例,亲测ok:


查看资源是否用尽:

https://console.cloud.tencent.com/hunyuan/packages

ai3d的资源包,可以免费领取

https://console.cloud.tencent.com/ai3d/packages

api调用实例,亲测ok:

# -*- coding: utf-8 -*- import time import json import requests from tencentcloud.common import credential from tencentcloud.common.profile.client_profile import ClientProfile from tencentcloud.common.profile.http_profile import HttpProfile from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException from tencentcloud.hunyuan.v20230901 import hunyuan_client, models SECRET_ID = "SECRET_ID" SECRET_KEY = "SECRET_KEY " REGION = "ap-guangzhou" def init_client(): """初始化混元API客户端""" try: cred = credential.Credential(SECRET_ID, SECRET_KEY) http_profile = HttpProfile() http_profile.endpoint = "hunyuan.tencentcloudapi.com" http_profile.reqTimeout = 60 # 超时时间60秒 client_profile = ClientProfile() client_profile.httpProfile = http_profile client = hunyuan_client.HunyuanClient(cred, REGION, client_profile) print("✅ API客户端初始化成功") return client except Exception as e: print(f"❌ API客户端初始化失败: {e}") return None def submit_hunyuan_image_job(prompt, resolution="1024:1024", num=1, style=None): client = init_client() if not client: return None print("提交混元图片生成任务") if style: print(f"风格: {style}") print("-" * 60) try: # 创建请求对象 req = models.SubmitHunyuanImageJobRequest() req.Prompt = prompt req.Resolution = resolution req.Num = num # 可选参数:风格 if style: req.Style = style # 提交任务 resp = client.SubmitHunyuanImageJob(req) print(f"✅ 任务提交成功 Job ID: {resp.JobId}") return resp.JobId except TencentCloudSDKException as e: print(f"\n❌ 提交失败: {e}") print(f" 错误代码: {e.code}") print(f" 错误信息: {e.message}") return None except Exception as e: print(f"\n❌ 未知错误: {e}") return None def query_hunyuan_image_job(job_id, max_retries=60, interval=5): client = init_client() if not client: return None print(f"\n开始查询任务: {job_id}") print("-" * 60) req = models.QueryHunyuanImageJobRequest() req.JobId = job_id for retry_count in range(max_retries): try: print(f"[{retry_count + 1}/{max_retries}] 查询任务状态...") resp = client.QueryHunyuanImageJob(req) status_code = resp.JobStatusCode status_msg = resp.JobStatusMsg print(f" 状态码: {status_code} 状态信息: {status_msg}") # 状态码判断(关键修改) if status_code == '5': # 任务完成 print("✅ 任务处理完成!") print("=" * 60) result = {"job_id": job_id, "status": "completed", "image_urls": list(resp.ResultImage) if hasattr(resp, 'ResultImage') and resp.ResultImage else [], "revised_prompts": list(resp.RevisedPrompt) if hasattr(resp, 'RevisedPrompt') and resp.RevisedPrompt else [], "request_id": resp.RequestId} # 打印图片URL if result['image_urls']: print(f"📷 生成的图片 ({len(result['image_urls'])}张):") for idx, url in enumerate(result['image_urls'], 1): print(f" {idx}. {url}") else: print("⚠️ 任务完成但未返回图片URL") # 打印优化后的提示词 if result['revised_prompts']: print(f"📝 优化后的提示词:") for idx, prompt in enumerate(result['revised_prompts'], 1): print(f" {idx}. {prompt}") return result elif status_code in ['0', '1', '2']: # 等待、处理中、运行中 - 继续等待 status_desc = {'0': '⏳ 任务排队中', '1': '⏳ 任务初始化中', '2': '🎨 任务运行中(生成图片)'}.get(status_code, '⏳ 任务处理中') print(f"{status_desc},等待 {interval} 秒后重试...") elif status_code in ['3', '4']: # 真正的失败状态 print(f"\n❌ 任务失败: {status_msg}") if hasattr(resp, 'JobErrorMsg') and resp.JobErrorMsg: print(f" 错误详情: {resp.JobErrorMsg}") return None else: # 未知状态码 print(f"\n⚠️ 未知状态码: {status_code}") print(f" 状态信息: {status_msg}") # 如果不是完成状态且不是已知的处理状态,可能是失败 if status_code != '5': print(" 任务可能失败,停止查询") return None # 等待下次查询 if retry_count < max_retries - 1: time.sleep(interval) except TencentCloudSDKException as e: print(f"❌ 查询异常: {e}") if "JobNotFound" in str(e): print("任务不存在,请检查Job ID") return None time.sleep(interval) except Exception as e: print(f"❌ 未知错误: {e}") time.sleep(interval) print("\n❌ 查询超时,任务可能仍在处理中") return None def get_fresh_image_url(job_id): """获取新的有效图片URL""" cred = credential.Credential(SECRET_ID, SECRET_KEY) http_profile = HttpProfile() http_profile.endpoint = "hunyuan.tencentcloudapi.com" client_profile = ClientProfile() client_profile.httpProfile = http_profile client = hunyuan_client.HunyuanClient(cred, REGION, client_profile) req = models.QueryHunyuanImageJobRequest() req.JobId = job_id try: resp = client.QueryHunyuanImageJob(req) if resp.JobStatusCode == '5' and resp.ResultImage: return resp.ResultImage[0] except Exception as e: print(f"查询失败: {e}") return None def submit_and_wait(prompt, resolution="1024:1024", num=1, style=None, max_retries=30, interval=3): job_id = submit_hunyuan_image_job(prompt, resolution, num, style) if not job_id: return None result = query_hunyuan_image_job(job_id, max_retries, interval) return result def download_image(url, save_path=None): """下载生成的图片""" if not url: print("❌ 图片URL为空") return None if save_path is None: import hashlib url_hash = hashlib.md5(url.encode()).hexdigest()[:8] save_path = f"generated_image_{url_hash}.png" # print(f"\n开始下载图片: {save_path}") headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'} try: response = requests.get(url, headers=headers, timeout=30) if response.status_code == 200: with open(save_path, 'wb') as f: f.write(response.content) print(f"✅ 图片已保存: {save_path}") return save_path else: print(f"❌ 下载失败: HTTP {response.status_code}") return None except Exception as e: print(f"❌ 下载异常: {e}") return None if __name__ == "__main__": prompt1 = "生成一个金黄色戒指的3D设计稿,然后拆分3d打印零件" result1 = submit_and_wait(prompt1, resolution="1024:1024", num=1,interval=2) if result1 and result1['image_urls']: # 下载图片 for idx, url in enumerate(result1['image_urls'], 1): download_image(url, f"example1_image_{idx}.png") # prompt2 = "山水风景,有山有水有云雾,中国传统水墨画风格" # # 风格代码: 101-水墨画, 102-概念艺术, 103-油画, 104-素描, 105-水彩画 # result2 = submit_and_wait(prompt2, resolution="1280:720", num=1, style="101")
http://www.jsqmd.com/news/841843/

相关文章:

  • 在 Taotoken 控制台中如何管理多个 API Key 并设置访问控制与审计
  • SAP OData服务进阶:给你的CDS视图OData服务加上增删改(CRUD)功能(SEGW + DPC_EXT类重定义详解)
  • ZYNQ中断系统实战:从PL到PS的双向通信与配置详解
  • 开源写作助手:本地化部署的智能文本分析与AI辅助创作工具
  • 让框架跑得久一点:失败继续、日志、截图、HTML 与网络现场
  • EFFACT架构:全同态加密硬件加速的创新设计
  • 贪吃蛇游戏设计-2.画游戏背景
  • FPGA边缘计算中的延迟反馈储层系统优化实践
  • 别再傻等下载了!手把手教你用阿里云镜像加速搞定Vulfocus靶场环境(附常见失败解决方案)
  • Windows 11 LTSC用户终极指南:如何一键安装微软商店恢复完整应用生态
  • 2026运营岗位学数据分析指南
  • Squirrel-RIFE视频补帧终极指南:3步将卡顿视频变成丝滑流畅
  • 终极指南:如何用XUnity自动翻译器让外语游戏秒变中文版
  • RAG查询改写②【第十篇】:HYDE、StepBack、子问题拆分,高阶改写算法生产落地
  • 9 款 AI 写论文哪个好?2026 实测:真文献 + 真实图表 + 全流程合规,虎贲等考 AI 稳坐毕业论文第一
  • Joy-Con Toolkit 终极配色教程:轻松自定义Switch手柄色彩的完整指南
  • 从Unknown Error到精准定位:一次GPU过热掉线的深度排查与散热优化实战
  • GitHub自动化协作:用Actions实现Issue自动转PR,提升开发效率
  • codebase-md:自动化生成项目结构文档,提升代码理解与团队协作效率
  • Pandas Series:深入理解Python数据分析的基石
  • [STM32U3] 【STM32U385RG 测评】——1.开箱点灯
  • 地下水数值模拟中稳态与瞬态模型的构建机理及参数率定方法指南
  • k8s-etcd
  • 写论文软件哪个好?2026 实测:真文献 + 实证 + 全流程,虎贲等考 AI 成毕业论文首选
  • Win7 运行 Win10 程序终极操作手册
  • DeepPCB:工业级PCB缺陷检测数据集的完整解决方案
  • python系列【仅供参考】;避开这些坑,你的Python爬虫才能稳定爬取IEEE Xplore(含反爬策略与MongoDB存储实战)
  • 从TT的聊天窗口到日志系统:用C++双端队列实现一个带“置顶”功能的特殊队列
  • HarmonyOS ArkWeb 系列之历史导航管理:前进、后退和跳转指定历史记录
  • 苏州沃虎电子(VOOHU)低高度千兆SMD网络变压器WHSG24303G产品介绍