@langchain/core 1.2.0-dev-1775763803878 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +120 -0
- package/README.md +1 -1
- package/agents.cjs +1 -0
- package/agents.d.cts +1 -0
- package/agents.d.ts +1 -0
- package/agents.js +1 -0
- package/caches.cjs +1 -0
- package/caches.d.cts +1 -0
- package/caches.d.ts +1 -0
- package/caches.js +1 -0
- package/callbacks/base.cjs +1 -0
- package/callbacks/base.d.cts +1 -0
- package/callbacks/base.d.ts +1 -0
- package/callbacks/base.js +1 -0
- package/callbacks/dispatch/web.cjs +1 -0
- package/callbacks/dispatch/web.d.cts +1 -0
- package/callbacks/dispatch/web.d.ts +1 -0
- package/callbacks/dispatch/web.js +1 -0
- package/callbacks/dispatch.cjs +1 -0
- package/callbacks/dispatch.d.cts +1 -0
- package/callbacks/dispatch.d.ts +1 -0
- package/callbacks/dispatch.js +1 -0
- package/callbacks/manager.cjs +1 -0
- package/callbacks/manager.d.cts +1 -0
- package/callbacks/manager.d.ts +1 -0
- package/callbacks/manager.js +1 -0
- package/callbacks/promises.cjs +1 -0
- package/callbacks/promises.d.cts +1 -0
- package/callbacks/promises.d.ts +1 -0
- package/callbacks/promises.js +1 -0
- package/chat_history.cjs +1 -0
- package/chat_history.d.cts +1 -0
- package/chat_history.d.ts +1 -0
- package/chat_history.js +1 -0
- package/context.cjs +1 -0
- package/context.d.cts +1 -0
- package/context.d.ts +1 -0
- package/context.js +1 -0
- package/dist/callbacks/base.cjs +7 -3
- package/dist/callbacks/base.cjs.map +1 -1
- package/dist/callbacks/base.d.cts +20 -1
- package/dist/callbacks/base.d.cts.map +1 -1
- package/dist/callbacks/base.d.ts +20 -1
- package/dist/callbacks/base.d.ts.map +1 -1
- package/dist/callbacks/base.js +7 -3
- package/dist/callbacks/base.js.map +1 -1
- package/dist/callbacks/dispatch/index.cjs.map +1 -1
- package/dist/callbacks/dispatch/index.js.map +1 -1
- package/dist/callbacks/manager.cjs +29 -7
- package/dist/callbacks/manager.cjs.map +1 -1
- package/dist/callbacks/manager.d.cts +4 -0
- package/dist/callbacks/manager.d.cts.map +1 -1
- package/dist/callbacks/manager.d.ts +4 -0
- package/dist/callbacks/manager.d.ts.map +1 -1
- package/dist/callbacks/manager.js +23 -1
- package/dist/callbacks/manager.js.map +1 -1
- package/dist/example_selectors/conditional.cjs.map +1 -1
- package/dist/example_selectors/conditional.js.map +1 -1
- package/dist/example_selectors/length_based.cjs.map +1 -1
- package/dist/example_selectors/length_based.js.map +1 -1
- package/dist/example_selectors/semantic_similarity.cjs.map +1 -1
- package/dist/example_selectors/semantic_similarity.js.map +1 -1
- package/dist/indexing/base.cjs +3 -4
- package/dist/indexing/base.cjs.map +1 -1
- package/dist/indexing/base.js +1 -1
- package/dist/indexing/base.js.map +1 -1
- package/dist/language_models/base.cjs +9 -1
- package/dist/language_models/base.cjs.map +1 -1
- package/dist/language_models/base.d.cts +5 -0
- package/dist/language_models/base.d.cts.map +1 -1
- package/dist/language_models/base.d.ts +5 -0
- package/dist/language_models/base.d.ts.map +1 -1
- package/dist/language_models/base.js +9 -1
- package/dist/language_models/base.js.map +1 -1
- package/dist/language_models/chat_models.cjs +71 -33
- package/dist/language_models/chat_models.cjs.map +1 -1
- package/dist/language_models/chat_models.d.cts +74 -3
- package/dist/language_models/chat_models.d.cts.map +1 -1
- package/dist/language_models/chat_models.d.ts +74 -3
- package/dist/language_models/chat_models.d.ts.map +1 -1
- package/dist/language_models/chat_models.js +72 -34
- package/dist/language_models/chat_models.js.map +1 -1
- package/dist/language_models/compat.cjs +255 -78
- package/dist/language_models/compat.cjs.map +1 -1
- package/dist/language_models/compat.d.cts +3 -17
- package/dist/language_models/compat.d.cts.map +1 -1
- package/dist/language_models/compat.d.ts +3 -17
- package/dist/language_models/compat.d.ts.map +1 -1
- package/dist/language_models/compat.js +256 -78
- package/dist/language_models/compat.js.map +1 -1
- package/dist/language_models/event.cjs.map +1 -1
- package/dist/language_models/event.d.cts +82 -90
- package/dist/language_models/event.d.cts.map +1 -1
- package/dist/language_models/event.d.ts +82 -90
- package/dist/language_models/event.d.ts.map +1 -1
- package/dist/language_models/event.js.map +1 -1
- package/dist/language_models/llms.cjs +18 -6
- package/dist/language_models/llms.cjs.map +1 -1
- package/dist/language_models/llms.d.cts.map +1 -1
- package/dist/language_models/llms.d.ts.map +1 -1
- package/dist/language_models/llms.js +18 -6
- package/dist/language_models/llms.js.map +1 -1
- package/dist/language_models/openai_completions_stream.cjs +308 -0
- package/dist/language_models/openai_completions_stream.cjs.map +1 -0
- package/dist/language_models/openai_completions_stream.d.cts +75 -0
- package/dist/language_models/openai_completions_stream.d.cts.map +1 -0
- package/dist/language_models/openai_completions_stream.d.ts +75 -0
- package/dist/language_models/openai_completions_stream.d.ts.map +1 -0
- package/dist/language_models/openai_completions_stream.js +301 -0
- package/dist/language_models/openai_completions_stream.js.map +1 -0
- package/dist/language_models/stream.cjs +216 -86
- package/dist/language_models/stream.cjs.map +1 -1
- package/dist/language_models/stream.d.cts +5 -28
- package/dist/language_models/stream.d.cts.map +1 -1
- package/dist/language_models/stream.d.ts +5 -28
- package/dist/language_models/stream.d.ts.map +1 -1
- package/dist/language_models/stream.js +216 -86
- package/dist/language_models/stream.js.map +1 -1
- package/dist/load/import_map.cjs +4 -0
- package/dist/load/import_map.cjs.map +1 -1
- package/dist/load/import_map.js +4 -0
- package/dist/load/import_map.js.map +1 -1
- package/dist/load/index.cjs +19 -0
- package/dist/load/index.cjs.map +1 -1
- package/dist/load/index.d.cts +4 -0
- package/dist/load/index.d.cts.map +1 -1
- package/dist/load/index.d.ts +4 -0
- package/dist/load/index.d.ts.map +1 -1
- package/dist/load/index.js +19 -0
- package/dist/load/index.js.map +1 -1
- package/dist/load/map_keys.cjs +13 -7
- package/dist/load/map_keys.cjs.map +1 -1
- package/dist/load/map_keys.d.cts.map +1 -1
- package/dist/load/map_keys.d.ts.map +1 -1
- package/dist/load/map_keys.js +11 -2
- package/dist/load/map_keys.js.map +1 -1
- package/dist/memory.cjs.map +1 -1
- package/dist/memory.js.map +1 -1
- package/dist/messages/ai.cjs +12 -9
- package/dist/messages/ai.cjs.map +1 -1
- package/dist/messages/ai.d.cts.map +1 -1
- package/dist/messages/ai.d.ts.map +1 -1
- package/dist/messages/ai.js +12 -9
- package/dist/messages/ai.js.map +1 -1
- package/dist/messages/base.cjs +10 -0
- package/dist/messages/base.cjs.map +1 -1
- package/dist/messages/base.d.cts +9 -0
- package/dist/messages/base.d.cts.map +1 -1
- package/dist/messages/base.d.ts +9 -0
- package/dist/messages/base.d.ts.map +1 -1
- package/dist/messages/base.js +10 -0
- package/dist/messages/base.js.map +1 -1
- package/dist/messages/block_translators/anthropic.cjs.map +1 -1
- package/dist/messages/block_translators/anthropic.js.map +1 -1
- package/dist/messages/block_translators/bedrock_converse.cjs.map +1 -1
- package/dist/messages/block_translators/bedrock_converse.js.map +1 -1
- package/dist/messages/block_translators/google.cjs.map +1 -1
- package/dist/messages/block_translators/google.js.map +1 -1
- package/dist/messages/block_translators/google_vertexai.cjs.map +1 -1
- package/dist/messages/block_translators/google_vertexai.js.map +1 -1
- package/dist/messages/block_translators/index.cjs +2 -0
- package/dist/messages/block_translators/index.cjs.map +1 -1
- package/dist/messages/block_translators/index.js +2 -0
- package/dist/messages/block_translators/index.js.map +1 -1
- package/dist/messages/block_translators/openai.cjs.map +1 -1
- package/dist/messages/block_translators/openai.js.map +1 -1
- package/dist/messages/block_translators/openrouter.cjs +101 -0
- package/dist/messages/block_translators/openrouter.cjs.map +1 -0
- package/dist/messages/block_translators/openrouter.js +101 -0
- package/dist/messages/block_translators/openrouter.js.map +1 -0
- package/dist/messages/index.d.cts +2 -2
- package/dist/messages/index.d.ts +2 -2
- package/dist/messages/modifier.cjs +6 -0
- package/dist/messages/modifier.cjs.map +1 -1
- package/dist/messages/modifier.d.cts +9 -4
- package/dist/messages/modifier.d.cts.map +1 -1
- package/dist/messages/modifier.d.ts +9 -4
- package/dist/messages/modifier.d.ts.map +1 -1
- package/dist/messages/modifier.js +6 -0
- package/dist/messages/modifier.js.map +1 -1
- package/dist/messages/transformers.cjs.map +1 -1
- package/dist/messages/transformers.js.map +1 -1
- package/dist/messages/utils.cjs +16 -2
- package/dist/messages/utils.cjs.map +1 -1
- package/dist/messages/utils.d.cts +9 -1
- package/dist/messages/utils.d.cts.map +1 -1
- package/dist/messages/utils.d.ts +9 -1
- package/dist/messages/utils.d.ts.map +1 -1
- package/dist/messages/utils.js +16 -2
- package/dist/messages/utils.js.map +1 -1
- package/dist/output_parsers/openai_functions/json_output_functions_parsers.cjs.map +1 -1
- package/dist/output_parsers/openai_functions/json_output_functions_parsers.js.map +1 -1
- package/dist/output_parsers/openai_tools/json_output_tools_parsers.cjs.map +1 -1
- package/dist/output_parsers/openai_tools/json_output_tools_parsers.js.map +1 -1
- package/dist/output_parsers/standard_schema.cjs +3 -0
- package/dist/output_parsers/standard_schema.cjs.map +1 -1
- package/dist/output_parsers/standard_schema.d.cts +2 -0
- package/dist/output_parsers/standard_schema.d.cts.map +1 -1
- package/dist/output_parsers/standard_schema.d.ts +2 -0
- package/dist/output_parsers/standard_schema.d.ts.map +1 -1
- package/dist/output_parsers/standard_schema.js +3 -0
- package/dist/output_parsers/standard_schema.js.map +1 -1
- package/dist/output_parsers/structured.cjs +3 -0
- package/dist/output_parsers/structured.cjs.map +1 -1
- package/dist/output_parsers/structured.d.cts +2 -0
- package/dist/output_parsers/structured.d.cts.map +1 -1
- package/dist/output_parsers/structured.d.ts +2 -0
- package/dist/output_parsers/structured.d.ts.map +1 -1
- package/dist/output_parsers/structured.js +3 -0
- package/dist/output_parsers/structured.js.map +1 -1
- package/dist/output_parsers/xml.cjs.map +1 -1
- package/dist/output_parsers/xml.js.map +1 -1
- package/dist/prompts/base.cjs.map +1 -1
- package/dist/prompts/base.js.map +1 -1
- package/dist/prompts/chat.cjs.map +1 -1
- package/dist/prompts/chat.js.map +1 -1
- package/dist/prompts/few_shot.cjs.map +1 -1
- package/dist/prompts/few_shot.js.map +1 -1
- package/dist/prompts/image.cjs.map +1 -1
- package/dist/prompts/image.js.map +1 -1
- package/dist/prompts/prompt.cjs +1 -1
- package/dist/prompts/prompt.cjs.map +1 -1
- package/dist/prompts/prompt.d.cts +1 -1
- package/dist/prompts/prompt.d.ts +1 -1
- package/dist/prompts/prompt.js +1 -1
- package/dist/prompts/prompt.js.map +1 -1
- package/dist/prompts/string.cjs.map +1 -1
- package/dist/prompts/string.js.map +1 -1
- package/dist/prompts/template.cjs +1 -1
- package/dist/prompts/template.cjs.map +1 -1
- package/dist/prompts/template.js.map +1 -1
- package/dist/retrievers/index.cjs.map +1 -1
- package/dist/retrievers/index.js.map +1 -1
- package/dist/runnables/base.cjs +5 -2
- package/dist/runnables/base.cjs.map +1 -1
- package/dist/runnables/base.d.cts +43 -0
- package/dist/runnables/base.d.cts.map +1 -1
- package/dist/runnables/base.d.ts +43 -0
- package/dist/runnables/base.d.ts.map +1 -1
- package/dist/runnables/base.js +4 -1
- package/dist/runnables/base.js.map +1 -1
- package/dist/runnables/branch.cjs.map +1 -1
- package/dist/runnables/branch.js.map +1 -1
- package/dist/runnables/config.cjs +16 -8
- package/dist/runnables/config.cjs.map +1 -1
- package/dist/runnables/config.d.cts.map +1 -1
- package/dist/runnables/config.d.ts.map +1 -1
- package/dist/runnables/config.js +16 -8
- package/dist/runnables/config.js.map +1 -1
- package/dist/runnables/graph.cjs +6 -6
- package/dist/runnables/graph.cjs.map +1 -1
- package/dist/runnables/graph.js +1 -1
- package/dist/runnables/graph.js.map +1 -1
- package/dist/runnables/graph_mermaid.cjs.map +1 -1
- package/dist/runnables/graph_mermaid.js.map +1 -1
- package/dist/runnables/history.cjs +3 -0
- package/dist/runnables/history.cjs.map +1 -1
- package/dist/runnables/history.d.cts +3 -0
- package/dist/runnables/history.d.cts.map +1 -1
- package/dist/runnables/history.d.ts +3 -0
- package/dist/runnables/history.d.ts.map +1 -1
- package/dist/runnables/history.js +3 -0
- package/dist/runnables/history.js.map +1 -1
- package/dist/runnables/router.cjs.map +1 -1
- package/dist/runnables/router.js.map +1 -1
- package/dist/runnables/utils.cjs.map +1 -1
- package/dist/runnables/utils.js.map +1 -1
- package/dist/singletons/async_local_storage/context.cjs.map +1 -1
- package/dist/singletons/async_local_storage/context.js.map +1 -1
- package/dist/singletons/async_local_storage/index.cjs.map +1 -1
- package/dist/singletons/async_local_storage/index.js.map +1 -1
- package/dist/singletons/callbacks.cjs +1 -1
- package/dist/testing/fake_model_builder.cjs +10 -9
- package/dist/testing/fake_model_builder.cjs.map +1 -1
- package/dist/testing/fake_model_builder.d.cts +1 -2
- package/dist/testing/fake_model_builder.d.cts.map +1 -1
- package/dist/testing/fake_model_builder.d.ts +1 -2
- package/dist/testing/fake_model_builder.d.ts.map +1 -1
- package/dist/testing/fake_model_builder.js +10 -9
- package/dist/testing/fake_model_builder.js.map +1 -1
- package/dist/testing/index.cjs +16 -0
- package/dist/testing/index.cjs.map +1 -1
- package/dist/testing/index.d.cts +3 -1
- package/dist/testing/index.d.ts +3 -1
- package/dist/testing/index.js +10 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/matchers.cjs +3 -1
- package/dist/testing/matchers.cjs.map +1 -1
- package/dist/testing/matchers.d.cts +8 -4
- package/dist/testing/matchers.d.cts.map +1 -1
- package/dist/testing/matchers.d.ts +8 -4
- package/dist/testing/matchers.d.ts.map +1 -1
- package/dist/testing/matchers.js +3 -1
- package/dist/testing/matchers.js.map +1 -1
- package/dist/tracers/console.cjs +30 -4
- package/dist/tracers/console.cjs.map +1 -1
- package/dist/tracers/console.d.cts.map +1 -1
- package/dist/tracers/console.d.ts.map +1 -1
- package/dist/tracers/console.js +28 -1
- package/dist/tracers/console.js.map +1 -1
- package/dist/tracers/event_stream.cjs.map +1 -1
- package/dist/tracers/event_stream.js.map +1 -1
- package/dist/tracers/tracer_langchain.cjs +70 -2
- package/dist/tracers/tracer_langchain.cjs.map +1 -1
- package/dist/tracers/tracer_langchain.d.cts +26 -1
- package/dist/tracers/tracer_langchain.d.cts.map +1 -1
- package/dist/tracers/tracer_langchain.d.ts +26 -1
- package/dist/tracers/tracer_langchain.d.ts.map +1 -1
- package/dist/tracers/tracer_langchain.js +70 -3
- package/dist/tracers/tracer_langchain.js.map +1 -1
- package/dist/utils/async_caller.cjs +3 -2
- package/dist/utils/async_caller.cjs.map +1 -1
- package/dist/utils/async_caller.js +2 -1
- package/dist/utils/async_caller.js.map +1 -1
- package/dist/utils/callbacks.cjs.map +1 -1
- package/dist/utils/callbacks.js.map +1 -1
- package/dist/utils/context.cjs.map +1 -1
- package/dist/utils/context.js.map +1 -1
- package/dist/utils/env.cjs.map +1 -1
- package/dist/utils/env.d.cts.map +1 -1
- package/dist/utils/env.d.ts.map +1 -1
- package/dist/utils/env.js.map +1 -1
- package/dist/utils/event_source_parse.cjs +5 -12
- package/dist/utils/event_source_parse.cjs.map +1 -1
- package/dist/utils/event_source_parse.js +5 -12
- package/dist/utils/event_source_parse.js.map +1 -1
- package/dist/utils/fast-json-patch/src/core.cjs.map +1 -1
- package/dist/utils/fast-json-patch/src/core.js.map +1 -1
- package/dist/utils/json_schema.cjs.map +1 -1
- package/dist/utils/json_schema.js.map +1 -1
- package/dist/utils/sax-js/sax.cjs.map +1 -1
- package/dist/utils/sax-js/sax.js.map +1 -1
- package/dist/utils/ssrf.cjs.map +1 -1
- package/dist/utils/ssrf.js.map +1 -1
- package/dist/utils/stream.d.cts +2 -2
- package/dist/utils/stream.d.cts.map +1 -1
- package/dist/utils/stream.d.ts +2 -2
- package/dist/utils/stream.d.ts.map +1 -1
- package/dist/utils/testing/chat_models.cjs.map +1 -1
- package/dist/utils/testing/chat_models.js.map +1 -1
- package/dist/utils/testing/embeddings.cjs.map +1 -1
- package/dist/utils/testing/embeddings.js.map +1 -1
- package/dist/utils/testing/index.cjs +17 -1
- package/dist/utils/testing/index.cjs.map +1 -1
- package/dist/utils/testing/index.d.cts +3 -1
- package/dist/utils/testing/index.d.ts +3 -1
- package/dist/utils/testing/index.js +11 -2
- package/dist/utils/testing/index.js.map +1 -1
- package/dist/utils/testing/openai_stream_fixtures.cjs +160 -0
- package/dist/utils/testing/openai_stream_fixtures.cjs.map +1 -0
- package/dist/utils/testing/openai_stream_fixtures.d.cts +12 -0
- package/dist/utils/testing/openai_stream_fixtures.d.cts.map +1 -0
- package/dist/utils/testing/openai_stream_fixtures.d.ts +12 -0
- package/dist/utils/testing/openai_stream_fixtures.d.ts.map +1 -0
- package/dist/utils/testing/openai_stream_fixtures.js +155 -0
- package/dist/utils/testing/openai_stream_fixtures.js.map +1 -0
- package/dist/utils/testing/stream.cjs +136 -0
- package/dist/utils/testing/stream.cjs.map +1 -0
- package/dist/utils/testing/stream.d.cts +96 -0
- package/dist/utils/testing/stream.d.cts.map +1 -0
- package/dist/utils/testing/stream.d.ts +96 -0
- package/dist/utils/testing/stream.d.ts.map +1 -0
- package/dist/utils/testing/stream.js +136 -0
- package/dist/utils/testing/stream.js.map +1 -0
- package/dist/utils/testing/vectorstores.cjs.map +1 -1
- package/dist/utils/testing/vectorstores.js.map +1 -1
- package/dist/utils/types/zod.cjs.map +1 -1
- package/dist/utils/types/zod.js.map +1 -1
- package/dist/utils/uuid/index.cjs +58 -0
- package/dist/utils/uuid/index.cjs.map +1 -0
- package/dist/utils/uuid/index.d.cts +26 -0
- package/dist/utils/uuid/index.d.cts.map +1 -0
- package/dist/utils/uuid/index.d.ts +26 -0
- package/dist/utils/uuid/index.d.ts.map +1 -0
- package/dist/utils/uuid/index.js +41 -0
- package/dist/utils/uuid/index.js.map +1 -0
- package/dist/utils/uuid/max.cjs +6 -0
- package/dist/utils/uuid/max.cjs.map +1 -0
- package/dist/utils/uuid/max.js +6 -0
- package/dist/utils/uuid/max.js.map +1 -0
- package/dist/utils/uuid/nil.cjs +6 -0
- package/dist/utils/uuid/nil.cjs.map +1 -0
- package/dist/utils/uuid/nil.js +6 -0
- package/dist/utils/uuid/nil.js.map +1 -0
- package/dist/utils/uuid/parse.cjs +11 -0
- package/dist/utils/uuid/parse.cjs.map +1 -0
- package/dist/utils/uuid/parse.d.cts +7 -0
- package/dist/utils/uuid/parse.d.cts.map +1 -0
- package/dist/utils/uuid/parse.d.ts +7 -0
- package/dist/utils/uuid/parse.d.ts.map +1 -0
- package/dist/utils/uuid/parse.js +11 -0
- package/dist/utils/uuid/parse.js.map +1 -0
- package/dist/utils/uuid/regex.cjs +6 -0
- package/dist/utils/uuid/regex.cjs.map +1 -0
- package/dist/utils/uuid/regex.js +6 -0
- package/dist/utils/uuid/regex.js.map +1 -0
- package/dist/utils/uuid/rng.cjs +9 -0
- package/dist/utils/uuid/rng.cjs.map +1 -0
- package/dist/utils/uuid/rng.js +9 -0
- package/dist/utils/uuid/rng.js.map +1 -0
- package/dist/utils/uuid/sha1.cjs +71 -0
- package/dist/utils/uuid/sha1.cjs.map +1 -0
- package/dist/utils/uuid/sha1.js +71 -0
- package/dist/utils/uuid/sha1.js.map +1 -0
- package/dist/utils/uuid/stringify.cjs +21 -0
- package/dist/utils/uuid/stringify.cjs.map +1 -0
- package/dist/utils/uuid/stringify.d.cts +5 -0
- package/dist/utils/uuid/stringify.d.cts.map +1 -0
- package/dist/utils/uuid/stringify.d.ts +5 -0
- package/dist/utils/uuid/stringify.d.ts.map +1 -0
- package/dist/utils/uuid/stringify.js +20 -0
- package/dist/utils/uuid/stringify.js.map +1 -0
- package/dist/utils/uuid/types.d.cts +26 -0
- package/dist/utils/uuid/types.d.cts.map +1 -0
- package/dist/utils/uuid/types.d.ts +26 -0
- package/dist/utils/uuid/types.d.ts.map +1 -0
- package/dist/utils/uuid/v1.cjs +69 -0
- package/dist/utils/uuid/v1.cjs.map +1 -0
- package/dist/utils/uuid/v1.d.cts +8 -0
- package/dist/utils/uuid/v1.d.cts.map +1 -0
- package/dist/utils/uuid/v1.d.ts +8 -0
- package/dist/utils/uuid/v1.d.ts.map +1 -0
- package/dist/utils/uuid/v1.js +69 -0
- package/dist/utils/uuid/v1.js.map +1 -0
- package/dist/utils/uuid/v1ToV6.cjs +14 -0
- package/dist/utils/uuid/v1ToV6.cjs.map +1 -0
- package/dist/utils/uuid/v1ToV6.js +14 -0
- package/dist/utils/uuid/v1ToV6.js.map +1 -0
- package/dist/utils/uuid/v35.cjs +36 -0
- package/dist/utils/uuid/v35.cjs.map +1 -0
- package/dist/utils/uuid/v35.js +34 -0
- package/dist/utils/uuid/v35.js.map +1 -0
- package/dist/utils/uuid/v4.cjs +25 -0
- package/dist/utils/uuid/v4.cjs.map +1 -0
- package/dist/utils/uuid/v4.d.cts +8 -0
- package/dist/utils/uuid/v4.d.cts.map +1 -0
- package/dist/utils/uuid/v4.d.ts +8 -0
- package/dist/utils/uuid/v4.d.ts.map +1 -0
- package/dist/utils/uuid/v4.js +25 -0
- package/dist/utils/uuid/v4.js.map +1 -0
- package/dist/utils/uuid/v5.cjs +12 -0
- package/dist/utils/uuid/v5.cjs.map +1 -0
- package/dist/utils/uuid/v5.d.cts +14 -0
- package/dist/utils/uuid/v5.d.cts.map +1 -0
- package/dist/utils/uuid/v5.d.ts +14 -0
- package/dist/utils/uuid/v5.d.ts.map +1 -0
- package/dist/utils/uuid/v5.js +12 -0
- package/dist/utils/uuid/v5.js.map +1 -0
- package/dist/utils/uuid/v6.cjs +23 -0
- package/dist/utils/uuid/v6.cjs.map +1 -0
- package/dist/utils/uuid/v6.d.cts +8 -0
- package/dist/utils/uuid/v6.d.cts.map +1 -0
- package/dist/utils/uuid/v6.d.ts +8 -0
- package/dist/utils/uuid/v6.d.ts.map +1 -0
- package/dist/utils/uuid/v6.js +23 -0
- package/dist/utils/uuid/v6.js.map +1 -0
- package/dist/utils/uuid/v7.cjs +57 -0
- package/dist/utils/uuid/v7.cjs.map +1 -0
- package/dist/utils/uuid/v7.d.cts +8 -0
- package/dist/utils/uuid/v7.d.cts.map +1 -0
- package/dist/utils/uuid/v7.d.ts +8 -0
- package/dist/utils/uuid/v7.d.ts.map +1 -0
- package/dist/utils/uuid/v7.js +57 -0
- package/dist/utils/uuid/v7.js.map +1 -0
- package/dist/utils/uuid/validate.cjs +9 -0
- package/dist/utils/uuid/validate.cjs.map +1 -0
- package/dist/utils/uuid/validate.d.cts +5 -0
- package/dist/utils/uuid/validate.d.cts.map +1 -0
- package/dist/utils/uuid/validate.d.ts +5 -0
- package/dist/utils/uuid/validate.d.ts.map +1 -0
- package/dist/utils/uuid/validate.js +9 -0
- package/dist/utils/uuid/validate.js.map +1 -0
- package/dist/utils/uuid/version.cjs +10 -0
- package/dist/utils/uuid/version.cjs.map +1 -0
- package/dist/utils/uuid/version.d.cts +5 -0
- package/dist/utils/uuid/version.d.cts.map +1 -0
- package/dist/utils/uuid/version.d.ts +5 -0
- package/dist/utils/uuid/version.d.ts.map +1 -0
- package/dist/utils/uuid/version.js +10 -0
- package/dist/utils/uuid/version.js.map +1 -0
- package/dist/utils/zod-to-json-schema/parsers/nativeEnum.cjs.map +1 -1
- package/dist/utils/zod-to-json-schema/parsers/nativeEnum.js.map +1 -1
- package/dist/utils/zod-to-json-schema/parsers/pipeline.cjs.map +1 -1
- package/dist/utils/zod-to-json-schema/parsers/pipeline.js.map +1 -1
- package/dist/utils/zod-to-json-schema/parsers/set.cjs.map +1 -1
- package/dist/utils/zod-to-json-schema/parsers/set.js.map +1 -1
- package/dist/utils/zod-to-json-schema/parsers/string.cjs +26 -0
- package/dist/utils/zod-to-json-schema/parsers/string.cjs.map +1 -1
- package/dist/utils/zod-to-json-schema/parsers/string.js +26 -0
- package/dist/utils/zod-to-json-schema/parsers/string.js.map +1 -1
- package/dist/vectorstores.cjs.map +1 -1
- package/dist/vectorstores.js.map +1 -1
- package/document_loaders/base.cjs +1 -0
- package/document_loaders/base.d.cts +1 -0
- package/document_loaders/base.d.ts +1 -0
- package/document_loaders/base.js +1 -0
- package/document_loaders/langsmith.cjs +1 -0
- package/document_loaders/langsmith.d.cts +1 -0
- package/document_loaders/langsmith.d.ts +1 -0
- package/document_loaders/langsmith.js +1 -0
- package/documents.cjs +1 -0
- package/documents.d.cts +1 -0
- package/documents.d.ts +1 -0
- package/documents.js +1 -0
- package/embeddings.cjs +1 -0
- package/embeddings.d.cts +1 -0
- package/embeddings.d.ts +1 -0
- package/embeddings.js +1 -0
- package/errors.cjs +1 -0
- package/errors.d.cts +1 -0
- package/errors.d.ts +1 -0
- package/errors.js +1 -0
- package/example_selectors.cjs +1 -0
- package/example_selectors.d.cts +1 -0
- package/example_selectors.d.ts +1 -0
- package/example_selectors.js +1 -0
- package/indexing.cjs +1 -0
- package/indexing.d.cts +1 -0
- package/indexing.d.ts +1 -0
- package/indexing.js +1 -0
- package/language_models/base.cjs +1 -0
- package/language_models/base.d.cts +1 -0
- package/language_models/base.d.ts +1 -0
- package/language_models/base.js +1 -0
- package/language_models/chat_models.cjs +1 -0
- package/language_models/chat_models.d.cts +1 -0
- package/language_models/chat_models.d.ts +1 -0
- package/language_models/chat_models.js +1 -0
- package/language_models/compat.cjs +1 -0
- package/language_models/compat.d.cts +1 -0
- package/language_models/compat.d.ts +1 -0
- package/language_models/compat.js +1 -0
- package/language_models/event.cjs +1 -0
- package/language_models/event.d.cts +1 -0
- package/language_models/event.d.ts +1 -0
- package/language_models/event.js +1 -0
- package/language_models/llms.cjs +1 -0
- package/language_models/llms.d.cts +1 -0
- package/language_models/llms.d.ts +1 -0
- package/language_models/llms.js +1 -0
- package/language_models/openai_completions_stream.cjs +1 -0
- package/language_models/openai_completions_stream.d.cts +1 -0
- package/language_models/openai_completions_stream.d.ts +1 -0
- package/language_models/openai_completions_stream.js +1 -0
- package/language_models/profile.cjs +1 -0
- package/language_models/profile.d.cts +1 -0
- package/language_models/profile.d.ts +1 -0
- package/language_models/profile.js +1 -0
- package/language_models/stream.cjs +1 -0
- package/language_models/stream.d.cts +1 -0
- package/language_models/stream.d.ts +1 -0
- package/language_models/stream.js +1 -0
- package/language_models/structured_output.cjs +1 -0
- package/language_models/structured_output.d.cts +1 -0
- package/language_models/structured_output.d.ts +1 -0
- package/language_models/structured_output.js +1 -0
- package/load/serializable.cjs +1 -0
- package/load/serializable.d.cts +1 -0
- package/load/serializable.d.ts +1 -0
- package/load/serializable.js +1 -0
- package/load.cjs +1 -0
- package/load.d.cts +1 -0
- package/load.d.ts +1 -0
- package/load.js +1 -0
- package/memory.cjs +1 -0
- package/memory.d.cts +1 -0
- package/memory.d.ts +1 -0
- package/memory.js +1 -0
- package/messages/tool.cjs +1 -0
- package/messages/tool.d.cts +1 -0
- package/messages/tool.d.ts +1 -0
- package/messages/tool.js +1 -0
- package/messages.cjs +1 -0
- package/messages.d.cts +1 -0
- package/messages.d.ts +1 -0
- package/messages.js +1 -0
- package/output_parsers/openai_functions.cjs +1 -0
- package/output_parsers/openai_functions.d.cts +1 -0
- package/output_parsers/openai_functions.d.ts +1 -0
- package/output_parsers/openai_functions.js +1 -0
- package/output_parsers/openai_tools.cjs +1 -0
- package/output_parsers/openai_tools.d.cts +1 -0
- package/output_parsers/openai_tools.d.ts +1 -0
- package/output_parsers/openai_tools.js +1 -0
- package/output_parsers.cjs +1 -0
- package/output_parsers.d.cts +1 -0
- package/output_parsers.d.ts +1 -0
- package/output_parsers.js +1 -0
- package/outputs.cjs +1 -0
- package/outputs.d.cts +1 -0
- package/outputs.d.ts +1 -0
- package/outputs.js +1 -0
- package/package.json +34 -14
- package/prompt_values.cjs +1 -0
- package/prompt_values.d.cts +1 -0
- package/prompt_values.d.ts +1 -0
- package/prompt_values.js +1 -0
- package/prompts.cjs +1 -0
- package/prompts.d.cts +1 -0
- package/prompts.d.ts +1 -0
- package/prompts.js +1 -0
- package/retrievers/document_compressors.cjs +1 -0
- package/retrievers/document_compressors.d.cts +1 -0
- package/retrievers/document_compressors.d.ts +1 -0
- package/retrievers/document_compressors.js +1 -0
- package/retrievers.cjs +1 -0
- package/retrievers.d.cts +1 -0
- package/retrievers.d.ts +1 -0
- package/retrievers.js +1 -0
- package/runnables/graph.cjs +1 -0
- package/runnables/graph.d.cts +1 -0
- package/runnables/graph.d.ts +1 -0
- package/runnables/graph.js +1 -0
- package/runnables.cjs +1 -0
- package/runnables.d.cts +1 -0
- package/runnables.d.ts +1 -0
- package/runnables.js +1 -0
- package/singletons.cjs +1 -0
- package/singletons.d.cts +1 -0
- package/singletons.d.ts +1 -0
- package/singletons.js +1 -0
- package/stores.cjs +1 -0
- package/stores.d.cts +1 -0
- package/stores.d.ts +1 -0
- package/stores.js +1 -0
- package/structured_query.cjs +1 -0
- package/structured_query.d.cts +1 -0
- package/structured_query.d.ts +1 -0
- package/structured_query.js +1 -0
- package/testing.cjs +1 -0
- package/testing.d.cts +1 -0
- package/testing.d.ts +1 -0
- package/testing.js +1 -0
- package/tools.cjs +1 -0
- package/tools.d.cts +1 -0
- package/tools.d.ts +1 -0
- package/tools.js +1 -0
- package/tracers/base.cjs +1 -0
- package/tracers/base.d.cts +1 -0
- package/tracers/base.d.ts +1 -0
- package/tracers/base.js +1 -0
- package/tracers/console.cjs +1 -0
- package/tracers/console.d.cts +1 -0
- package/tracers/console.d.ts +1 -0
- package/tracers/console.js +1 -0
- package/tracers/log_stream.cjs +1 -0
- package/tracers/log_stream.d.cts +1 -0
- package/tracers/log_stream.d.ts +1 -0
- package/tracers/log_stream.js +1 -0
- package/tracers/run_collector.cjs +1 -0
- package/tracers/run_collector.d.cts +1 -0
- package/tracers/run_collector.d.ts +1 -0
- package/tracers/run_collector.js +1 -0
- package/tracers/tracer_langchain.cjs +1 -0
- package/tracers/tracer_langchain.d.cts +1 -0
- package/tracers/tracer_langchain.d.ts +1 -0
- package/tracers/tracer_langchain.js +1 -0
- package/types/stream.cjs +1 -0
- package/types/stream.d.cts +1 -0
- package/types/stream.d.ts +1 -0
- package/types/stream.js +1 -0
- package/utils/async_caller.cjs +1 -0
- package/utils/async_caller.d.cts +1 -0
- package/utils/async_caller.d.ts +1 -0
- package/utils/async_caller.js +1 -0
- package/utils/chunk_array.cjs +1 -0
- package/utils/chunk_array.d.cts +1 -0
- package/utils/chunk_array.d.ts +1 -0
- package/utils/chunk_array.js +1 -0
- package/utils/context.cjs +1 -0
- package/utils/context.d.cts +1 -0
- package/utils/context.d.ts +1 -0
- package/utils/context.js +1 -0
- package/utils/env.cjs +1 -0
- package/utils/env.d.cts +1 -0
- package/utils/env.d.ts +1 -0
- package/utils/env.js +1 -0
- package/utils/event_source_parse.cjs +1 -0
- package/utils/event_source_parse.d.cts +1 -0
- package/utils/event_source_parse.d.ts +1 -0
- package/utils/event_source_parse.js +1 -0
- package/utils/format.cjs +1 -0
- package/utils/format.d.cts +1 -0
- package/utils/format.d.ts +1 -0
- package/utils/format.js +1 -0
- package/utils/function_calling.cjs +1 -0
- package/utils/function_calling.d.cts +1 -0
- package/utils/function_calling.d.ts +1 -0
- package/utils/function_calling.js +1 -0
- package/utils/hash.cjs +1 -0
- package/utils/hash.d.cts +1 -0
- package/utils/hash.d.ts +1 -0
- package/utils/hash.js +1 -0
- package/utils/json_patch.cjs +1 -0
- package/utils/json_patch.d.cts +1 -0
- package/utils/json_patch.d.ts +1 -0
- package/utils/json_patch.js +1 -0
- package/utils/json_schema.cjs +1 -0
- package/utils/json_schema.d.cts +1 -0
- package/utils/json_schema.d.ts +1 -0
- package/utils/json_schema.js +1 -0
- package/utils/math.cjs +1 -0
- package/utils/math.d.cts +1 -0
- package/utils/math.d.ts +1 -0
- package/utils/math.js +1 -0
- package/utils/ssrf.cjs +1 -0
- package/utils/ssrf.d.cts +1 -0
- package/utils/ssrf.d.ts +1 -0
- package/utils/ssrf.js +1 -0
- package/utils/standard_schema.cjs +1 -0
- package/utils/standard_schema.d.cts +1 -0
- package/utils/standard_schema.d.ts +1 -0
- package/utils/standard_schema.js +1 -0
- package/utils/stream.cjs +1 -0
- package/utils/stream.d.cts +1 -0
- package/utils/stream.d.ts +1 -0
- package/utils/stream.js +1 -0
- package/utils/testing.cjs +1 -0
- package/utils/testing.d.cts +1 -0
- package/utils/testing.d.ts +1 -0
- package/utils/testing.js +1 -0
- package/utils/tiktoken.cjs +1 -0
- package/utils/tiktoken.d.cts +1 -0
- package/utils/tiktoken.d.ts +1 -0
- package/utils/tiktoken.js +1 -0
- package/utils/types.cjs +1 -0
- package/utils/types.d.cts +1 -0
- package/utils/types.d.ts +1 -0
- package/utils/types.js +1 -0
- package/utils/uuid.cjs +1 -0
- package/utils/uuid.d.cts +1 -0
- package/utils/uuid.d.ts +1 -0
- package/utils/uuid.js +1 -0
- package/vectorstores.cjs +1 -0
- package/vectorstores.d.cts +1 -0
- package/vectorstores.d.ts +1 -0
- package/vectorstores.js +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai_completions_stream.cjs","names":["finalizeContentBlock"],"sources":["../../src/language_models/openai_completions_stream.ts"],"sourcesContent":["/**\n * Converts OpenAI Chat Completions-shaped stream chunks into\n * {@link ChatModelStreamEvent}s.\n *\n * Used by `@langchain/openai` and OpenAI-compatible providers (Groq, Mistral,\n * OpenRouter, IBM watsonx, etc.) without requiring a dependency on\n * `@langchain/openai`.\n *\n * @module\n */\n\nimport { finalizeContentBlock } from \"./compat.js\";\nimport type { ChatModelStreamEvent, FinishReason } from \"./event.js\";\nimport type { ContentBlock } from \"../messages/content/index.js\";\nimport type { UsageMetadata } from \"../messages/metadata.js\";\n\nexport type OpenAICompletionsFinishReason =\n | \"stop\"\n | \"length\"\n | \"max_tokens\"\n | \"tool_calls\"\n | \"function_call\"\n | \"content_filter\"\n | null;\n\nexport interface OpenAICompletionsUsage {\n prompt_tokens?: number;\n completion_tokens?: number;\n total_tokens?: number;\n prompt_tokens_details?: {\n audio_tokens?: number;\n cached_tokens?: number;\n };\n completion_tokens_details?: {\n audio_tokens?: number;\n reasoning_tokens?: number;\n };\n}\n\nexport interface OpenAICompletionsToolCallDelta {\n index?: number;\n id?: string;\n type?: \"function\";\n function?: {\n name?: string;\n arguments?: string;\n };\n}\n\nexport interface OpenAICompletionsDelta {\n role?: string;\n content?: string | null;\n reasoning_content?: string;\n reasoning?: string;\n tool_calls?: OpenAICompletionsToolCallDelta[];\n function_call?: unknown;\n audio?: {\n id?: string;\n data?: string;\n transcript?: string;\n };\n}\n\nexport interface OpenAICompletionsStreamChoice {\n index?: number;\n finish_reason?: OpenAICompletionsFinishReason;\n logprobs?: unknown;\n delta?: OpenAICompletionsDelta;\n}\n\nexport interface OpenAICompletionsStreamChunk {\n id?: string;\n model?: string;\n service_tier?: string | null;\n system_fingerprint?: string | null;\n usage?: OpenAICompletionsUsage | null;\n x_groq?: {\n usage?: {\n prompt_tokens?: number;\n completion_tokens?: number;\n total_tokens?: number;\n };\n };\n choices?: OpenAICompletionsStreamChoice[];\n}\n\nexport interface ConvertOpenAICompletionsStreamOptions {\n streamUsage?: boolean;\n /** Provider id for passthrough events (default `\"openai\"`). */\n provider?: string;\n /** Optional per-chunk transform before conversion. */\n mapChunk?: (\n chunk: OpenAICompletionsStreamChunk\n ) => OpenAICompletionsStreamChunk;\n}\n\ntype BlockKey = \"text\" | \"reasoning\" | \"audio\" | `tool:${number}`;\n\n/**\n * Convert an async iterable of OpenAI Chat Completions-shaped stream chunks into\n * LangChain `ChatModelStreamEvent`s with typed deltas.\n */\nexport async function* convertOpenAICompletionsStream(\n source: AsyncIterable<OpenAICompletionsStreamChunk>,\n options: ConvertOpenAICompletionsStreamOptions = {}\n): AsyncGenerator<ChatModelStreamEvent> {\n const shouldStreamUsage = options.streamUsage ?? true;\n const provider = options.provider ?? \"openai\";\n const mapChunk = options.mapChunk;\n\n const blockAccumulators = new Map<\n number,\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n Record<string, any>\n >();\n const blockKeyToIndex = new Map<BlockKey, number>();\n let nextBlockIndex = 0;\n let messageStarted = false;\n let usageSnapshot: UsageMetadata | undefined;\n let finishReason: FinishReason | undefined;\n let responseMetadata: Record<string, unknown> | undefined;\n let emittedProviderMetadata = false;\n\n const getOrCreateBlockIndex = (\n key: BlockKey,\n initial: Record<string, unknown>\n ): { index: number; isNew: boolean } => {\n const existing = blockKeyToIndex.get(key);\n if (existing !== undefined) {\n return { index: existing, isNew: false };\n }\n const index = nextBlockIndex++;\n blockKeyToIndex.set(key, index);\n blockAccumulators.set(index, { ...initial });\n return { index, isNew: true };\n };\n\n for await (let data of source) {\n if (mapChunk) {\n data = mapChunk(data);\n }\n if (!messageStarted) {\n messageStarted = true;\n yield {\n event: \"message-start\" as const,\n id: data.id,\n };\n }\n\n if (!emittedProviderMetadata && (data.model || data.service_tier)) {\n emittedProviderMetadata = true;\n yield {\n event: \"provider\" as const,\n provider,\n name: \"stream_metadata\",\n payload: {\n model: data.model,\n service_tier: data.service_tier,\n },\n };\n }\n\n if (data.usage && shouldStreamUsage) {\n usageSnapshot = buildUsageSnapshot(data.usage);\n yield { event: \"usage\" as const, usage: usageSnapshot };\n }\n\n const groqUsage = data.x_groq?.usage;\n if (groqUsage && shouldStreamUsage) {\n usageSnapshot = buildGroqUsageSnapshot(groqUsage);\n yield { event: \"usage\" as const, usage: usageSnapshot };\n }\n\n const choice = data.choices?.[0];\n if (!choice) {\n continue;\n }\n\n if (choice.finish_reason != null) {\n finishReason = mapFinishReason(choice.finish_reason);\n responseMetadata = buildResponseMetadata(data, choice);\n }\n\n const { delta } = choice;\n if (!delta) {\n continue;\n }\n\n const reasoningText = getReasoningDeltaText(delta);\n if (reasoningText) {\n const key: BlockKey = \"reasoning\";\n const { index, isNew } = getOrCreateBlockIndex(key, {\n type: \"reasoning\" as const,\n reasoning: \"\",\n });\n if (isNew) {\n yield {\n event: \"content-block-start\" as const,\n index,\n content: { type: \"reasoning\", reasoning: \"\" } as ContentBlock,\n };\n }\n const acc = blockAccumulators.get(index)!;\n acc.reasoning = (acc.reasoning ?? \"\") + reasoningText;\n yield {\n event: \"content-block-delta\" as const,\n index,\n delta: {\n type: \"reasoning-delta\" as const,\n reasoning: reasoningText,\n },\n };\n }\n\n if (delta.content) {\n const key: BlockKey = \"text\";\n const { index, isNew } = getOrCreateBlockIndex(key, {\n type: \"text\" as const,\n text: \"\",\n });\n if (isNew) {\n yield {\n event: \"content-block-start\" as const,\n index,\n content: { type: \"text\", text: \"\" } as ContentBlock,\n };\n }\n const acc = blockAccumulators.get(index)!;\n acc.text = (acc.text ?? \"\") + delta.content;\n yield {\n event: \"content-block-delta\" as const,\n index,\n delta: { type: \"text-delta\" as const, text: delta.content },\n };\n }\n\n if (Array.isArray(delta.tool_calls)) {\n for (const rawToolCall of delta.tool_calls) {\n const toolIndex = rawToolCall.index ?? 0;\n const key: BlockKey = `tool:${toolIndex}`;\n const { index, isNew } = getOrCreateBlockIndex(key, {\n type: \"tool_call_chunk\" as const,\n id: rawToolCall.id,\n name: rawToolCall.function?.name,\n args: \"\",\n index: toolIndex,\n });\n if (isNew) {\n yield {\n event: \"content-block-start\" as const,\n index,\n content: {\n type: \"tool_call_chunk\",\n id: rawToolCall.id,\n name: rawToolCall.function?.name,\n args: \"\",\n index: toolIndex,\n } as ContentBlock,\n };\n }\n\n const acc = blockAccumulators.get(index)!;\n if (rawToolCall.id != null) acc.id = rawToolCall.id;\n if (rawToolCall.function?.name != null) {\n acc.name = rawToolCall.function.name;\n }\n const argDelta = rawToolCall.function?.arguments ?? \"\";\n acc.args = (acc.args ?? \"\") + argDelta;\n yield {\n event: \"content-block-delta\" as const,\n index,\n delta: {\n type: \"block-delta\" as const,\n fields: {\n type: \"tool_call_chunk\",\n ...(acc.id != null ? { id: acc.id } : {}),\n ...(acc.name != null ? { name: acc.name } : {}),\n args: acc.args,\n },\n },\n };\n }\n }\n\n if (delta.audio) {\n const key: BlockKey = \"audio\";\n const { index, isNew } = getOrCreateBlockIndex(key, {\n type: \"audio\" as const,\n id: delta.audio.id,\n data: \"\",\n mimeType: \"audio/pcm\",\n transcript: delta.audio.transcript ?? \"\",\n });\n if (isNew) {\n yield {\n event: \"content-block-start\" as const,\n index,\n content: {\n type: \"audio\",\n id: delta.audio.id,\n data: \"\",\n mimeType: \"audio/pcm\",\n transcript: delta.audio.transcript ?? \"\",\n } as ContentBlock,\n };\n }\n const acc = blockAccumulators.get(index)!;\n if (delta.audio.transcript) {\n acc.transcript = (acc.transcript ?? \"\") + delta.audio.transcript;\n yield {\n event: \"content-block-delta\" as const,\n index,\n delta: {\n type: \"block-delta\" as const,\n fields: {\n type: \"audio\",\n transcript: acc.transcript,\n },\n },\n };\n }\n if (delta.audio.data) {\n acc.data = (acc.data ?? \"\") + delta.audio.data;\n yield {\n event: \"content-block-delta\" as const,\n index,\n delta: {\n type: \"data-delta\" as const,\n data: delta.audio.data,\n encoding: \"base64\" as const,\n },\n };\n }\n }\n\n if (delta.function_call) {\n yield {\n event: \"provider\" as const,\n provider,\n name: \"function_call\",\n payload: delta.function_call,\n };\n }\n\n if (choice.logprobs) {\n yield {\n event: \"provider\" as const,\n provider,\n name: \"logprobs\",\n payload: choice.logprobs,\n };\n }\n }\n\n for (const [index, acc] of blockAccumulators) {\n const finalized = finalizeContentBlock(acc as ContentBlock);\n yield {\n event: \"content-block-finish\" as const,\n index,\n content: finalized,\n };\n }\n\n yield {\n event: \"message-finish\" as const,\n reason: finishReason,\n ...(usageSnapshot ? { usage: usageSnapshot } : {}),\n ...(responseMetadata ? { responseMetadata } : {}),\n };\n}\n\nfunction getReasoningDeltaText(\n delta: OpenAICompletionsDelta\n): string | undefined {\n const reasoning = delta.reasoning_content ?? delta.reasoning;\n return typeof reasoning === \"string\" && reasoning.length > 0\n ? reasoning\n : undefined;\n}\n\nfunction buildGroqUsageSnapshot(usage: {\n prompt_tokens?: number;\n completion_tokens?: number;\n total_tokens?: number;\n}): UsageMetadata {\n return {\n input_tokens: usage.prompt_tokens ?? 0,\n output_tokens: usage.completion_tokens ?? 0,\n total_tokens: usage.total_tokens ?? 0,\n };\n}\n\nfunction mapFinishReason(reason: OpenAICompletionsFinishReason): FinishReason {\n switch (reason) {\n case \"stop\":\n return \"stop\";\n case \"length\":\n case \"max_tokens\":\n return \"length\";\n case \"tool_calls\":\n case \"function_call\":\n return \"tool_use\";\n case \"content_filter\":\n return \"content_filter\";\n default:\n return \"stop\";\n }\n}\n\nfunction buildUsageSnapshot(usage: OpenAICompletionsUsage): UsageMetadata {\n const inputTokenDetails = {\n ...(usage.prompt_tokens_details?.audio_tokens != null && {\n audio: usage.prompt_tokens_details.audio_tokens,\n }),\n ...(usage.prompt_tokens_details?.cached_tokens != null && {\n cache_read: usage.prompt_tokens_details.cached_tokens,\n }),\n };\n const outputTokenDetails = {\n ...(usage.completion_tokens_details?.audio_tokens != null && {\n audio: usage.completion_tokens_details.audio_tokens,\n }),\n ...(usage.completion_tokens_details?.reasoning_tokens != null && {\n reasoning: usage.completion_tokens_details.reasoning_tokens,\n }),\n };\n return {\n input_tokens: usage.prompt_tokens ?? 0,\n output_tokens: usage.completion_tokens ?? 0,\n total_tokens: usage.total_tokens ?? 0,\n ...(Object.keys(inputTokenDetails).length > 0 && {\n input_token_details: inputTokenDetails,\n }),\n ...(Object.keys(outputTokenDetails).length > 0 && {\n output_token_details: outputTokenDetails,\n }),\n };\n}\n\nfunction buildResponseMetadata(\n data: OpenAICompletionsStreamChunk,\n choice: OpenAICompletionsStreamChoice\n): Record<string, unknown> {\n return {\n model_provider: \"openai\",\n model_name: data.model,\n system_fingerprint: data.system_fingerprint,\n service_tier: data.service_tier,\n finish_reason: choice.finish_reason,\n ...(data.usage ? { usage: data.usage } : {}),\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { ChatModelStreamEvent } from "./event.cjs";
|
|
2
|
+
|
|
3
|
+
//#region src/language_models/openai_completions_stream.d.ts
|
|
4
|
+
type OpenAICompletionsFinishReason = "stop" | "length" | "max_tokens" | "tool_calls" | "function_call" | "content_filter" | null;
|
|
5
|
+
interface OpenAICompletionsUsage {
|
|
6
|
+
prompt_tokens?: number;
|
|
7
|
+
completion_tokens?: number;
|
|
8
|
+
total_tokens?: number;
|
|
9
|
+
prompt_tokens_details?: {
|
|
10
|
+
audio_tokens?: number;
|
|
11
|
+
cached_tokens?: number;
|
|
12
|
+
};
|
|
13
|
+
completion_tokens_details?: {
|
|
14
|
+
audio_tokens?: number;
|
|
15
|
+
reasoning_tokens?: number;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
interface OpenAICompletionsToolCallDelta {
|
|
19
|
+
index?: number;
|
|
20
|
+
id?: string;
|
|
21
|
+
type?: "function";
|
|
22
|
+
function?: {
|
|
23
|
+
name?: string;
|
|
24
|
+
arguments?: string;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
interface OpenAICompletionsDelta {
|
|
28
|
+
role?: string;
|
|
29
|
+
content?: string | null;
|
|
30
|
+
reasoning_content?: string;
|
|
31
|
+
reasoning?: string;
|
|
32
|
+
tool_calls?: OpenAICompletionsToolCallDelta[];
|
|
33
|
+
function_call?: unknown;
|
|
34
|
+
audio?: {
|
|
35
|
+
id?: string;
|
|
36
|
+
data?: string;
|
|
37
|
+
transcript?: string;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
interface OpenAICompletionsStreamChoice {
|
|
41
|
+
index?: number;
|
|
42
|
+
finish_reason?: OpenAICompletionsFinishReason;
|
|
43
|
+
logprobs?: unknown;
|
|
44
|
+
delta?: OpenAICompletionsDelta;
|
|
45
|
+
}
|
|
46
|
+
interface OpenAICompletionsStreamChunk {
|
|
47
|
+
id?: string;
|
|
48
|
+
model?: string;
|
|
49
|
+
service_tier?: string | null;
|
|
50
|
+
system_fingerprint?: string | null;
|
|
51
|
+
usage?: OpenAICompletionsUsage | null;
|
|
52
|
+
x_groq?: {
|
|
53
|
+
usage?: {
|
|
54
|
+
prompt_tokens?: number;
|
|
55
|
+
completion_tokens?: number;
|
|
56
|
+
total_tokens?: number;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
choices?: OpenAICompletionsStreamChoice[];
|
|
60
|
+
}
|
|
61
|
+
interface ConvertOpenAICompletionsStreamOptions {
|
|
62
|
+
streamUsage?: boolean;
|
|
63
|
+
/** Provider id for passthrough events (default `"openai"`). */
|
|
64
|
+
provider?: string;
|
|
65
|
+
/** Optional per-chunk transform before conversion. */
|
|
66
|
+
mapChunk?: (chunk: OpenAICompletionsStreamChunk) => OpenAICompletionsStreamChunk;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Convert an async iterable of OpenAI Chat Completions-shaped stream chunks into
|
|
70
|
+
* LangChain `ChatModelStreamEvent`s with typed deltas.
|
|
71
|
+
*/
|
|
72
|
+
declare function convertOpenAICompletionsStream(source: AsyncIterable<OpenAICompletionsStreamChunk>, options?: ConvertOpenAICompletionsStreamOptions): AsyncGenerator<ChatModelStreamEvent>;
|
|
73
|
+
//#endregion
|
|
74
|
+
export { ConvertOpenAICompletionsStreamOptions, OpenAICompletionsDelta, OpenAICompletionsFinishReason, OpenAICompletionsStreamChoice, OpenAICompletionsStreamChunk, OpenAICompletionsToolCallDelta, OpenAICompletionsUsage, convertOpenAICompletionsStream };
|
|
75
|
+
//# sourceMappingURL=openai_completions_stream.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai_completions_stream.d.cts","names":[],"sources":["../../src/language_models/openai_completions_stream.ts"],"mappings":";;;KAgBY,6BAAA;AAAA,UASK,sBAAA;EACf,aAAA;EACA,iBAAA;EACA,YAAA;EACA,qBAAA;IACE,YAAA;IACA,aAAA;EAAA;EAEF,yBAAA;IACE,YAAA;IACA,gBAAA;EAAA;AAAA;AAAA,UAIa,8BAAA;EACf,KAAA;EACA,EAAA;EACA,IAAA;EACA,QAAA;IACE,IAAA;IACA,SAAA;EAAA;AAAA;AAAA,UAIa,sBAAA;EACf,IAAA;EACA,OAAA;EACA,iBAAA;EACA,SAAA;EACA,UAAA,GAAa,8BAAA;EACb,aAAA;EACA,KAAA;IACE,EAAA;IACA,IAAA;IACA,UAAA;EAAA;AAAA;AAAA,UAIa,6BAAA;EACf,KAAA;EACA,aAAA,GAAgB,6BAAA;EAChB,QAAA;EACA,KAAA,GAAQ,sBAAA;AAAA;AAAA,UAGO,4BAAA;EACf,EAAA;EACA,KAAA;EACA,YAAA;EACA,kBAAA;EACA,KAAA,GAAQ,sBAAA;EACR,MAAA;IACE,KAAA;MACE,aAAA;MACA,iBAAA;MACA,YAAA;IAAA;EAAA;EAGJ,OAAA,GAAU,6BAAA;AAAA;AAAA,UAGK,qCAAA;EACf,WAAA;EAdA;EAgBA,QAAA;EAdA;EAgBA,QAAA,IACE,KAAA,EAAO,4BAAA,KACJ,4BAAA;AAAA;;;;;iBASgB,8BAAA,CACrB,MAAA,EAAQ,aAAA,CAAc,4BAAA,GACtB,OAAA,GAAS,qCAAA,GACR,cAAA,CAAe,oBAAA"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { ChatModelStreamEvent } from "./event.js";
|
|
2
|
+
|
|
3
|
+
//#region src/language_models/openai_completions_stream.d.ts
|
|
4
|
+
type OpenAICompletionsFinishReason = "stop" | "length" | "max_tokens" | "tool_calls" | "function_call" | "content_filter" | null;
|
|
5
|
+
interface OpenAICompletionsUsage {
|
|
6
|
+
prompt_tokens?: number;
|
|
7
|
+
completion_tokens?: number;
|
|
8
|
+
total_tokens?: number;
|
|
9
|
+
prompt_tokens_details?: {
|
|
10
|
+
audio_tokens?: number;
|
|
11
|
+
cached_tokens?: number;
|
|
12
|
+
};
|
|
13
|
+
completion_tokens_details?: {
|
|
14
|
+
audio_tokens?: number;
|
|
15
|
+
reasoning_tokens?: number;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
interface OpenAICompletionsToolCallDelta {
|
|
19
|
+
index?: number;
|
|
20
|
+
id?: string;
|
|
21
|
+
type?: "function";
|
|
22
|
+
function?: {
|
|
23
|
+
name?: string;
|
|
24
|
+
arguments?: string;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
interface OpenAICompletionsDelta {
|
|
28
|
+
role?: string;
|
|
29
|
+
content?: string | null;
|
|
30
|
+
reasoning_content?: string;
|
|
31
|
+
reasoning?: string;
|
|
32
|
+
tool_calls?: OpenAICompletionsToolCallDelta[];
|
|
33
|
+
function_call?: unknown;
|
|
34
|
+
audio?: {
|
|
35
|
+
id?: string;
|
|
36
|
+
data?: string;
|
|
37
|
+
transcript?: string;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
interface OpenAICompletionsStreamChoice {
|
|
41
|
+
index?: number;
|
|
42
|
+
finish_reason?: OpenAICompletionsFinishReason;
|
|
43
|
+
logprobs?: unknown;
|
|
44
|
+
delta?: OpenAICompletionsDelta;
|
|
45
|
+
}
|
|
46
|
+
interface OpenAICompletionsStreamChunk {
|
|
47
|
+
id?: string;
|
|
48
|
+
model?: string;
|
|
49
|
+
service_tier?: string | null;
|
|
50
|
+
system_fingerprint?: string | null;
|
|
51
|
+
usage?: OpenAICompletionsUsage | null;
|
|
52
|
+
x_groq?: {
|
|
53
|
+
usage?: {
|
|
54
|
+
prompt_tokens?: number;
|
|
55
|
+
completion_tokens?: number;
|
|
56
|
+
total_tokens?: number;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
choices?: OpenAICompletionsStreamChoice[];
|
|
60
|
+
}
|
|
61
|
+
interface ConvertOpenAICompletionsStreamOptions {
|
|
62
|
+
streamUsage?: boolean;
|
|
63
|
+
/** Provider id for passthrough events (default `"openai"`). */
|
|
64
|
+
provider?: string;
|
|
65
|
+
/** Optional per-chunk transform before conversion. */
|
|
66
|
+
mapChunk?: (chunk: OpenAICompletionsStreamChunk) => OpenAICompletionsStreamChunk;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Convert an async iterable of OpenAI Chat Completions-shaped stream chunks into
|
|
70
|
+
* LangChain `ChatModelStreamEvent`s with typed deltas.
|
|
71
|
+
*/
|
|
72
|
+
declare function convertOpenAICompletionsStream(source: AsyncIterable<OpenAICompletionsStreamChunk>, options?: ConvertOpenAICompletionsStreamOptions): AsyncGenerator<ChatModelStreamEvent>;
|
|
73
|
+
//#endregion
|
|
74
|
+
export { ConvertOpenAICompletionsStreamOptions, OpenAICompletionsDelta, OpenAICompletionsFinishReason, OpenAICompletionsStreamChoice, OpenAICompletionsStreamChunk, OpenAICompletionsToolCallDelta, OpenAICompletionsUsage, convertOpenAICompletionsStream };
|
|
75
|
+
//# sourceMappingURL=openai_completions_stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai_completions_stream.d.ts","names":[],"sources":["../../src/language_models/openai_completions_stream.ts"],"mappings":";;;KAgBY,6BAAA;AAAA,UASK,sBAAA;EACf,aAAA;EACA,iBAAA;EACA,YAAA;EACA,qBAAA;IACE,YAAA;IACA,aAAA;EAAA;EAEF,yBAAA;IACE,YAAA;IACA,gBAAA;EAAA;AAAA;AAAA,UAIa,8BAAA;EACf,KAAA;EACA,EAAA;EACA,IAAA;EACA,QAAA;IACE,IAAA;IACA,SAAA;EAAA;AAAA;AAAA,UAIa,sBAAA;EACf,IAAA;EACA,OAAA;EACA,iBAAA;EACA,SAAA;EACA,UAAA,GAAa,8BAAA;EACb,aAAA;EACA,KAAA;IACE,EAAA;IACA,IAAA;IACA,UAAA;EAAA;AAAA;AAAA,UAIa,6BAAA;EACf,KAAA;EACA,aAAA,GAAgB,6BAAA;EAChB,QAAA;EACA,KAAA,GAAQ,sBAAA;AAAA;AAAA,UAGO,4BAAA;EACf,EAAA;EACA,KAAA;EACA,YAAA;EACA,kBAAA;EACA,KAAA,GAAQ,sBAAA;EACR,MAAA;IACE,KAAA;MACE,aAAA;MACA,iBAAA;MACA,YAAA;IAAA;EAAA;EAGJ,OAAA,GAAU,6BAAA;AAAA;AAAA,UAGK,qCAAA;EACf,WAAA;EAdA;EAgBA,QAAA;EAdA;EAgBA,QAAA,IACE,KAAA,EAAO,4BAAA,KACJ,4BAAA;AAAA;;;;;iBASgB,8BAAA,CACrB,MAAA,EAAQ,aAAA,CAAc,4BAAA,GACtB,OAAA,GAAS,qCAAA,GACR,cAAA,CAAe,oBAAA"}
|
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
import { __exportAll } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import { finalizeContentBlock } from "./compat.js";
|
|
3
|
+
//#region src/language_models/openai_completions_stream.ts
|
|
4
|
+
/**
|
|
5
|
+
* Converts OpenAI Chat Completions-shaped stream chunks into
|
|
6
|
+
* {@link ChatModelStreamEvent}s.
|
|
7
|
+
*
|
|
8
|
+
* Used by `@langchain/openai` and OpenAI-compatible providers (Groq, Mistral,
|
|
9
|
+
* OpenRouter, IBM watsonx, etc.) without requiring a dependency on
|
|
10
|
+
* `@langchain/openai`.
|
|
11
|
+
*
|
|
12
|
+
* @module
|
|
13
|
+
*/
|
|
14
|
+
var openai_completions_stream_exports = /* @__PURE__ */ __exportAll({ convertOpenAICompletionsStream: () => convertOpenAICompletionsStream });
|
|
15
|
+
/**
|
|
16
|
+
* Convert an async iterable of OpenAI Chat Completions-shaped stream chunks into
|
|
17
|
+
* LangChain `ChatModelStreamEvent`s with typed deltas.
|
|
18
|
+
*/
|
|
19
|
+
async function* convertOpenAICompletionsStream(source, options = {}) {
|
|
20
|
+
const shouldStreamUsage = options.streamUsage ?? true;
|
|
21
|
+
const provider = options.provider ?? "openai";
|
|
22
|
+
const mapChunk = options.mapChunk;
|
|
23
|
+
const blockAccumulators = /* @__PURE__ */ new Map();
|
|
24
|
+
const blockKeyToIndex = /* @__PURE__ */ new Map();
|
|
25
|
+
let nextBlockIndex = 0;
|
|
26
|
+
let messageStarted = false;
|
|
27
|
+
let usageSnapshot;
|
|
28
|
+
let finishReason;
|
|
29
|
+
let responseMetadata;
|
|
30
|
+
let emittedProviderMetadata = false;
|
|
31
|
+
const getOrCreateBlockIndex = (key, initial) => {
|
|
32
|
+
const existing = blockKeyToIndex.get(key);
|
|
33
|
+
if (existing !== void 0) return {
|
|
34
|
+
index: existing,
|
|
35
|
+
isNew: false
|
|
36
|
+
};
|
|
37
|
+
const index = nextBlockIndex++;
|
|
38
|
+
blockKeyToIndex.set(key, index);
|
|
39
|
+
blockAccumulators.set(index, { ...initial });
|
|
40
|
+
return {
|
|
41
|
+
index,
|
|
42
|
+
isNew: true
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
for await (let data of source) {
|
|
46
|
+
if (mapChunk) data = mapChunk(data);
|
|
47
|
+
if (!messageStarted) {
|
|
48
|
+
messageStarted = true;
|
|
49
|
+
yield {
|
|
50
|
+
event: "message-start",
|
|
51
|
+
id: data.id
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
if (!emittedProviderMetadata && (data.model || data.service_tier)) {
|
|
55
|
+
emittedProviderMetadata = true;
|
|
56
|
+
yield {
|
|
57
|
+
event: "provider",
|
|
58
|
+
provider,
|
|
59
|
+
name: "stream_metadata",
|
|
60
|
+
payload: {
|
|
61
|
+
model: data.model,
|
|
62
|
+
service_tier: data.service_tier
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
if (data.usage && shouldStreamUsage) {
|
|
67
|
+
usageSnapshot = buildUsageSnapshot(data.usage);
|
|
68
|
+
yield {
|
|
69
|
+
event: "usage",
|
|
70
|
+
usage: usageSnapshot
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
const groqUsage = data.x_groq?.usage;
|
|
74
|
+
if (groqUsage && shouldStreamUsage) {
|
|
75
|
+
usageSnapshot = buildGroqUsageSnapshot(groqUsage);
|
|
76
|
+
yield {
|
|
77
|
+
event: "usage",
|
|
78
|
+
usage: usageSnapshot
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
const choice = data.choices?.[0];
|
|
82
|
+
if (!choice) continue;
|
|
83
|
+
if (choice.finish_reason != null) {
|
|
84
|
+
finishReason = mapFinishReason(choice.finish_reason);
|
|
85
|
+
responseMetadata = buildResponseMetadata(data, choice);
|
|
86
|
+
}
|
|
87
|
+
const { delta } = choice;
|
|
88
|
+
if (!delta) continue;
|
|
89
|
+
const reasoningText = getReasoningDeltaText(delta);
|
|
90
|
+
if (reasoningText) {
|
|
91
|
+
const { index, isNew } = getOrCreateBlockIndex("reasoning", {
|
|
92
|
+
type: "reasoning",
|
|
93
|
+
reasoning: ""
|
|
94
|
+
});
|
|
95
|
+
if (isNew) yield {
|
|
96
|
+
event: "content-block-start",
|
|
97
|
+
index,
|
|
98
|
+
content: {
|
|
99
|
+
type: "reasoning",
|
|
100
|
+
reasoning: ""
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
const acc = blockAccumulators.get(index);
|
|
104
|
+
acc.reasoning = (acc.reasoning ?? "") + reasoningText;
|
|
105
|
+
yield {
|
|
106
|
+
event: "content-block-delta",
|
|
107
|
+
index,
|
|
108
|
+
delta: {
|
|
109
|
+
type: "reasoning-delta",
|
|
110
|
+
reasoning: reasoningText
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
if (delta.content) {
|
|
115
|
+
const { index, isNew } = getOrCreateBlockIndex("text", {
|
|
116
|
+
type: "text",
|
|
117
|
+
text: ""
|
|
118
|
+
});
|
|
119
|
+
if (isNew) yield {
|
|
120
|
+
event: "content-block-start",
|
|
121
|
+
index,
|
|
122
|
+
content: {
|
|
123
|
+
type: "text",
|
|
124
|
+
text: ""
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
const acc = blockAccumulators.get(index);
|
|
128
|
+
acc.text = (acc.text ?? "") + delta.content;
|
|
129
|
+
yield {
|
|
130
|
+
event: "content-block-delta",
|
|
131
|
+
index,
|
|
132
|
+
delta: {
|
|
133
|
+
type: "text-delta",
|
|
134
|
+
text: delta.content
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
if (Array.isArray(delta.tool_calls)) for (const rawToolCall of delta.tool_calls) {
|
|
139
|
+
const toolIndex = rawToolCall.index ?? 0;
|
|
140
|
+
const { index, isNew } = getOrCreateBlockIndex(`tool:${toolIndex}`, {
|
|
141
|
+
type: "tool_call_chunk",
|
|
142
|
+
id: rawToolCall.id,
|
|
143
|
+
name: rawToolCall.function?.name,
|
|
144
|
+
args: "",
|
|
145
|
+
index: toolIndex
|
|
146
|
+
});
|
|
147
|
+
if (isNew) yield {
|
|
148
|
+
event: "content-block-start",
|
|
149
|
+
index,
|
|
150
|
+
content: {
|
|
151
|
+
type: "tool_call_chunk",
|
|
152
|
+
id: rawToolCall.id,
|
|
153
|
+
name: rawToolCall.function?.name,
|
|
154
|
+
args: "",
|
|
155
|
+
index: toolIndex
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
const acc = blockAccumulators.get(index);
|
|
159
|
+
if (rawToolCall.id != null) acc.id = rawToolCall.id;
|
|
160
|
+
if (rawToolCall.function?.name != null) acc.name = rawToolCall.function.name;
|
|
161
|
+
const argDelta = rawToolCall.function?.arguments ?? "";
|
|
162
|
+
acc.args = (acc.args ?? "") + argDelta;
|
|
163
|
+
yield {
|
|
164
|
+
event: "content-block-delta",
|
|
165
|
+
index,
|
|
166
|
+
delta: {
|
|
167
|
+
type: "block-delta",
|
|
168
|
+
fields: {
|
|
169
|
+
type: "tool_call_chunk",
|
|
170
|
+
...acc.id != null ? { id: acc.id } : {},
|
|
171
|
+
...acc.name != null ? { name: acc.name } : {},
|
|
172
|
+
args: acc.args
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
if (delta.audio) {
|
|
178
|
+
const { index, isNew } = getOrCreateBlockIndex("audio", {
|
|
179
|
+
type: "audio",
|
|
180
|
+
id: delta.audio.id,
|
|
181
|
+
data: "",
|
|
182
|
+
mimeType: "audio/pcm",
|
|
183
|
+
transcript: delta.audio.transcript ?? ""
|
|
184
|
+
});
|
|
185
|
+
if (isNew) yield {
|
|
186
|
+
event: "content-block-start",
|
|
187
|
+
index,
|
|
188
|
+
content: {
|
|
189
|
+
type: "audio",
|
|
190
|
+
id: delta.audio.id,
|
|
191
|
+
data: "",
|
|
192
|
+
mimeType: "audio/pcm",
|
|
193
|
+
transcript: delta.audio.transcript ?? ""
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
const acc = blockAccumulators.get(index);
|
|
197
|
+
if (delta.audio.transcript) {
|
|
198
|
+
acc.transcript = (acc.transcript ?? "") + delta.audio.transcript;
|
|
199
|
+
yield {
|
|
200
|
+
event: "content-block-delta",
|
|
201
|
+
index,
|
|
202
|
+
delta: {
|
|
203
|
+
type: "block-delta",
|
|
204
|
+
fields: {
|
|
205
|
+
type: "audio",
|
|
206
|
+
transcript: acc.transcript
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
if (delta.audio.data) {
|
|
212
|
+
acc.data = (acc.data ?? "") + delta.audio.data;
|
|
213
|
+
yield {
|
|
214
|
+
event: "content-block-delta",
|
|
215
|
+
index,
|
|
216
|
+
delta: {
|
|
217
|
+
type: "data-delta",
|
|
218
|
+
data: delta.audio.data,
|
|
219
|
+
encoding: "base64"
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
if (delta.function_call) yield {
|
|
225
|
+
event: "provider",
|
|
226
|
+
provider,
|
|
227
|
+
name: "function_call",
|
|
228
|
+
payload: delta.function_call
|
|
229
|
+
};
|
|
230
|
+
if (choice.logprobs) yield {
|
|
231
|
+
event: "provider",
|
|
232
|
+
provider,
|
|
233
|
+
name: "logprobs",
|
|
234
|
+
payload: choice.logprobs
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
for (const [index, acc] of blockAccumulators) yield {
|
|
238
|
+
event: "content-block-finish",
|
|
239
|
+
index,
|
|
240
|
+
content: finalizeContentBlock(acc)
|
|
241
|
+
};
|
|
242
|
+
yield {
|
|
243
|
+
event: "message-finish",
|
|
244
|
+
reason: finishReason,
|
|
245
|
+
...usageSnapshot ? { usage: usageSnapshot } : {},
|
|
246
|
+
...responseMetadata ? { responseMetadata } : {}
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
function getReasoningDeltaText(delta) {
|
|
250
|
+
const reasoning = delta.reasoning_content ?? delta.reasoning;
|
|
251
|
+
return typeof reasoning === "string" && reasoning.length > 0 ? reasoning : void 0;
|
|
252
|
+
}
|
|
253
|
+
function buildGroqUsageSnapshot(usage) {
|
|
254
|
+
return {
|
|
255
|
+
input_tokens: usage.prompt_tokens ?? 0,
|
|
256
|
+
output_tokens: usage.completion_tokens ?? 0,
|
|
257
|
+
total_tokens: usage.total_tokens ?? 0
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
function mapFinishReason(reason) {
|
|
261
|
+
switch (reason) {
|
|
262
|
+
case "stop": return "stop";
|
|
263
|
+
case "length":
|
|
264
|
+
case "max_tokens": return "length";
|
|
265
|
+
case "tool_calls":
|
|
266
|
+
case "function_call": return "tool_use";
|
|
267
|
+
case "content_filter": return "content_filter";
|
|
268
|
+
default: return "stop";
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
function buildUsageSnapshot(usage) {
|
|
272
|
+
const inputTokenDetails = {
|
|
273
|
+
...usage.prompt_tokens_details?.audio_tokens != null && { audio: usage.prompt_tokens_details.audio_tokens },
|
|
274
|
+
...usage.prompt_tokens_details?.cached_tokens != null && { cache_read: usage.prompt_tokens_details.cached_tokens }
|
|
275
|
+
};
|
|
276
|
+
const outputTokenDetails = {
|
|
277
|
+
...usage.completion_tokens_details?.audio_tokens != null && { audio: usage.completion_tokens_details.audio_tokens },
|
|
278
|
+
...usage.completion_tokens_details?.reasoning_tokens != null && { reasoning: usage.completion_tokens_details.reasoning_tokens }
|
|
279
|
+
};
|
|
280
|
+
return {
|
|
281
|
+
input_tokens: usage.prompt_tokens ?? 0,
|
|
282
|
+
output_tokens: usage.completion_tokens ?? 0,
|
|
283
|
+
total_tokens: usage.total_tokens ?? 0,
|
|
284
|
+
...Object.keys(inputTokenDetails).length > 0 && { input_token_details: inputTokenDetails },
|
|
285
|
+
...Object.keys(outputTokenDetails).length > 0 && { output_token_details: outputTokenDetails }
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
function buildResponseMetadata(data, choice) {
|
|
289
|
+
return {
|
|
290
|
+
model_provider: "openai",
|
|
291
|
+
model_name: data.model,
|
|
292
|
+
system_fingerprint: data.system_fingerprint,
|
|
293
|
+
service_tier: data.service_tier,
|
|
294
|
+
finish_reason: choice.finish_reason,
|
|
295
|
+
...data.usage ? { usage: data.usage } : {}
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
//#endregion
|
|
299
|
+
export { convertOpenAICompletionsStream, openai_completions_stream_exports };
|
|
300
|
+
|
|
301
|
+
//# sourceMappingURL=openai_completions_stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai_completions_stream.js","names":[],"sources":["../../src/language_models/openai_completions_stream.ts"],"sourcesContent":["/**\n * Converts OpenAI Chat Completions-shaped stream chunks into\n * {@link ChatModelStreamEvent}s.\n *\n * Used by `@langchain/openai` and OpenAI-compatible providers (Groq, Mistral,\n * OpenRouter, IBM watsonx, etc.) without requiring a dependency on\n * `@langchain/openai`.\n *\n * @module\n */\n\nimport { finalizeContentBlock } from \"./compat.js\";\nimport type { ChatModelStreamEvent, FinishReason } from \"./event.js\";\nimport type { ContentBlock } from \"../messages/content/index.js\";\nimport type { UsageMetadata } from \"../messages/metadata.js\";\n\nexport type OpenAICompletionsFinishReason =\n | \"stop\"\n | \"length\"\n | \"max_tokens\"\n | \"tool_calls\"\n | \"function_call\"\n | \"content_filter\"\n | null;\n\nexport interface OpenAICompletionsUsage {\n prompt_tokens?: number;\n completion_tokens?: number;\n total_tokens?: number;\n prompt_tokens_details?: {\n audio_tokens?: number;\n cached_tokens?: number;\n };\n completion_tokens_details?: {\n audio_tokens?: number;\n reasoning_tokens?: number;\n };\n}\n\nexport interface OpenAICompletionsToolCallDelta {\n index?: number;\n id?: string;\n type?: \"function\";\n function?: {\n name?: string;\n arguments?: string;\n };\n}\n\nexport interface OpenAICompletionsDelta {\n role?: string;\n content?: string | null;\n reasoning_content?: string;\n reasoning?: string;\n tool_calls?: OpenAICompletionsToolCallDelta[];\n function_call?: unknown;\n audio?: {\n id?: string;\n data?: string;\n transcript?: string;\n };\n}\n\nexport interface OpenAICompletionsStreamChoice {\n index?: number;\n finish_reason?: OpenAICompletionsFinishReason;\n logprobs?: unknown;\n delta?: OpenAICompletionsDelta;\n}\n\nexport interface OpenAICompletionsStreamChunk {\n id?: string;\n model?: string;\n service_tier?: string | null;\n system_fingerprint?: string | null;\n usage?: OpenAICompletionsUsage | null;\n x_groq?: {\n usage?: {\n prompt_tokens?: number;\n completion_tokens?: number;\n total_tokens?: number;\n };\n };\n choices?: OpenAICompletionsStreamChoice[];\n}\n\nexport interface ConvertOpenAICompletionsStreamOptions {\n streamUsage?: boolean;\n /** Provider id for passthrough events (default `\"openai\"`). */\n provider?: string;\n /** Optional per-chunk transform before conversion. */\n mapChunk?: (\n chunk: OpenAICompletionsStreamChunk\n ) => OpenAICompletionsStreamChunk;\n}\n\ntype BlockKey = \"text\" | \"reasoning\" | \"audio\" | `tool:${number}`;\n\n/**\n * Convert an async iterable of OpenAI Chat Completions-shaped stream chunks into\n * LangChain `ChatModelStreamEvent`s with typed deltas.\n */\nexport async function* convertOpenAICompletionsStream(\n source: AsyncIterable<OpenAICompletionsStreamChunk>,\n options: ConvertOpenAICompletionsStreamOptions = {}\n): AsyncGenerator<ChatModelStreamEvent> {\n const shouldStreamUsage = options.streamUsage ?? true;\n const provider = options.provider ?? \"openai\";\n const mapChunk = options.mapChunk;\n\n const blockAccumulators = new Map<\n number,\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n Record<string, any>\n >();\n const blockKeyToIndex = new Map<BlockKey, number>();\n let nextBlockIndex = 0;\n let messageStarted = false;\n let usageSnapshot: UsageMetadata | undefined;\n let finishReason: FinishReason | undefined;\n let responseMetadata: Record<string, unknown> | undefined;\n let emittedProviderMetadata = false;\n\n const getOrCreateBlockIndex = (\n key: BlockKey,\n initial: Record<string, unknown>\n ): { index: number; isNew: boolean } => {\n const existing = blockKeyToIndex.get(key);\n if (existing !== undefined) {\n return { index: existing, isNew: false };\n }\n const index = nextBlockIndex++;\n blockKeyToIndex.set(key, index);\n blockAccumulators.set(index, { ...initial });\n return { index, isNew: true };\n };\n\n for await (let data of source) {\n if (mapChunk) {\n data = mapChunk(data);\n }\n if (!messageStarted) {\n messageStarted = true;\n yield {\n event: \"message-start\" as const,\n id: data.id,\n };\n }\n\n if (!emittedProviderMetadata && (data.model || data.service_tier)) {\n emittedProviderMetadata = true;\n yield {\n event: \"provider\" as const,\n provider,\n name: \"stream_metadata\",\n payload: {\n model: data.model,\n service_tier: data.service_tier,\n },\n };\n }\n\n if (data.usage && shouldStreamUsage) {\n usageSnapshot = buildUsageSnapshot(data.usage);\n yield { event: \"usage\" as const, usage: usageSnapshot };\n }\n\n const groqUsage = data.x_groq?.usage;\n if (groqUsage && shouldStreamUsage) {\n usageSnapshot = buildGroqUsageSnapshot(groqUsage);\n yield { event: \"usage\" as const, usage: usageSnapshot };\n }\n\n const choice = data.choices?.[0];\n if (!choice) {\n continue;\n }\n\n if (choice.finish_reason != null) {\n finishReason = mapFinishReason(choice.finish_reason);\n responseMetadata = buildResponseMetadata(data, choice);\n }\n\n const { delta } = choice;\n if (!delta) {\n continue;\n }\n\n const reasoningText = getReasoningDeltaText(delta);\n if (reasoningText) {\n const key: BlockKey = \"reasoning\";\n const { index, isNew } = getOrCreateBlockIndex(key, {\n type: \"reasoning\" as const,\n reasoning: \"\",\n });\n if (isNew) {\n yield {\n event: \"content-block-start\" as const,\n index,\n content: { type: \"reasoning\", reasoning: \"\" } as ContentBlock,\n };\n }\n const acc = blockAccumulators.get(index)!;\n acc.reasoning = (acc.reasoning ?? \"\") + reasoningText;\n yield {\n event: \"content-block-delta\" as const,\n index,\n delta: {\n type: \"reasoning-delta\" as const,\n reasoning: reasoningText,\n },\n };\n }\n\n if (delta.content) {\n const key: BlockKey = \"text\";\n const { index, isNew } = getOrCreateBlockIndex(key, {\n type: \"text\" as const,\n text: \"\",\n });\n if (isNew) {\n yield {\n event: \"content-block-start\" as const,\n index,\n content: { type: \"text\", text: \"\" } as ContentBlock,\n };\n }\n const acc = blockAccumulators.get(index)!;\n acc.text = (acc.text ?? \"\") + delta.content;\n yield {\n event: \"content-block-delta\" as const,\n index,\n delta: { type: \"text-delta\" as const, text: delta.content },\n };\n }\n\n if (Array.isArray(delta.tool_calls)) {\n for (const rawToolCall of delta.tool_calls) {\n const toolIndex = rawToolCall.index ?? 0;\n const key: BlockKey = `tool:${toolIndex}`;\n const { index, isNew } = getOrCreateBlockIndex(key, {\n type: \"tool_call_chunk\" as const,\n id: rawToolCall.id,\n name: rawToolCall.function?.name,\n args: \"\",\n index: toolIndex,\n });\n if (isNew) {\n yield {\n event: \"content-block-start\" as const,\n index,\n content: {\n type: \"tool_call_chunk\",\n id: rawToolCall.id,\n name: rawToolCall.function?.name,\n args: \"\",\n index: toolIndex,\n } as ContentBlock,\n };\n }\n\n const acc = blockAccumulators.get(index)!;\n if (rawToolCall.id != null) acc.id = rawToolCall.id;\n if (rawToolCall.function?.name != null) {\n acc.name = rawToolCall.function.name;\n }\n const argDelta = rawToolCall.function?.arguments ?? \"\";\n acc.args = (acc.args ?? \"\") + argDelta;\n yield {\n event: \"content-block-delta\" as const,\n index,\n delta: {\n type: \"block-delta\" as const,\n fields: {\n type: \"tool_call_chunk\",\n ...(acc.id != null ? { id: acc.id } : {}),\n ...(acc.name != null ? { name: acc.name } : {}),\n args: acc.args,\n },\n },\n };\n }\n }\n\n if (delta.audio) {\n const key: BlockKey = \"audio\";\n const { index, isNew } = getOrCreateBlockIndex(key, {\n type: \"audio\" as const,\n id: delta.audio.id,\n data: \"\",\n mimeType: \"audio/pcm\",\n transcript: delta.audio.transcript ?? \"\",\n });\n if (isNew) {\n yield {\n event: \"content-block-start\" as const,\n index,\n content: {\n type: \"audio\",\n id: delta.audio.id,\n data: \"\",\n mimeType: \"audio/pcm\",\n transcript: delta.audio.transcript ?? \"\",\n } as ContentBlock,\n };\n }\n const acc = blockAccumulators.get(index)!;\n if (delta.audio.transcript) {\n acc.transcript = (acc.transcript ?? \"\") + delta.audio.transcript;\n yield {\n event: \"content-block-delta\" as const,\n index,\n delta: {\n type: \"block-delta\" as const,\n fields: {\n type: \"audio\",\n transcript: acc.transcript,\n },\n },\n };\n }\n if (delta.audio.data) {\n acc.data = (acc.data ?? \"\") + delta.audio.data;\n yield {\n event: \"content-block-delta\" as const,\n index,\n delta: {\n type: \"data-delta\" as const,\n data: delta.audio.data,\n encoding: \"base64\" as const,\n },\n };\n }\n }\n\n if (delta.function_call) {\n yield {\n event: \"provider\" as const,\n provider,\n name: \"function_call\",\n payload: delta.function_call,\n };\n }\n\n if (choice.logprobs) {\n yield {\n event: \"provider\" as const,\n provider,\n name: \"logprobs\",\n payload: choice.logprobs,\n };\n }\n }\n\n for (const [index, acc] of blockAccumulators) {\n const finalized = finalizeContentBlock(acc as ContentBlock);\n yield {\n event: \"content-block-finish\" as const,\n index,\n content: finalized,\n };\n }\n\n yield {\n event: \"message-finish\" as const,\n reason: finishReason,\n ...(usageSnapshot ? { usage: usageSnapshot } : {}),\n ...(responseMetadata ? { responseMetadata } : {}),\n };\n}\n\nfunction getReasoningDeltaText(\n delta: OpenAICompletionsDelta\n): string | undefined {\n const reasoning = delta.reasoning_content ?? delta.reasoning;\n return typeof reasoning === \"string\" && reasoning.length > 0\n ? reasoning\n : undefined;\n}\n\nfunction buildGroqUsageSnapshot(usage: {\n prompt_tokens?: number;\n completion_tokens?: number;\n total_tokens?: number;\n}): UsageMetadata {\n return {\n input_tokens: usage.prompt_tokens ?? 0,\n output_tokens: usage.completion_tokens ?? 0,\n total_tokens: usage.total_tokens ?? 0,\n };\n}\n\nfunction mapFinishReason(reason: OpenAICompletionsFinishReason): FinishReason {\n switch (reason) {\n case \"stop\":\n return \"stop\";\n case \"length\":\n case \"max_tokens\":\n return \"length\";\n case \"tool_calls\":\n case \"function_call\":\n return \"tool_use\";\n case \"content_filter\":\n return \"content_filter\";\n default:\n return \"stop\";\n }\n}\n\nfunction buildUsageSnapshot(usage: OpenAICompletionsUsage): UsageMetadata {\n const inputTokenDetails = {\n ...(usage.prompt_tokens_details?.audio_tokens != null && {\n audio: usage.prompt_tokens_details.audio_tokens,\n }),\n ...(usage.prompt_tokens_details?.cached_tokens != null && {\n cache_read: usage.prompt_tokens_details.cached_tokens,\n }),\n };\n const outputTokenDetails = {\n ...(usage.completion_tokens_details?.audio_tokens != null && {\n audio: usage.completion_tokens_details.audio_tokens,\n }),\n ...(usage.completion_tokens_details?.reasoning_tokens != null && {\n reasoning: usage.completion_tokens_details.reasoning_tokens,\n }),\n };\n return {\n input_tokens: usage.prompt_tokens ?? 0,\n output_tokens: usage.completion_tokens ?? 0,\n total_tokens: usage.total_tokens ?? 0,\n ...(Object.keys(inputTokenDetails).length > 0 && {\n input_token_details: inputTokenDetails,\n }),\n ...(Object.keys(outputTokenDetails).length > 0 && {\n output_token_details: outputTokenDetails,\n }),\n };\n}\n\nfunction buildResponseMetadata(\n data: OpenAICompletionsStreamChunk,\n choice: OpenAICompletionsStreamChoice\n): Record<string, unknown> {\n return {\n model_provider: \"openai\",\n model_name: data.model,\n system_fingerprint: data.system_fingerprint,\n service_tier: data.service_tier,\n finish_reason: choice.finish_reason,\n ...(data.usage ? { usage: data.usage } : {}),\n };\n}\n"],"mappings":"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"}
|