Node.js Client Example

import WebSocket from "ws";

const URL = "wss://chat-proxy.bitseek.ai/v2/chat?apikey=<API-KEY>";
let ws;
let reconnectTimeout = 1000;

function connect() {
    ws = new WebSocket(URL);

    ws.on("open", () => {
        console.log("✅ Connected");
        reconnectTimeout = 1000;

        ws.send(JSON.stringify({ event: "ping" }));
        // 主动发消息
        console.log("📤 Sending message...");
        ws.send(
            JSON.stringify({
                event: "gen",
                data: {
                    prompt: "Hello, please introduce quantum mechanics",
                    temperature: 0.2,
                    enableWebSearch: true,
                    webSearch: {
                        enabled: true,
                        mode: "force",
                        maxResults: 5,
                        freshness: "week",
                        lang: "auto",
                    },
                    tools: [
                        {
                            type: "function",
                            function: {
                                name: "get_weather",
                                description: "Get weather by city",
                                parameters: {
                                    type: "object",
                                    properties: {
                                        city: { type: "string" }
                                    },
                                    required: ["city"]
                                }
                            }
                        }
                    ]
                }
            })
        );
    });

    ws.on("message", (msg) => {
        const res = JSON.parse(msg);
        switch (res.event) {
            case "auth-connect-complete":
                console.log("Auth successful:", res.data);
                break;
            case "set-model-complete":
                console.log("Set model complete:", res.data);
                break;
            case "conv-message":
                console.log("Conversation message:", res.data);
                break;
            case "message":
                process.stdout.write(res.data.output);
                if (res.data.stop) console.log("\n--- Stream End ---");
                break;
            case "pong":
                console.log("📍 Pong received:", res.data);
                break;
            case "error":
                console.error("❌ Error:", res.data.error);
                break;
            default:
                console.log("📨 Unknown event:", res.event, res.data);
                break;
        }
    });

    ws.on("close", (code, reason) => {
        console.warn(`⚠️ Connection closed: ${code} - ${reason}`);
        attemptReconnect();
    });

    ws.on("error", (err) => {
        console.error("❌ WebSocket error:", err.message);
        ws.close();
    });
}

function attemptReconnect() {
    console.log(`🔄 Attempting reconnect in ${reconnectTimeout / 1000}s...`);
    setTimeout(() => {
        reconnectTimeout = Math.min(reconnectTimeout * 2, 30000);
        connect();
    }, reconnectTimeout);
}

connect();

Notes

  • Send chat requests with event: "gen" (not event: "message").
  • event: "gen" supports temperature, tools, enableWebSearch, and webSearch.
  • The server sends conv-message with conversationId and messageId before stream chunks.
  • Stream completion is event: "message" with data.stop === true.

results matching ""

    No results matching ""