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

📅 2026/7/2 2:21:19
封装统一多模态客户端(整合文字对话 + 文生图 + 语音转写)
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( modelself.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( modelself.img_model, messages[ { role: user, content: [ {text: prompt} ] } ], sizesize, n1 ) 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( modelself.asr_model, files[{file: audio_path}], messages[{role: user, content: [{audio: audio_path}]}], result_formatmessage, 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?Expires1783515731OSSAccessKeyIdLTAI5tPxpiCM2hjmWrFXrym1Signature29L0STjlteQU1rJ%2FkG9YAUkEf0U%3D 语音转文字 喂喂喂测试测试一二三一二三。 进程已结束退出代码为 0