很久没去 HuggingFace,发现又多了一些第三方 LLM 接口,并且特地做了一个支持直接调用的 LLM 列表。可以看到,最全的依然是 novita,其他基本是凑数的。

不过,最大的发现是,图片生成增加了一家供应商:WaveSpeed。相比不能试用的 fal 和审核很严的 Replicate,WaveSpeed 可以说是可用性极高。

配合以前的一个小技巧——HuggingFace 实际支持第三方接口的所有模型(包括不在 HuggingFace 上的闭源模型),我们还可以 router 调用 Nano-Banana。

还不止于此,只要接口统一,其他任何模型,甚至是音乐生成模型,也能调用。

# pip install wavespeed
from wavespeed import Client

hf_key =  YOUR_HF_KEY
hf_base_url = "https://router.huggingface.co/wavespeed"

def text_to_music(prompt, lyrics, model):

    client = Client(api_key=hf_key, base_url=hf_base_url)
    output = client.run(
        model,
        {
            "bitrate": 256000,
            "lyrics": lyrics,
            "prompt": prompt,
            "sample_rate": 44100
        },
        timeout=36000.0,
        poll_interval=1.0,
        enable_sync_mode=False,
    )

    return output["outputs"][0]

model = "minimax/music-02"
prompt = "一首中式古典歌曲,由古筝弹奏,由轻柔的男声演唱"
lyrics = "窗前明月光,\n疑似地上霜。\n举头望明月,\n低头思故乡。"
print(text_to_music(prompt, lyrics, model))

可以说,HuggingFace 的 router 就是真是个 router。实践中,并不是所有的供应商都能随意跨模型,例如:不能用 replicate 的 LLM;调 novita 非 LLM 服务结果会截断。这不是因为 HuggingFace 做了限制,而是 router 这块代码够烂。可能这块是 vibe coding出来的?