edgedb-js icon indicating copy to clipboard operation
edgedb-js copied to clipboard

Add a streaming RAG method

Open scotttrinh opened this issue 2 months ago • 6 comments

Adds an SSE-style streaming response method along with a lower-level async generator.


Example output from httpie:

http http://localhost:3004 message=="Tell me something about pluto"
HTTP/1.1 200 OK
Connection: keep-alive
Content-Type: text/event-stream
Date: Wed, 17 Apr 2024 02:14:59 GMT
Keep-Alive: timeout=5
Transfer-Encoding: chunked

event: message_start
data: {
    "message": {
        "id": "chatcmpl-9Ep76xGnUpwaq8Xz8bSq8DAVRbFQ2",
        "model": "gpt-4-0125-preview",
        "role": "assistant"
    },
    "type": "message_start"
}

event: content_block_start
data: {
    "content_block": {
        "text": "",
        "type": "text"
    },
    "index": 0,
    "type": "content_block_start"
}

event: content_block_delta
data: {
    "delta": {
        "text": "Pl",
        "type": "text_delta"
    },
    "index": 0,
    "type": "content_block_delta"
}

event: content_block_delta
data: {
    "delta": {
        "text": "uto",
        "type": "text_delta"
    },
    "index": 0,
    "type": "content_block_delta"
}

event: content_block_delta
data: {
    "delta": {
        "text": "'s",
        "type": "text_delta"
    },
    "index": 0,
    "type": "content_block_delta"
}

event: content_block_delta
data: {
    "delta": {
        "text": " surface",
        "type": "text_delta"
    },
    "index": 0,
    "type": "content_block_delta"
}

event: content_block_delta
data: {
    "delta": {
        "text": " is",
        "type": "text_delta"
    },
    "index": 0,
    "type": "content_block_delta"
}

event: content_block_delta
data: {
    "delta": {
        "text": " primarily",
        "type": "text_delta"
    },
    "index": 0,
    "type": "content_block_delta"
}

event: content_block_delta
data: {
    "delta": {
        "text": " made",
        "type": "text_delta"
    },
    "index": 0,
    "type": "content_block_delta"
}

event: content_block_delta
data: {
    "delta": {
        "text": " up",
        "type": "text_delta"
    },
    "index": 0,
    "type": "content_block_delta"
}

event: content_block_delta
data: {
    "delta": {
        "text": " of",
        "type": "text_delta"
    },
    "index": 0,
    "type": "content_block_delta"
}

event: content_block_delta
data: {
    "delta": {
        "text": " nitrogen",
        "type": "text_delta"
    },
    "index": 0,
    "type": "content_block_delta"
}

event: content_block_delta
data: {
    "delta": {
        "text": " ice",
        "type": "text_delta"
    },
    "index": 0,
    "type": "content_block_delta"
}

event: content_block_delta
data: {
    "delta": {
        "text": ",",
        "type": "text_delta"
    },
    "index": 0,
    "type": "content_block_delta"
}

event: content_block_delta
data: {
    "delta": {
        "text": " methane",
        "type": "text_delta"
    },
    "index": 0,
    "type": "content_block_delta"
}

event: content_block_delta
data: {
    "delta": {
        "text": ",",
        "type": "text_delta"
    },
    "index": 0,
    "type": "content_block_delta"
}

event: content_block_delta
data: {
    "delta": {
        "text": " and",
        "type": "text_delta"
    },
    "index": 0,
    "type": "content_block_delta"
}

event: content_block_delta
data: {
    "delta": {
        "text": " carbon",
        "type": "text_delta"
    },
    "index": 0,
    "type": "content_block_delta"
}

event: content_block_delta
data: {
    "delta": {
        "text": " mon",
        "type": "text_delta"
    },
    "index": 0,
    "type": "content_block_delta"
}

event: content_block_delta
data: {
    "delta": {
        "text": "oxide",
        "type": "text_delta"
    },
    "index": 0,
    "type": "content_block_delta"
}

event: content_block_delta
data: {
    "delta": {
        "text": ".",
        "type": "text_delta"
    },
    "index": 0,
    "type": "content_block_delta"
}

event: content_block_stop
data: {
    "index": 0,
    "type": "content_block_stop"
}

event: message_delta
data: {
    "delta": {
        "stop_reason": "stop"
    },
    "type": "message_delta"
}

event: message_stop
data: {
    "type": "message_stop"
}


scotttrinh avatar Apr 17 '24 02:04 scotttrinh