SPB Git forge

spb/polyllm

Public
15commits 1branches 0releases
2.2 MBsize
maindefault branch
13 days agolast push
TypeScript 97.4% SQL 1% JavaScript 0.9% CSS 0.6%
1.5 KB · 22 lines typescript
Raw Blame History
1// (b) Streaming Responses request: exact event type names (ordered, with counts) + usage shape from response.completed.2import { client, attempt, save, PROBE_MODELS, REASONING_MODELS, summarizeResponse } from "./lib";3const out: any[] = [];4for (const model of PROBE_MODELS) {5  out.push(await attempt(`stream:${model}`, async () => {6    const params: any = { model, input: "Say hello in five words.", max_output_tokens: 200, stream: true };7    if (REASONING_MODELS.has(model)) params.reasoning = { summary: "auto" };8    const stream = await client.responses.create(params);9    const order: string[] = []; const counts: Record<string, number> = {}; const samples: Record<string, any> = {};10    let final: any = null; let text = ""; let seqs: number[] = [];11    for await (const ev of stream as any) {12      counts[ev.type] = (counts[ev.type] ?? 0) + 1;13      if (!samples[ev.type]) { order.push(ev.type); const { response, ...rest } = ev; samples[ev.type] = response ? { ...rest, response: "<omitted>" } : rest; }14      if (typeof ev.sequence_number === "number") seqs.push(ev.sequence_number);15      if (ev.type === "response.output_text.delta") text += ev.delta;16      if (ev.type === "response.completed" || ev.type === "response.incomplete" || ev.type === "response.failed") final = ev.response;17    }18    return { event_order: order, counts, samples, text, sequence_numbers_monotonic: seqs.every((s, i) => i === 0 || s === seqs[i - 1] + 1), final: final ? summarizeResponse(final) : null };19  }));20}21save("03-stream", out);22