Skip to content

Python / Node.js SDK

DuckMans 可通过 OpenAI SDK 的自定义 Base URL 接入。本页示例只从环境变量读取 API Key,不会把 Key 写进源代码。

模型占位符

把所有 YOUR_MODEL_ID 替换为 DuckMans 后台中当前 Key 和分组实际可用的模型 ID。建议先调用 GET /models 获取;示例值不是可直接调用的真实模型名。

SDK 环境变量、DuckMans Base URL 和模型占位符关系示意图

示意图:Key 只保存在服务端环境变量,SDK Base URL 固定到 /v1;可复制的地址、命令和代码仍以正文为准。

准备环境变量

bash
old_stty=$(stty -g)
trap 'stty "$old_stty"' EXIT INT TERM
printf "DuckMans API Key: "
stty -echo
IFS= read -r DUCKMANS_API_KEY
stty "$old_stty"
trap - EXIT INT TERM
printf '\n'
export DUCKMANS_API_KEY
powershell
$secureKey = Read-Host "DuckMans API Key" -AsSecureString
$env:DUCKMANS_API_KEY = [System.Net.NetworkCredential]::new("", $secureKey).Password
Remove-Variable secureKey
Python 和 Node SDK 从环境变量到协议方法再到结果的请求流示意图

示意图:SDK 根据所调用方法追加 Endpoint,不能手工把完整端点放进 Base URL;可复制的地址、命令和代码仍以正文为准。

Python

安装 SDK:

bash
python -m pip install --upgrade openai

Chat Completions

python
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["DUCKMANS_API_KEY"],
    base_url="https://duckmans.com/v1",
)

completion = client.chat.completions.create(
    model="YOUR_MODEL_ID",
    messages=[
        {"role": "user", "content": "只回复 ok"},
    ],
)

print(completion.choices[0].message.content)

Responses(按支持情况使用)

仅当当前客户端、Key 分组和渠道支持 Responses 时使用:

python
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["DUCKMANS_API_KEY"],
    base_url="https://duckmans.com/v1",
)

response = client.responses.create(
    model="YOUR_MODEL_ID",
    input="只回复 ok",
)

print(response.output_text)

Node.js

安装 SDK:

bash
npm install openai

以下示例使用 ESM;项目的 package.json 需要包含 "type": "module",或将文件保存为 .mjs

Chat Completions

js
import OpenAI from "openai";

const apiKey = process.env.DUCKMANS_API_KEY;
if (!apiKey) throw new Error("DUCKMANS_API_KEY is not set");

const client = new OpenAI({
  apiKey,
  baseURL: "https://duckmans.com/v1",
});

const completion = await client.chat.completions.create({
  model: "YOUR_MODEL_ID",
  messages: [
    { role: "user", content: "只回复 ok" },
  ],
});

console.log(completion.choices[0].message.content);

Responses(按支持情况使用)

仅当当前客户端、Key 分组和渠道支持 Responses 时使用:

js
import OpenAI from "openai";

const apiKey = process.env.DUCKMANS_API_KEY;
if (!apiKey) throw new Error("DUCKMANS_API_KEY is not set");

const client = new OpenAI({
  apiKey,
  baseURL: "https://duckmans.com/v1",
});

const response = await client.responses.create({
  model: "YOUR_MODEL_ID",
  input: "只回复 ok",
});

console.log(response.output_text);

Base URL 不要填成 Endpoint 路径或完整请求地址

SDK 配置项使用:

text
https://duckmans.com/v1

不要填写 https://duckmans.com/v1/chat/completionshttps://duckmans.com/v1/responses。SDK 会根据调用的方法追加 Endpoint 路径;手动追加会形成错误路径。

选择哪种 SDK 方法

  • 当前路线明确支持 Chat Completions:使用 client.chat.completions.create(...)
  • 当前路线明确支持 Responses:可以使用 client.responses.create(...)
  • 尚未确认:先用最小 curl 请求测试,或查看客户端和后台分组说明,不要把 Responses 当作默认能力。

遇到异常时,先记录 HTTP 状态码和响应中的错误类型,再查看 API 排错

DuckMans 用户指导手册