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
![]()