聊天机器人
使用 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做指数退避重试。
最后更新于