百度免费模型食用指南

开始之前

您需要先自行注册百度千帆大模型账号,注意任何免费服务都有局限

目前已免费的模型:

模型名 MODEL RPM TPM
ERNIE-Lite-8K ernie-lite-8k 300 300K
ERNIE-Lite-8K-0922 eb-instant 300 300K
ERNIE-Speed-8K ernie_speed 300 300K
ERNIE-Speed-128k ernie-speed-128k 60 300K

创建应用


  • 输入名称和描述,点击确定,然后复制你的 API Key 和 Secret Key备用

开通服务


  • 勾选模型

  • 点击提交订单

  • 开通成功

配置oneapi

  • 模型

    • eb-instant
    • ernie-lite-8k
    • ernie_speed
    • ernie-speed-128k
  • key

    填入 API KEY|API SECRECT,注意两个值需要用管道分隔

  • 代理

    可选,老版本oneapi必须填写,worker反代直接填worker地址即可,worker代码下方自取


注意:官方虽然宣布支持speed和lite的8k以及128k模型,但是作者在默认列表没找到lite的128k :rofl:

Worker反代(可选)

旧版oneapi并不支持百度的模型,可通过下面的代码用cloudflare的worker反代解决,另外通过反代可实现客户端可直接使用,渠道选择 OpenAI 自定义模型名即可

worker.js
addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request));
});

async function handleRequest(request) {
  const authHeader = request.headers.get('authorization');
  if (!authHeader || !authHeader.startsWith('Bearer ')) {
    return new Response('Missing or invalid authorization header', { status: 401 });
  }

  const token = authHeader.substring(7);
  const [client_id, client_secret] = token.split('|');
  if (!client_id || !client_secret) {
    return new Response('Invalid token format', { status: 400 });
  }

  const tokenResponse = await fetch(`https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=${client_id}&client_secret=${client_secret}`);
  const tokenData = await tokenResponse.json();
  if (!tokenResponse.ok || !tokenData.access_token) {
    return new Response('Failed to fetch access token', { status: 500 });
  }
  const access_token = tokenData.access_token;

  const requestBody = await request.json();
  const model = requestBody.model;
  if (!model) {
    return new Response('Missing model in request body', { status: 400 });
  }

  const newRequestInit = {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(requestBody)
  };

  const apiUrl = `https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/${model}?access_token=${access_token}`;
  const newRequest = new Request(apiUrl, newRequestInit);

  const response = await fetch(newRequest);

  const data = await response.text();
  const formattedResponse = streamResponse(data, model);

  return new Response(formattedResponse, {
    status: response.status,
    headers: {
      ...response.headers,
      'Content-Type': 'text/event-stream'
    }
  });
}

function streamResponse(data, model) {
  const encoder = new TextEncoder();
  const currentTimestamp = Math.floor(Date.now() / 1000);
  const lines = data.split('\n').filter(line => line.trim());

  return new ReadableStream({
    async start(controller) {
      for (const line of lines) {
        const json = JSON.parse(line.substring(6)); // Remove 'data: ' prefix
        const result = {
          id: `chatcmpl-${currentTimestamp}`,
          object: "chat.completion.chunk",
          created: currentTimestamp,
          model: model,
          choices: [
            {
              index: 0,
              delta: { content: json.result },
              finish_reason: null
            }
          ]
        };
        controller.enqueue(encoder.encode(`data: ${JSON.stringify(result)}\n\n`));

        // Check if this is the last chunk
        if (json.is_end) {
          const endResult = {
            id: `chatcmpl-${currentTimestamp}`,
            object: "chat.completion.chunk",
            created: currentTimestamp,
            model: model,
            choices: [
              {
                index: 0,
                delta: {},
                finish_reason: "stop"
              }
            ]
          };
          controller.enqueue(encoder.encode(`data: ${JSON.stringify(endResult)}\n\n`));
          break;
        }
      }
      controller.close();
    }
  });
}

测试接口

我用worker搭了个流式测试接口,可以直接用,但稳定性不保证

参数

base_url:https://ernie.660707.xyz/v1/chat/completions
model:eb-instant、ernie-lite-8k、ernie_speed、ernie-speed-128k
key:API KEY | API SECRECT

POST示例

curl https://ernie.660707.xyz/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer  <API KEY>|<API SECRECT> \
  -d '{
    "model": "ernie_speed",
    "messages": [
      {
        "role": "user",
        "content": "写一篇1k字的小说"
      }
    ],
    "stream":true
  }'

错误处理

如果api调用出错,可根据 错误码 快速进行判断处理

参考链接

46 个赞

赞了。
佬又快又好啊。

3 个赞

百度模型怎么样,好用吗

4 个赞

不知道,我用的oneapi比较旧,还在研究怎么反向代理呢 :rofl:

4 个赞

前排

4 个赞

感觉不如deepseek

3 个赞

mark

3 个赞

mark一下

3 个赞

已更新反代,支持旧版oneapi以及客户端直接使用 :rofl:

4 个赞

百度智能云好像崩了,好多页面都显示内部错误 :rofl:

4 个赞

这是被刷爆了? :rofl: 说实话百度文档写的不是很直观,俺研究了半天

4 个赞

抱歉,给您带来不便,目前初步核实到,千帆控制台报错服务器内部错误,是由于后端异常造成的,问题正在排查中,请稍等

他们反馈的哈哈哈,笑死我了

3 个赞

中文水平还行吧


4 个赞

恢复了,快来试试

4 个赞

恢复了,谢谢提醒哇

4 个赞

ERNIE-Lite-8K-0922 这玩意不让选了 :smiling_face_with_tear:

3 个赞

我用worker搭了个流式测试接口,可以直接用,但稳定性不保证

参数

base_url:https://ernie.660707.xyz/v1/chat/completions
model:eb-instant、ernie-lite-8k、ernie_speed、ernie-speed-128k
key:API KEY | API SECRECT

6 个赞

这个就是eb-instant 奇怪的是名字和model并不对应你就说任性不任性 :sweat_smile:

6 个赞

目前GPT还没有失联,感觉还是gpt更强,百度留个备用做测试也不错

4 个赞

哈哈哈 :rofl: :rofl:

4 个赞