切换语言

聊天机器人

使用 Bitdeer AI 对话补全 API 搭建流式聊天机器人。

一个最小的流式聊天示例,涵盖鉴权、流式输出与错误处理思路。

Python 实现

from openai import OpenAI

client = OpenAI(
    base_url="https://api-inference.bitdeer.ai/v1",
    api_key="YOUR_API_KEY",
)

conversation = []

def chat(user_message: str):
    conversation.append({"role": "user", "content": user_message})

    stream = client.chat.completions.create(
        model="deepseek-ai/DeepSeek-V4-Pro",
        messages=conversation,
        max_tokens=1024,
        stream=True,
    )

    assistant_message = ""
    for chunk in stream:
        content = chunk.choices[0].delta.content
        if content:
            print(content, end="", flush=True)
            assistant_message += content

    print()
    conversation.append({"role": "assistant", "content": assistant_message})

# 交互循环
while True:
    user_input = input("\nYou: ")
    if user_input.lower() in ("quit", "exit"):
        break
    print("Assistant: ", end="")
    chat(user_input)

JavaScript 实现

import OpenAI from 'openai';
import * as readline from 'readline';

const client = new OpenAI({
  apiKey: process.env.BITDEER_API_KEY,
  baseURL: 'https://api-inference.bitdeer.ai/v1',
});

const conversation: OpenAI.ChatCompletionMessageParam[] = [];

async function chat(userMessage: string) {
  conversation.push({ role: 'user', content: userMessage });

  const stream = await client.chat.completions.create({
    model: 'deepseek-ai/DeepSeek-V4-Pro',
    messages: conversation,
    max_tokens: 1024,
    stream: true,
  });

  let assistantMessage = '';
  for await (const chunk of stream) {
    const content = chunk.choices[0]?.delta?.content;
    if (content) {
      process.stdout.write(content);
      assistantMessage += content;
    }
  }
  console.log();
  conversation.push({ role: 'assistant', content: assistantMessage });
}

要点

  • 流式stream: true,通过 SSE 逐 token 到达。
  • 对话历史:在消息数组中追加 user/assistant。
  • 错误处理:用 try/catch 包裹,对 RateLimitError 做指数退避重试。

最后更新于

本页目录

聊天机器人 · Bitdeer AI