新手学习大模型,顺手跑了四条命令
起因
周末整理硬盘,发现一个问题:学大模型这几个月,我跟着教程跑通过的东西不少,但硬盘里一个成品都没有。
教程的结尾基本都是"恭喜你成功调用了大模型",然后就没有然后了。命令行里那段回答,关掉窗口就没了。

(蓝黄手绘示意图,非实测截图)
所以我给自己定了个很笨的目标:不看概念,不背参数,就跑四条命令,跑完硬盘上必须多出四个文件。四个模态各来一个,文字、图片、音频、图片描述。
跑完了,四个都在。中间撞了个坑,白等了半小时,也一起记下来。
先记结果
| 第几步 | 命令 | 拿到什么 | 耗时 |
|---|---|---|---|
| 一 | bl text chat |
一段文字回答 | 4.6 秒 |
| 二 | bl image generate |
一张 1024×1024 的 PNG | 68.2 秒 |
| 三 | bl speech synthesize |
一个 MP3 | 1.8 秒 |
| 四 | bl vision describe |
一段对第二步那张图的描述 | 3.6 秒 |

(蓝黄手绘示意图,非实测截图;真实输出见下文)
第四步我是特意让它去读第二步生成的那张图。自己产的东西自己读,这样能看出来四条命令是接得起来的,不是四个各玩各的小玩具。

准备工作
装工具:
npm install -g bailian-cli
领密钥登录:
bl auth login --api-key sk-你的key
我用的是 bl 2.1.0、macOS。下面这些读数都是 10 月 20 号在我自己电脑上跑出来的,一轮下来发起了 8 次调用,6 次成功、2 次失败。
第一步:一段文字
bl text chat --message "用一句话解释什么是 API Key,说给完全没接触过编程的人听。"
4.6 秒回来:
API Key 就像一张"专属通行证",用来告诉某个服务:"我是谁,我有权限使用这个功能。"
我在提示里加了"说给完全没接触过编程的人听",它就真的一个术语都没用。这个口吻是我自己写进去要来的,不是命令的固定输出,想要什么腔调就在 --message 里说。
想让返回能被脚本接住,加 --output json,里面除答案还有一栏消耗读数,我这次是输入 77、输出 82。
第二步:一张图,以及我白等的半小时
bl image generate --prompt "一只戴眼镜的橘猫坐在蓝色热气球上,扁平插画风格" --size "1024*1024" --out-dir out --out-prefix balloon
我第一次跑这条,等了 2035.9 秒,三十四分钟,失败了:
Error: Request timed out.
Hint: Try increasing --timeout (e.g. --timeout 60).
Caused by: This operation was aborted
Exit code: 5

(蓝黄手绘示意图,非实测截图)
照着提示加了 --timeout 900 重试,同一条命令 68.2 秒出图。产物 out/balloon.png,1024×1024、RGB、745,737 字节。
得如实说一句:我重试的时候同时改了三处,加超时、给 --size 补引号、提示词也写短了。所以没法说是哪一处起的作用,只能确定加了超时之后这次成功了。
记下来两条:生图比生文字慢得多,几十秒是正常的,别以为卡死了就去按 Ctrl+C;撞上 Exit code: 5 加 Request timed out,先加 --timeout 900 重试。
还有个小错我自己犯过:--size "1024*1024" 的星号一定要加引号。终端里 * 是通配符,不加引号可能被 shell 当成"匹配文件名"处理掉,传进去的就不一定是你要的尺寸。嫌麻烦可以直接写比例,--size 1:1、--size 16:9,这种写法里没有星号。
第三步:一个能听的 MP3
bl speech synthesize --text "你好,这是我第一次用命令行让机器说话。" --voice longcheng_v3 --format mp3 --out out/hello.mp3
1.8 秒,out/hello.mp3,62,011 字节,时长 3.096 秒。双击就能听,是个男声,念得挺自然。
longcheng_v3 是音色 ID,这个音色叫"龙橙",人设描述写着"智慧青年男"。音色不用自己一个个瞎试:
bl speech synthesize --list-voices
我数了一下,默认那个模型有 64 个系统音色,每个都带中文人设描述和语言标注,比如"嗲甜台湾女""呆板大暖男""磁性理智男"。挑音色这件事比我想的有意思,我对着列表挑了半天。
存文件的参数是 --out,后面跟完整文件路径,不是 --out-dir。这点跟上一步生图不一样,生图用的是 --out-dir 加 --out-prefix。我第一次就写混了。
第四步:让它读我那张图
bl vision describe --image out/balloon.png --prompt "这张图里有什么?用两句话描述。"
3.6 秒回来:
一只戴着眼镜、围着黄色围巾的橘猫正惬意地坐在热气球的篮子里,热气球的蓝色球体上印有白云与星星图案。背景是晴朗的蓝天,点缀着太阳、朵朵白云、飞鸟和远处的青山绿水,整体画面温馨可爱。
这一步让我愣了一下。它读出了我没写进提示词的东西。
我的提示词只有一句"一只戴眼镜的橘猫坐在蓝色热气球上,扁平插画风格"。眼镜、橘猫、蓝色热气球是我写的,黄色围巾、球体上的星星图案、太阳、飞鸟、远处的青山绿水,全是它自己加的。
生图和写代码最大的区别就在这儿:它不是精确执行指令,是在你的描述基础上再创作。你要"必须严格按我说的画",这条路会让你反复失望;你要"给我一个大致方向的成品",它很够用。
顺手记下的三件小事
生成的图默认带"AI 生成"角标,我这张右下角就有。确认的办法挺巧,拿第四步那条命令去问它:
bl vision describe --image out/balloon.png --prompt "图片右下角有没有文字或水印角标?有的话逐字念出来。"
它答"有,AI 生成"。不用把图放大到眼睛里找。不想要角标的话,生图时加 --watermark false。
四条命令用的模型都能换,我这次全用默认(文字 qwen3.8-max,生图 qwen-image-3.0,看图 qwen3-vl-plus,配音 cosyvoice-v3-flash),加 --model 就行。新手阶段我建议先用默认的,一上来就纠结选哪个模型,是很容易卡住的地方。
第二轮跑的时候,因为第一次没出图,--image 传了空,直接退出码 2,返回 {"error":{"code":2,"message":"Provide --image or --video."}}。报错本身写得挺清楚,但这几步是有先后的,上一步不出产物下一步就跑不了。
收尾
四条命令速查,留着以后自己翻:
bl text chat --message "你要问的话"
bl image generate --prompt "画面描述" --size "1024*1024" --timeout 900 --out-dir out --out-prefix 名字
bl speech synthesize --text "要念的话" --voice longcheng_v3 --format mp3 --out out/名字.mp3
bl vision describe --image out/名字.png --prompt "你想问这张图什么"
四条命令的共同点是:输入是你的一句话或一个文件,输出是一个能拿走的东西。这就是我一开始想要的"跑完之后桌上有东西"。
这一轮云资源一个都没创建,四个产物全在本地 out/ 目录里。如果你也觉得教程跑通了却没拿到什么,可以按这四条走一遍,别一上来就想做完整项目,先拿到四个文件再说。
最后交代一句:四条命令的读数都是我自己跑出来的真实结果,但提示词里那只橘猫和热气球是我随口编的画面,你照着跑会拿到一张不一样的图(生图每次结果都不同)。
想先在网页上感受一下的话,阿里云百炼控制台可以直接试。

浙公网安备 33010602011771号