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

封装统一多模态客户端(整合文字对话 + 文生图 + 语音转写)

import dashscope # 1. 修改导入:使用 MultiModalConversation 处理多模态对话 from dashscope import MultiModalConversation from dashscope.aigc.image_generation import ImageGeneration import os # 只保留api_key,删除手动base_http_api_url解决url 400报错 dashscope.api_key = os.getenv("DASHSCOPE_API_KEY") # 密钥前置校验 if not dashscope.api_key: raise RuntimeError("请配置环境变量 DASHSCOPE_API_KEY") class MultiModalClient: def __init__(self): self.llm_model = "qwen3.7-plus" self.img_model = "qwen-image-2.0-pro-2026-04-22" self.asr_model = "qwen3-asr-flash" def chat(self, prompt): """纯文本对话""" try: # 2. 修改调用方法:使用 MultiModalConversation.call 替代 Generation.call rsp = MultiModalConversation.call( model=self.llm_model, messages=[{"role": "user", "content": prompt}] ) if rsp.status_code == 200: return rsp.output.choices[0].message.content print(f"【对话失败】code:{rsp.status_code}, msg:{rsp.message}") return None except Exception as e: print(f"【对话异常】{str(e)}") return None def generate_image(self, prompt, size: str = "1024*1024"): """文生图:使用 messages 格式传参""" try: rsp = ImageGeneration.call( model=self.img_model, messages=[ { "role": "user", "content": [ {"text": prompt} ] } ], size=size, n=1 ) if rsp.status_code == 200: # 核心调试:直接打印完整的 output 对象,查看真实的字段结构 # print("【调试信息】文生图返回结构如下:") # print(rsp.output) # 尝试提取图片链接(请根据上面打印出的真实结构调整路径) # 如果报错,请把上面打印的内容发给我 # 可能的路径示例: # return rsp.output.choices[0].message.content[0]["image"] # return rsp.output.results[0].url return rsp.output.choices[0].message.content[0]["image"] return "请查看控制台打印的调试信息" print(f"【文生图失败】code:{rsp.status_code}, msg:{rsp.message}") return None except Exception as e: print(f"【文生图异常】{str(e)}") return None def speech2text(self, audio_path): """语音转文字:兼容新版返回结构+捕获异常""" try: rsp = dashscope.MultiModalConversation.call( model=self.asr_model, files=[{"file": audio_path}], messages=[{"role": "user", "content": [{"audio": audio_path}]}], result_format="message", asr_options={ "enable_itn": False } ) if rsp.status_code == 200: text_parts = [] for item in rsp.output.choices[0].message.content: if "text" in item: text_parts.append(item["text"]) return "".join(text_parts) print(f"【语音转写失败】code:{rsp.status_code}, msg:{rsp.message}") return None except Exception as e: print(f"【语音转写异常】{str(e)}") return None # 整体测试 if __name__ == "__main__": client = MultiModalClient() # 文本对话测试 chat_res = client.chat("你好") print("对话输出:", chat_res) # 文生图测试 img_url = client.generate_image("沙漠烈日仙人掌,治愈风景,写实高清") print("图片链接:", img_url) text = client.speech2text("录音.mp3") print("语音转文字:",text)
D:\program\bigmodel\.venv\Scripts\python.exe D:\program\bigmodel\week2\day12\升级:封装统一多模态客户端.py 对话输出: [{'text': '你好!有什么我可以帮你的吗?'}] 图片链接: https://dashscope-7c2c.oss-accelerate.aliyuncs.com/7d/a3/20260701/51613171/0c618569-2b02-48cb-b3c6-3f318915d0ad.png?Expires=1783515731&OSSAccessKeyId=LTAI5tPxpiCM2hjmWrFXrym1&Signature=29L0STjlteQU1rJ%2FkG9YAUkEf0U%3D 语音转文字: 喂喂喂,测试测试,一二三,一二三。 进程已结束,退出代码为 0

http://www.jsqmd.com/news/1106117/

相关文章:

  • 利用金字塔原理学习PHP的具象化的庖丁解牛
  • 汽车电子散热管理:DRV8213驱动器与MF25060V2风扇实战
  • 【小白也能轻松玩转龙虾】虾壳云一键部署入门攻略,分步搭建桌面端 OpenClaw v2.7.9(附最新安装包)
  • React 渲染性能:组件边界、状态下沉与重渲染治理
  • 后端开发者转型AI大模型的必备技能与实战指南
  • AI 辅助:独立开发者技术选型:最好的技术是能让产品活下去
  • AI 辅助:少说漂亮话:基础设施要用事故假设来设计
  • AI 辅助:独立创作:工具应放大作者,而不是替代作者
  • 一文看懂 DDoS 与 CC 攻击:攻击类型全解析 + 完整防护方案
  • 5个场景化解决方案:用taskt告别重复劳动,实现桌面自动化革命
  • Harness Engineering(驾驭工程)简单的演化过程
  • 阿贝云免费云服务器磁盘空间合理分配实操心得
  • 2025了会议纪要还写得慢又漏任务?听脑帮你智能提取任务超省心!
  • 云原生 AI 平台搭建:先把模型服务当普通服务治理
  • 一张图讲清楚:MCP边界
  • “借道”MoP封装,AMD打破“存储墙”与“空间锁”
  • 2.4 中间层:底层驱动与标准库——固收与负债的“稳态输出”
  • 那些与量子纠缠有关的物理概念和现象
  • QKeyMapper:Windows平台专业级全能按键映射引擎架构解析
  • 子任务想换个便宜模型跑?Sub-Agent 这样设计
  • 语音一键转文字超简单!2026多款免费软件详细步骤,新手一看就会
  • 小学算术题
  • 用最新 GPT-5.6 润色论文是一种怎么样的体验?
  • 开源视频生成模型选择
  • SpringBoot+Vue 私人西服定制_leabo管理平台源码【适合毕设/课设/学习】Java+MySQL
  • 检索增强架构实践:家庭回忆录助手如何避免编造
  • 提示词 与 工作流 编排:复杂流程要拆成可观测节点
  • 炉石传说智能脚本:7倍效率提升的自动化神器
  • 多机位像素同源融合渲染,一套图形底座搭建无割裂全域数字世界
  • 终极自动化Gofile下载神器:告别繁琐手动操作