English | 中文
这不是一份"API 调用参考"。在 AI 辅助开发的时代,任何人都能几秒钟生成一行 call(model="xxx")——本目录的价值在于提前、正确地把一个百炼应用推向生产所需的那几百行"脏活代码"写好:每个进阶文件都是一个微型的生产级 harness 蓝图,带有严格的工程防御,面向一个具体的开发或业务场景。全部示例基于 2.0 资源风格客户端 dashscope.Client()(与包内 dashscope.v2 一致);旧版 1.x 示例完整归档在 legacy_1x/ 下。
一个合格的最佳实践案例必须同时展现三个维度:
- 解决真实业务/工程痛点(企业知识库问答、高并发实时会议转写、在线智能客服等)。
- 云端大模型 × 本地 SDK 工程协同(本地 token 水位裁剪、流式增量优雅合并、跨重连转写稿拼装)。
- 生产级刚性防御与弹性治理(429/500 优雅处理、超时退避重试、多地域熔断容灾、状态机管理、按房间故障隔离)。
| 案例 | 一句话 | 离线运行 |
|---|---|---|
04_real_world_scenarios/production_ready_rag_harness.py |
工业级 RAG:流式语义检索 + 本地 token 水位 + 流式退避重试(SDK 不重试流式)+ 多地域熔断与故障切换 + 优雅降级 | ✅ |
04_real_world_scenarios/realtime_audio_meeting_harness.py |
高并发实时会议转写:每个会议室一条独立 websocket(realtime 无法复用)+ 会议状态机 + 断线重连 + 跨重连转写稿合并 + 按房间隔离与降级 | ✅ |
04_real_world_scenarios/customer_service_assistant.py |
在线智能客服:护栏化人设 + 业务工具 + 滑动窗口多轮记忆(含孤儿 tool 消息修剪)+ 受管工具循环 | 需要密钥 |
三个旗舰案例都嵌入了"代码为什么这样写"的源码级洞察(例如 SDK 不会自动重试流式请求、realtime 协议无法复用连接);详见
04_real_world_scenarios/README.md。
examples/
├── 01_atomic_capabilities/ 原子能力速查(最小可运行;也是喂给 AI 的权威 wire-shape 种子)
├── 02_advanced_engineering/ 工程模式:本地 mock 调试、语义缓存、熔断 + 多地域容灾
├── 03_agent_recipes/ Agent 配方:工具调用循环、RAG、MCP server
├── 04_real_world_scenarios/ 旗舰最佳实践:把上面三层组装成端到端生产 harness
└── legacy_1x/ 1.x 模块级 API 示例(dashscope.Generation 等),仅供参考
各层定位(一条从"速查"到"生产蓝图"的进阶路径):
- 01 原子能力(速查种子):每个能力一个文件,最小但可运行。刻意保持简单——它是查询 wire-shape 的权威种子,也是喂给通义灵码 / Cursor 让它们生成正确代码的种子。每个文件末尾有"production springboard(生产化跳板)"页脚,指向加固该能力的 02/03/04 案例。
- 02 进阶工程:把 SDK 包进真实生产关心的模式里(省钱、抗压、离线调试)。
- 03 Agent 配方:多步骤、可组合的端到端 agent 流程。
- 04 真实场景:不是"怎么调某个能力",而是把一个完整业务端到端建成生产级 harness(护栏、上下文预算、容错、容灾、状态机等生产权衡);每个案例配有自己的
README.md,讲清"为什么这样写"。 - legacy_1x:旧的 1.x 模块级风格,子目录布局原样保留,仅供参考;新项目请优先使用上面四层。
-
安装 SDK:
pip install -U dashscope
-
配置百炼 API key(获取方式):
export DASHSCOPE_API_KEY="sk-xxx"
-
直接运行任意示例文件(从仓库根目录):
python3 examples/01_atomic_capabilities/text_generation/chat.py
离线运行(无需 API key):
02_advanced_engineering/local_mock_debugging.py、02_advanced_engineering/circuit_breaker_retry.py、03_agent_recipes/mcp_server_demo/client_demo.py、04_real_world_scenarios/production_ready_rag_harness.py、04_real_world_scenarios/realtime_audio_meeting_harness.py和04_real_world_scenarios/ticket_triage_harness.py使用 mock transport / 脚本化接缝 / 子进程——完全离线且输出确定,适合先动手感受调用形态。
| 变量 | 用途 | 默认值 |
|---|---|---|
DASHSCOPE_API_KEY |
百炼 API key(联网示例必需) | 无 |
DASHSCOPE_MODEL |
覆盖聊天/生成模型(chat、缓存、RAG、工具循环、决策等) | 各文件默认值(多为 qwen-plus) |
DASHSCOPE_EMBED_MODEL |
覆盖向量模型(client_side_cache.py、rag_expert_system.py) |
text-embedding-v4 |
DASHSCOPE_RERANK_MODEL |
覆盖重排模型(rag_expert_system.py) |
gte-rerank-v2 |
DASHSCOPE_WORKSPACE |
AgentStudio 工作空间 | trial |
DASHSCOPE_APP_ID |
百炼应用 ID(application.py) | 无 |
DASHSCOPE_FILE_ID |
文件 ID(assistant_api_file.py) | 无 |
DASHSCOPE_DEMO_AUDIO |
本地音频路径(tingwu_realtime.py、tingwu.py) | tests/data/asr_example.wav |
DASHSCOPE_TINGWU_APP_ID |
听悟应用 ID(tingwu_realtime.py、tingwu.py) | 无 |
DASHSCOPE_TTS_VOICE |
TTS 音色(audio_tts.py) | zhichu |
DASHSCOPE_TRAINING_FILE_ID |
微调训练文件 ID(fine_tunes.py) | 无 |
DASHSCOPE_DEMO_IMAGE |
本地图片路径(cv_models.py) | ~/Downloads/cat.png |
DASHSCOPE_DEMO_VIDEO_URL |
视频 URL(multimodal_conversation/video.py) | 示例视频 |
RAG_HARNESS_LIVE |
置 1 时 production_ready_rag_harness.py 打真实网关(否则离线 mock) |
未设置(离线) |
MEETING_HARNESS_LIVE |
置 1 时 realtime_audio_meeting_harness.py 打真实网关(否则离线 mock) |
未设置(离线) |
TRIAGE_HARNESS_LIVE |
置 1 时 ticket_triage_harness.py 打真实网关(否则脚本化决策后端) |
未设置(离线) |
DASHSCOPE_TINGWU_MODEL |
听悟 realtime 模型(realtime_audio_meeting_harness.py) |
tingwu-turbo |
MEETING_MAX_CONCURRENT |
实时会议并发上限(即活跃 socket 上限) | 4 |
统一风格:client = dashscope.Client()(默认从 DASHSCOPE_API_KEY 环境变量读取密钥)。
| 路径 | 内容 |
|---|---|
text_generation/chat.py |
文本生成:一行 dashscope.chat()、非流式、流式(text_stream) |
text_generation/tokenization.py |
token 计数 |
multimodal_vision/multimodal_chat.py |
多模态对话(qwen-vl 图像理解) |
audio/ |
语音示例:ASR/TTS/realtime/音色 CLI(见 audio/README.md;direct_call/ 为不使用 with 的副本);2.0 audio API 为预览,后续可能变更 |
audio/tingwu.py |
听悟离线任务与实时会话 |
image_video_synthesis/images.py |
图像生成:一键生成并等待 + 手动 jobs 流程 |
image_video_synthesis/videos.py |
视频生成:一键生成并等待 + 手动 jobs 流程 |
embeddings/embeddings.py |
文本向量(含批量任务入口说明) |
rerank/rerank.py |
文档重排 |
decision/decision.py |
决策模型(System One):一次调用对业务状态回答类型化的 choice / noul / score 问题 |
files/files.py |
文件管理:上传 / 列表 / 查询 / 删除 |
applications/apps.py |
百炼应用调用(非流式 + 流式) |
fine_tuning/fine_tunes.py |
微调任务:list / get、create / wait / delete(取消注释即可运行) |
fine_tuning/reinforcement_learning.py |
智能体 RL:任务 list / get;注册函数 -> 上传数据 -> create / wait / delete(取消注释即可运行) |
models/models.py |
模型列表与详情 |
| 路径 | 内容 | 联网 |
|---|---|---|
local_mock_debugging.py |
注入 httpx.MockTransport,零成本离线跑通成功路径与错误路径(400 / 限流 / 内容安全);把 _mock_client() 换成 dashscope.Client() 即可打真实网关 |
否 |
client_side_cache.py |
客户端语义缓存:向量 + 余弦相似度捕获重复/近似问题,命中即直接返回不调模型,直接省 token | 是(仅缓存未命中时) |
circuit_breaker_retry.py |
熔断器 + 多地域容灾:在 SDK 内置的 Retry-After 退避之上,按地域 CLOSED/OPEN/HALF_OPEN 熔断并自动切换;演示用 mock transport(主地域 503、副地域 200),离线可运行 | 否 |
| 路径 | 内容 | 联网 |
|---|---|---|
tool_call_loop.py |
受管多轮工具调用状态机:声明 tools schema,模型请求调用时本地执行,把 role="tool" 结果喂回,循环直到最终答案(带 MAX_TURNS 兜底) |
是 |
rag_expert_system.py |
标准 RAG:语料向量 -> 余弦 top-k 召回 -> client.rerank 精排 -> "仅依据资料作答"的聊天 prompt -> 带引用的答案 |
是 |
mcp_server_demo/ |
零依赖 MCP(Model Context Protocol)stdio server + client 演示:server.py 讲 JSON-RPC 2.0;client_demo.py 拉起子进程并跑 initialize -> tools/list -> tools/call。见其 README.md |
否 |
agentstudio.py |
AgentStudio 端到端 quickstart(经 client.agentstudio):环境 -> 智能体 -> 会话 -> 流式回复(另附可选的 memory store 演示);AgentStudio 为 1.x/2.0 两代共用模块,挂载在 2.0 客户端上 |
是 |
agentstudio_deployments.py |
托管智能体部署:创建 cron 定时部署、触发运行、列出运行记录 | 是 |
把 01–03 组装成完整、可直接对标的业务案例,带护栏、上下文预算、容错等生产权衡;每个案例配有自己的 README.md,讲清设计权衡与改造方法。
| 路径 | 内容 | 联网 |
|---|---|---|
customer_service_assistant.py |
电商在线客服:护栏化人设 + 业务工具(订单 / 物流 / 退款 / 工单)+ 滑动窗口多轮记忆(含孤儿 tool 消息修剪)+ 受管工具循环;演示跑一段依赖上下文的三轮对话 | 是 |
production_ready_rag_harness.py |
工业级 RAG 引擎:流式语义检索 + 本地 token 水位(用 tokenization 逐段实测)+ 流式退避重试(SDK 不重试流式)+ 多地域熔断与故障切换 + 优雅降级;默认离线 mock 运行,演示场景 A/B/C/D | 否 |
realtime_audio_meeting_harness.py |
高并发实时会议转写底座:每场会议一条独立 websocket(realtime 无法复用)+ 会议状态机 + 重连退避 + 跨重连本地转写稿合并 + 按房间故障隔离与降级;默认离线 mock 运行,4 个房间并发演示重连与降级 | 否 |
ticket_triage_harness.py |
决策模型工单分诊:每张工单一次决策 round(单次前向推理回答 choice / noul / score)+ 本地阈值策略(置信度下限、升级阈值、严重度分档)+ 失败封闭降级到人工队列 + 单工单隔离与精确的 input-token 成本账本;默认用脚本化决策后端离线运行 | 否 |
详见 04_real_world_scenarios/README.md。
以下使用旧的 1.x 风格(dashscope.Generation、dashscope.MultiModalConversation 等)。内部子目录布局原样保留、内容不做改动。新项目请使用上面的 2.0 分层示例。
| 路径 | 内容 |
|---|---|
generation/ |
Generation 文本生成:基础、深度思考、工具调用、深度研究、自定义会话 |
aio_generation/ |
上述的异步版本 |
multimodal_conversation/ |
MultiModalConversation 多模态对话:图像、视频、工具调用、OCR、ASR、深度思考 |
aio_multimodal_conversation/ |
上述的异步版本 |
application.py |
百炼应用(Application)调用 |
assistant_api*.py |
Assistant 智能体:创建 / 更新、文件挂载、端到端对话 |
image_generation.py / image_synthesis.py / aio_image_synthesis.py |
图像生成(wanx / wan2.x) |
video_synthesis.py / aio_video_synthesis.py |
视频生成(wan 系列) |
multimodal_embedding.py |
多模态向量 |
text_rerank.py |
文档重排 |
qwen_tts.py / qwen_asr.py |
Qwen 语音合成与识别 |
tingwu_realtime.py / tingwu_usages.py |
听悟实时与离线任务 |
cv_models.py |
CV 模型(人像风格重绘,含本地上传) |
set_region_example.py |
多地域(region)配置 |