作者: admin

  • 随性 API 快速开始:5 分钟接入 DeepSeek 大模型

    什么是随性 API

    随性 API 是一个兼容 OpenAI 协议的大模型接入网关,把 DeepSeek 等模型的调用统一成一个标准接口。你只需要一个 Key,把 base_url 换成我们的地址,现有代码几乎不用改。

    接口地址:https://api.ns666.cfd/v1

    第一步:注册并创建令牌

    1. 访问 https://api.ns666.cfd 注册账号
    2. 登录后进入「令牌」页面,点击「添加令牌」
    3. 设置额度上限,选择可用模型,保存
    4. 复制生成的 Key(形如 sk-xxxxxxxx),只显示一次,务必保存

    第二步:用 curl 测试

    curl https://api.ns666.cfd/v1/chat/completions 
      -H "Content-Type: application/json" 
      -H "Authorization: Bearer 你的KEY" 
      -d '{
        "model": "deepseek-v4-flash",
        "messages": [{"role": "user", "content": "你好"}]
      }'

    第三步:Python 接入

    from openai import OpenAI
    
    client = OpenAI(
        api_key="你的KEY",
        base_url="https://api.ns666.cfd/v1",
    )
    
    resp = client.chat.completions.create(
        model="deepseek-v4-flash",
        messages=[{"role": "user", "content": "你好"}],
    )
    print(resp.choices[0].message.content)

    可用模型

    模型 输入 / 1M 输出 / 1M
    deepseek-v4-flash $0.1430 $0.5720
    deepseek-v4.1-flash $0.1599 $0.3198
    deepseek-flash $0.4000 $1.1000

    常见问题

    Q:需要改现有代码吗?
    不用。任何支持自定义 base_url 的 SDK 都能直接接入。

    Q:支持流式输出吗?
    支持,参数加 "stream": true 即可。

    相关文档

  • Python 调用 deepseek-v4-flash 完整示例(含流式输出)

    环境准备

    pip install openai

    基础调用

    from openai import OpenAI
    
    client = OpenAI(
        api_key="你的KEY",
        base_url="https://api.ns666.cfd/v1",
    )
    
    resp = client.chat.completions.create(
        model="deepseek-v4-flash",
        messages=[
            {"role": "system", "content": "你是一个简洁的助手"},
            {"role": "user", "content": "用一句话解释什么是 API 网关"},
        ],
        temperature=0.7,
        max_tokens=500,
    )
    print(resp.choices[0].message.content)
    print("用量:", resp.usage)

    流式输出

    流式输出能让首字更快显示,适合对话类应用。

    stream = client.chat.completions.create(
        model="deepseek-v4-flash",
        messages=[{"role": "user", "content": "写一首关于秋天的短诗"}],
        stream=True,
    )
    
    for chunk in stream:
        if chunk.choices and chunk.choices[0].delta.content:
            print(chunk.choices[0].delta.content, end="", flush=True)

    带重试的健壮封装

    import time
    from openai import OpenAI, APIError, APIConnectionError
    
    client = OpenAI(api_key="你的KEY", base_url="https://api.ns666.cfd/v1")
    
    def chat(messages, model="deepseek-v4-flash", retries=3):
        for i in range(retries):
            try:
                resp = client.chat.completions.create(
                    model=model, messages=messages, timeout=60,
                )
                return resp.choices[0].message.content
            except (APIConnectionError, APIError) as e:
                if i == retries - 1:
                    raise
                time.sleep(2 ** i)
        return None
    
    print(chat([{"role": "user", "content": "你好"}]))

    注意事项

    • 接口地址必须是 https://api.ns666.cfd/v1,末尾不要加斜杠
    • Key 不要硬编码在代码里,用环境变量读取
    • 长文本建议开启流式,避免超时

    相关文档

  • Node.js 接入随性 API 完整教程

    方式一:使用 openai 官方 SDK

    npm install openai
    import OpenAI from "openai";
    
    const client = new OpenAI({
      apiKey: process.env.API_KEY,
      baseURL: "https://api.ns666.cfd/v1",
    });
    
    const resp = await client.chat.completions.create({
      model: "deepseek-v4-flash",
      messages: [{ role: "user", content: "你好" }],
    });
    
    console.log(resp.choices[0].message.content);

    方式二:原生 fetch(零依赖)

    const resp = await fetch("https://api.ns666.cfd/v1/chat/completions", {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        Authorization: `Bearer ${process.env.API_KEY}`,
      },
      body: JSON.stringify({
        model: "deepseek-v4-flash",
        messages: [{ role: "user", content: "你好" }],
      }),
    });
    
    const data = await resp.json();
    console.log(data.choices[0].message.content);

    流式输出(Node 原生)

    const resp = await fetch("https://api.ns666.cfd/v1/chat/completions", {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        Authorization: `Bearer ${process.env.API_KEY}`,
      },
      body: JSON.stringify({
        model: "deepseek-v4-flash",
        messages: [{ role: "user", content: "写一段介绍" }],
        stream: true,
      }),
    });
    
    const reader = resp.body.getReader();
    const decoder = new TextDecoder();
    
    while (true) {
      const { done, value } = await reader.read();
      if (done) break;
      for (const line of decoder.decode(value).split("n")) {
        if (!line.startsWith("data: ")) continue;
        const payload = line.slice(6);
        if (payload === "[DONE]") continue;
        try {
          const json = JSON.parse(payload);
          const delta = json.choices && json.choices[0] && json.choices[0].delta.content;
          if (delta) process.stdout.write(delta);
        } catch (e) {}
      }
    }

    TypeScript 类型提示

    interface ChatMessage {
      role: "system" | "user" | "assistant";
      content: string;
    }
    
    async function chat(messages: ChatMessage[]): Promise<string> {
      const resp = await fetch("https://api.ns666.cfd/v1/chat/completions", {
        method: "POST",
        headers: {
          "Content-Type": "application/json",
          Authorization: `Bearer ${process.env.API_KEY}`,
        },
        body: JSON.stringify({ model: "deepseek-v4-flash", messages }),
      });
      const data = await resp.json();
      return data.choices[0].message.content;
    }

    相关文档

  • curl 命令行调用随性 API:参数详解与实用技巧

    最简调用

    curl https://api.ns666.cfd/v1/chat/completions 
      -H "Content-Type: application/json" 
      -H "Authorization: Bearer $API_KEY" 
      -d '{"model":"deepseek-v4-flash","messages":[{"role":"user","content":"你好"}]}'

    常用参数

    参数 说明 示例
    model 模型名称 deepseek-v4-flash
    messages 对话历史 [{“role”:”user”,”content”:”hi”}]
    temperature 随机性 0-2 0.7
    max_tokens 最大输出长度 1000
    stream 是否流式 true
    top_p 核采样 0.9

    流式输出

    curl -N https://api.ns666.cfd/v1/chat/completions 
      -H "Content-Type: application/json" 
      -H "Authorization: Bearer $API_KEY" 
      -d '{"model":"deepseek-v4-flash","messages":[{"role":"user","content":"你好"}],"stream":true}'

    -N 关闭缓冲,否则看不到实时输出。

    查看响应头与耗时

    curl -i -w "n耗时: %{time_total}sn" 
      https://api.ns666.cfd/v1/chat/completions 
      -H "Content-Type: application/json" 
      -H "Authorization: Bearer $API_KEY" 
      -d '{"model":"deepseek-v4-flash","messages":[{"role":"user","content":"hi"}]}'

    列出可用模型

    curl https://api.ns666.cfd/v1/models 
      -H "Authorization: Bearer $API_KEY"

    常见错误

    • 401 Unauthorized — Key 错误或未带 Authorization 头
    • 403 Forbidden — 令牌被禁用或额度耗尽
    • 404 Not Found — 路径写错,应为 /v1/chat/completions
    • 429 Too Many Requests — 触发限流,降低频率

    相关文档

  • 流式输出(SSE)接入指南:原理与三种语言实现

    为什么用 SSE

    大模型生成一段话需要几秒到几十秒。如果等全部生成完再返回,用户会盯着空白屏幕。SSE(Server-Sent Events)让服务端边生成边推送,首字延迟能降到几百毫秒。

    相比 WebSocket,SSE 更简单:单向推送、纯 HTTP、自动重连。

    协议格式

    data: {"choices":[{"delta":{"content":"你"}}]}
    
    data: {"choices":[{"delta":{"content":"好"}}]}
    
    data: [DONE]

    每行以 data: 开头,两个换行表示一条消息结束,[DONE] 表示流结束。

    Python 实现

    from openai import OpenAI
    
    client = OpenAI(api_key="你的KEY", base_url="https://api.ns666.cfd/v1")
    
    stream = client.chat.completions.create(
        model="deepseek-v4-flash",
        messages=[{"role": "user", "content": "讲个故事"}],
        stream=True,
    )
    
    for chunk in stream:
        delta = chunk.choices[0].delta.content if chunk.choices else None
        if delta:
            print(delta, end="", flush=True)

    Node.js 实现

    const resp = await fetch("https://api.ns666.cfd/v1/chat/completions", {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        Authorization: `Bearer ${process.env.API_KEY}`,
      },
      body: JSON.stringify({
        model: "deepseek-v4-flash",
        messages: [{ role: "user", content: "讲个故事" }],
        stream: true,
      }),
    });
    
    const reader = resp.body.getReader();
    const decoder = new TextDecoder();
    
    while (true) {
      const { done, value } = await reader.read();
      if (done) break;
      for (const line of decoder.decode(value).split("n")) {
        if (!line.startsWith("data: ")) continue;
        const p = line.slice(6);
        if (p === "[DONE]") continue;
        try {
          const d = JSON.parse(p).choices[0].delta.content;
          if (d) process.stdout.write(d);
        } catch (e) {}
      }
    }

    浏览器端

    const resp = await fetch("https://api.ns666.cfd/v1/chat/completions", {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        Authorization: `Bearer ${API_KEY}`,
      },
      body: JSON.stringify({
        model: "deepseek-v4-flash",
        messages: [{ role: "user", content: "你好" }],
        stream: true,
      }),
    });
    
    const reader = resp.body.getReader();
    const decoder = new TextDecoder();
    
    while (true) {
      const { done, value } = await reader.read();
      if (done) break;
      for (const line of decoder.decode(value).split("n")) {
        if (!line.startsWith("data: ")) continue;
        const p = line.slice(6).trim();
        if (p === "[DONE]") continue;
        try {
          const delta = JSON.parse(p).choices[0].delta.content;
          if (delta) document.body.innerText += delta;
        } catch (e) {}
      }
    }

    注意:浏览器直连会暴露 Key

    前端代码里的 Key 任何人都能看到。生产环境必须经由你自己的后端中转,后端持 Key 调随性 API,前端只连你的后端。

    相关文档