DashScope Python SDK 1.x 接口的历史用法速查与 1.x 到 2.0 的迁移对照,供存量项目参考。
本文面向仍在使用 DashScope Python SDK 1.x 的存量项目,集中收录 1.x 接口的典型用法,并给出对应的 2.0 写法。
1.x 通过模块级全局变量配置;2.0 通过
分步任务(1.x
分步控制(原
1.x 使用回调类(
本地文件一次识别(1.x
1.x
一次性合成(短文本整段返回)用
批量向量(1.x
迁移时除接口名外,还需要注意以下行为差异:
新项目请直接使用 SDK 2.0:1.x 已进入冻结维护(只修缺陷、不增功能),1.x 与 2.0 在同一个
dashscope 包内并存(2.0.1 起提供),存量代码无需删除 1.x 依赖即可逐步迁移。Assistants / Threads / Runs 系列 API 已随 1.x 下线,服务端不再支持,请勿在新代码中使用。接口迁移总对照
| 能力 | 1.x 接口 | 2.0 接口 |
|---|---|---|
| 文本生成 | Generation.call / AioGeneration.call | client.chat.completions.create |
| 多模态对话 | MultiModalConversation.call | client.multimodal.chat.create |
| 图像生成 | ImageSynthesis.call/async_call/fetch/wait | client.images.generate / client.images.jobs.* |
| 视频生成 | VideoSynthesis.call/async_call/fetch/wait | client.videos.generate / client.videos.jobs.* |
| 录音文件转写 | Transcription.async_call/fetch/wait | client.audio.asr.transcribe / client.audio.asr.jobs.* |
| 实时语音识别 | Recognition.start/send_audio_frame/stop | client.audio.asr.recognize(...) 上下文管理器 |
| 语音合成 | SpeechSynthesizer(tts_v2 回调式) | client.audio.tts.synthesize/stream/connect |
| 文本向量 | TextEmbedding.call / BatchTextEmbedding | client.embeddings.create / client.embeddings.jobs.* |
| 重排序 | TextReRank.call | client.rerank.create |
| 文件管理 | Files.upload/list/get/delete | client.files.upload/list/get/delete |
| 模型列表 | Models.list/get | client.models.list/get |
客户端构造与鉴权
1.x 通过模块级全局变量配置;2.0 通过 Client 构造参数配置(优先级:构造参数 > dashscope.settings > 环境变量 > ~/.dashscope/config.toml)。
文本生成
多模态对话
图像生成
async_call/fetch/wait)对应 client.images.jobs.create/fetch/wait;任务状态判定由 rsp.output.task_status == "SUCCEEDED" 改为 job.succeeded。
视频生成
1.x
VideoSynthesis 的 extend_prompt 默认为 True;2.0 为 prompt_extend 且缺省由服务端决定,依赖旧默认的调用需显式传 prompt_extend=True。录音文件转写
async_call + 循环 fetch)对应 client.audio.asr.jobs.create + 循环 jobs.fetch。
实时语音识别
1.x 使用回调类(Recognition + RecognitionCallback);2.0 改为上下文管理器 + 事件迭代。
Recognition.call(file))对应 for event in client.audio.asr.recognize_file(path, model=...):。
语音合成
1.x tts_v2 使用回调收音频;2.0 改为迭代/会话式。
client.audio.tts.synthesize(text, model=..., voice=...);纯流式用 client.audio.tts.stream(text, ...) 迭代 bytes。
文本向量与重排序
BatchTextEmbedding)对应 client.embeddings.jobs.create/fetch/wait。重排序 TextReRank.call 对应 client.rerank.create,取值由 resp.output.results[i] 改为 resp.results[i]。
行为差异要点
迁移时除接口名外,还需要注意以下行为差异:
- 错误处理:1.x 在响应对象上自查
status_code/code;2.0 默认失败直接抛DashScopeError异常族(含e.code/e.status_code/e.request_id/e.message),需要信封风格可构造Client(raise_on_error=False)。 - 流式输出:1.x
Generation.call(stream=True)默认每帧重放全量文本(需incremental_output=True才增量);2.0 流式一律增量。 - 异步任务等待:1.x
wait默认无限等待、超时返回错误响应;2.0jobs.wait默认 24 小时总预算、指数退避轮询、任务 FAILED 抛异常。 - 响应结构:1.x 业务内容包裹在
output字段下(response.output.choices[...]);2.0 已扁平化(response.choices[...]),并新增resp.output_text、job.succeeded等便捷取值。 - 签名外参数:2.0 各资源方法为封闭具名签名,1.x 透传的模型专属参数需改走
parameters={...}(图像素材类走extra_input=)。