@langchain/core
Version:
Core LangChain.js abstractions and schemas
1 lines • 5.89 kB
Source Map (JSON)
{"version":3,"file":"openai_stream_fixtures.cjs","names":[],"sources":["../../../src/utils/testing/openai_stream_fixtures.ts"],"sourcesContent":["import type { OpenAICompletionsStreamChunk } from \"../../language_models/openai_completions_stream.js\";\n\nexport function asAsyncIterable<T>(items: T[]): AsyncIterable<T> {\n return {\n async *[Symbol.asyncIterator]() {\n for (const item of items) {\n yield item;\n }\n },\n };\n}\n\nexport function openAITextOnlyChunksWithUsage(\n model = \"test-model\"\n): OpenAICompletionsStreamChunk[] {\n const chunks = openAITextOnlyChunks(model);\n const last = chunks[chunks.length - 1]!;\n chunks[chunks.length - 1] = {\n ...last,\n usage: {\n prompt_tokens: 10,\n completion_tokens: 2,\n total_tokens: 12,\n },\n };\n return chunks;\n}\n\nexport function openAITextOnlyChunks(\n model = \"test-model\"\n): OpenAICompletionsStreamChunk[] {\n return [\n {\n id: \"chatcmpl-text\",\n model,\n choices: [\n {\n index: 0,\n delta: { role: \"assistant\", content: \"Hello\" },\n finish_reason: null,\n },\n ],\n },\n {\n id: \"chatcmpl-text\",\n model,\n choices: [\n {\n index: 0,\n delta: { content: \" world\" },\n finish_reason: null,\n },\n ],\n },\n {\n id: \"chatcmpl-text\",\n model,\n choices: [{ index: 0, delta: {}, finish_reason: \"stop\" }],\n },\n ];\n}\n\nexport function openAIReasoningTextChunks(\n model = \"test-model\"\n): OpenAICompletionsStreamChunk[] {\n return [\n {\n id: \"chatcmpl-reason\",\n model,\n choices: [\n {\n index: 0,\n delta: { role: \"assistant\", reasoning_content: \"Let me reason...\" },\n finish_reason: null,\n },\n ],\n },\n {\n id: \"chatcmpl-reason\",\n model,\n choices: [\n {\n index: 0,\n delta: { content: \"Answer.\" },\n finish_reason: null,\n },\n ],\n },\n {\n id: \"chatcmpl-reason\",\n model,\n choices: [{ index: 0, delta: {}, finish_reason: \"stop\" }],\n },\n ];\n}\n\nexport function openAIToolCallChunks(\n model = \"test-model\"\n): OpenAICompletionsStreamChunk[] {\n return [\n {\n id: \"chatcmpl-tools\",\n model,\n choices: [\n {\n index: 0,\n delta: { role: \"assistant\", content: \"Let me search.\" },\n finish_reason: null,\n },\n ],\n },\n {\n id: \"chatcmpl-tools\",\n model,\n choices: [\n {\n index: 0,\n delta: {\n tool_calls: [\n {\n index: 0,\n id: \"call_abc\",\n type: \"function\",\n function: { name: \"web_search\", arguments: '{\"query\"' },\n },\n ],\n },\n finish_reason: null,\n },\n ],\n },\n {\n id: \"chatcmpl-tools\",\n model,\n choices: [\n {\n index: 0,\n delta: {\n tool_calls: [\n {\n index: 0,\n function: { arguments: ':\"weather\"}' },\n },\n ],\n },\n finish_reason: null,\n },\n ],\n },\n {\n id: \"chatcmpl-tools\",\n model,\n choices: [{ index: 0, delta: {}, finish_reason: \"tool_calls\" }],\n },\n ];\n}\n\nexport function sseResponseFromOpenAIChunks(\n chunks: OpenAICompletionsStreamChunk[]\n): Response {\n const encoder = new TextEncoder();\n return new Response(\n new ReadableStream({\n start(controller) {\n for (const chunk of chunks) {\n controller.enqueue(\n encoder.encode(`data: ${JSON.stringify(chunk)}\\n\\n`)\n );\n }\n controller.close();\n },\n }),\n { status: 200, headers: { \"Content-Type\": \"text/event-stream\" } }\n );\n}\n"],"mappings":";AAEA,SAAgB,gBAAmB,OAA8B;CAC/D,OAAO,EACL,QAAQ,OAAO,iBAAiB;EAC9B,KAAK,MAAM,QAAQ,OACjB,MAAM;CAEV,EACF;AACF;AAEA,SAAgB,8BACd,QAAQ,cACwB;CAChC,MAAM,SAAS,qBAAqB,KAAK;CACzC,MAAM,OAAO,OAAO,OAAO,SAAS;CACpC,OAAO,OAAO,SAAS,KAAK;EAC1B,GAAG;EACH,OAAO;GACL,eAAe;GACf,mBAAmB;GACnB,cAAc;EAChB;CACF;CACA,OAAO;AACT;AAEA,SAAgB,qBACd,QAAQ,cACwB;CAChC,OAAO;EACL;GACE,IAAI;GACJ;GACA,SAAS,CACP;IACE,OAAO;IACP,OAAO;KAAE,MAAM;KAAa,SAAS;IAAQ;IAC7C,eAAe;GACjB,CACF;EACF;EACA;GACE,IAAI;GACJ;GACA,SAAS,CACP;IACE,OAAO;IACP,OAAO,EAAE,SAAS,SAAS;IAC3B,eAAe;GACjB,CACF;EACF;EACA;GACE,IAAI;GACJ;GACA,SAAS,CAAC;IAAE,OAAO;IAAG,OAAO,CAAC;IAAG,eAAe;GAAO,CAAC;EAC1D;CACF;AACF;AAEA,SAAgB,0BACd,QAAQ,cACwB;CAChC,OAAO;EACL;GACE,IAAI;GACJ;GACA,SAAS,CACP;IACE,OAAO;IACP,OAAO;KAAE,MAAM;KAAa,mBAAmB;IAAmB;IAClE,eAAe;GACjB,CACF;EACF;EACA;GACE,IAAI;GACJ;GACA,SAAS,CACP;IACE,OAAO;IACP,OAAO,EAAE,SAAS,UAAU;IAC5B,eAAe;GACjB,CACF;EACF;EACA;GACE,IAAI;GACJ;GACA,SAAS,CAAC;IAAE,OAAO;IAAG,OAAO,CAAC;IAAG,eAAe;GAAO,CAAC;EAC1D;CACF;AACF;AAEA,SAAgB,qBACd,QAAQ,cACwB;CAChC,OAAO;EACL;GACE,IAAI;GACJ;GACA,SAAS,CACP;IACE,OAAO;IACP,OAAO;KAAE,MAAM;KAAa,SAAS;IAAiB;IACtD,eAAe;GACjB,CACF;EACF;EACA;GACE,IAAI;GACJ;GACA,SAAS,CACP;IACE,OAAO;IACP,OAAO,EACL,YAAY,CACV;KACE,OAAO;KACP,IAAI;KACJ,MAAM;KACN,UAAU;MAAE,MAAM;MAAc,WAAW;KAAW;IACxD,CACF,EACF;IACA,eAAe;GACjB,CACF;EACF;EACA;GACE,IAAI;GACJ;GACA,SAAS,CACP;IACE,OAAO;IACP,OAAO,EACL,YAAY,CACV;KACE,OAAO;KACP,UAAU,EAAE,WAAW,gBAAc;IACvC,CACF,EACF;IACA,eAAe;GACjB,CACF;EACF;EACA;GACE,IAAI;GACJ;GACA,SAAS,CAAC;IAAE,OAAO;IAAG,OAAO,CAAC;IAAG,eAAe;GAAa,CAAC;EAChE;CACF;AACF;AAEA,SAAgB,4BACd,QACU;CACV,MAAM,UAAU,IAAI,YAAY;CAChC,OAAO,IAAI,SACT,IAAI,eAAe,EACjB,MAAM,YAAY;EAChB,KAAK,MAAM,SAAS,QAClB,WAAW,QACT,QAAQ,OAAO,SAAS,KAAK,UAAU,KAAK,EAAE,KAAK,CACrD;EAEF,WAAW,MAAM;CACnB,EACF,CAAC,GACD;EAAE,QAAQ;EAAK,SAAS,EAAE,gBAAgB,oBAAoB;CAAE,CAClE;AACF"}