openai 6.44.0 → 6.46.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 +70 -0
- package/README.md +85 -102
- package/_vendor/zod-to-json-schema/parseDef.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parseDef.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parseDef.js +41 -15
- package/_vendor/zod-to-json-schema/parseDef.js.map +1 -1
- package/_vendor/zod-to-json-schema/parseDef.mjs +41 -15
- package/_vendor/zod-to-json-schema/parseDef.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/branded.d.mts +1 -1
- package/_vendor/zod-to-json-schema/parsers/branded.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/branded.d.ts +1 -1
- package/_vendor/zod-to-json-schema/parsers/branded.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/branded.js +2 -2
- package/_vendor/zod-to-json-schema/parsers/branded.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/branded.mjs +2 -2
- package/_vendor/zod-to-json-schema/parsers/branded.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/catch.d.mts +1 -1
- package/_vendor/zod-to-json-schema/parsers/catch.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/catch.d.ts +1 -1
- package/_vendor/zod-to-json-schema/parsers/catch.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/catch.js +2 -2
- package/_vendor/zod-to-json-schema/parsers/catch.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/catch.mjs +2 -2
- package/_vendor/zod-to-json-schema/parsers/catch.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/default.d.mts +1 -1
- package/_vendor/zod-to-json-schema/parsers/default.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/default.d.ts +1 -1
- package/_vendor/zod-to-json-schema/parsers/default.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/default.js +2 -2
- package/_vendor/zod-to-json-schema/parsers/default.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/default.mjs +2 -2
- package/_vendor/zod-to-json-schema/parsers/default.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/nullable.d.mts +1 -1
- package/_vendor/zod-to-json-schema/parsers/nullable.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/nullable.d.ts +1 -1
- package/_vendor/zod-to-json-schema/parsers/nullable.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/nullable.js +2 -2
- package/_vendor/zod-to-json-schema/parsers/nullable.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/nullable.mjs +2 -2
- package/_vendor/zod-to-json-schema/parsers/nullable.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/optional.d.mts +1 -1
- package/_vendor/zod-to-json-schema/parsers/optional.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/optional.d.ts +1 -1
- package/_vendor/zod-to-json-schema/parsers/optional.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/optional.js +3 -3
- package/_vendor/zod-to-json-schema/parsers/optional.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/optional.mjs +3 -3
- package/_vendor/zod-to-json-schema/parsers/optional.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/pipeline.d.mts +1 -1
- package/_vendor/zod-to-json-schema/parsers/pipeline.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/pipeline.d.ts +1 -1
- package/_vendor/zod-to-json-schema/parsers/pipeline.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/pipeline.js +3 -3
- package/_vendor/zod-to-json-schema/parsers/pipeline.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/pipeline.mjs +3 -3
- package/_vendor/zod-to-json-schema/parsers/pipeline.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/promise.d.mts +1 -1
- package/_vendor/zod-to-json-schema/parsers/promise.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/promise.d.ts +1 -1
- package/_vendor/zod-to-json-schema/parsers/promise.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/promise.js +2 -2
- package/_vendor/zod-to-json-schema/parsers/promise.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/promise.mjs +2 -2
- package/_vendor/zod-to-json-schema/parsers/promise.mjs.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/readonly.d.mts +1 -1
- package/_vendor/zod-to-json-schema/parsers/readonly.d.mts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/readonly.d.ts +1 -1
- package/_vendor/zod-to-json-schema/parsers/readonly.d.ts.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/readonly.js +2 -2
- package/_vendor/zod-to-json-schema/parsers/readonly.js.map +1 -1
- package/_vendor/zod-to-json-schema/parsers/readonly.mjs +2 -2
- package/_vendor/zod-to-json-schema/parsers/readonly.mjs.map +1 -1
- package/auth/workload-identity-auth.d.mts.map +1 -1
- package/auth/workload-identity-auth.d.ts.map +1 -1
- package/auth/workload-identity-auth.js +12 -4
- package/auth/workload-identity-auth.js.map +1 -1
- package/auth/workload-identity-auth.mjs +13 -5
- package/auth/workload-identity-auth.mjs.map +1 -1
- package/azure.d.mts +3 -1
- package/azure.d.mts.map +1 -1
- package/azure.d.ts +3 -1
- package/azure.d.ts.map +1 -1
- package/azure.js.map +1 -1
- package/azure.mjs.map +1 -1
- package/beta/realtime/internal-base.d.mts +14 -1
- package/beta/realtime/internal-base.d.mts.map +1 -1
- package/beta/realtime/internal-base.d.ts +14 -1
- package/beta/realtime/internal-base.d.ts.map +1 -1
- package/beta/realtime/internal-base.js +21 -5
- package/beta/realtime/internal-base.js.map +1 -1
- package/beta/realtime/internal-base.mjs +21 -5
- package/beta/realtime/internal-base.mjs.map +1 -1
- package/beta/realtime/websocket.d.mts +3 -5
- package/beta/realtime/websocket.d.mts.map +1 -1
- package/beta/realtime/websocket.d.ts +3 -5
- package/beta/realtime/websocket.d.ts.map +1 -1
- package/beta/realtime/websocket.js +2 -3
- package/beta/realtime/websocket.js.map +1 -1
- package/beta/realtime/websocket.mjs +3 -4
- package/beta/realtime/websocket.mjs.map +1 -1
- package/beta/realtime/ws.d.mts +3 -5
- package/beta/realtime/ws.d.mts.map +1 -1
- package/beta/realtime/ws.d.ts +3 -5
- package/beta/realtime/ws.d.ts.map +1 -1
- package/beta/realtime/ws.js +2 -3
- package/beta/realtime/ws.js.map +1 -1
- package/beta/realtime/ws.mjs +3 -4
- package/beta/realtime/ws.mjs.map +1 -1
- package/client.d.mts +9 -1
- package/client.d.mts.map +1 -1
- package/client.d.ts +9 -1
- package/client.d.ts.map +1 -1
- package/client.js +56 -9
- package/client.js.map +1 -1
- package/client.mjs +56 -9
- package/client.mjs.map +1 -1
- package/helpers/audio.d.mts.map +1 -1
- package/helpers/audio.d.ts.map +1 -1
- package/helpers/audio.js +16 -3
- package/helpers/audio.js.map +1 -1
- package/helpers/audio.mjs +17 -4
- package/helpers/audio.mjs.map +1 -1
- package/helpers/zod.d.mts.map +1 -1
- package/helpers/zod.d.ts.map +1 -1
- package/helpers/zod.js +12 -0
- package/helpers/zod.js.map +1 -1
- package/helpers/zod.mjs +12 -0
- package/helpers/zod.mjs.map +1 -1
- package/internal/bedrock.d.mts +34 -0
- package/internal/bedrock.d.mts.map +1 -0
- package/internal/bedrock.d.ts +34 -0
- package/internal/bedrock.d.ts.map +1 -0
- package/internal/bedrock.js +107 -0
- package/internal/bedrock.js.map +1 -0
- package/internal/bedrock.mjs +99 -0
- package/internal/bedrock.mjs.map +1 -0
- package/internal/provider.d.mts +23 -0
- package/internal/provider.d.mts.map +1 -0
- package/internal/provider.d.ts +23 -0
- package/internal/provider.d.ts.map +1 -0
- package/internal/provider.js +36 -0
- package/internal/provider.js.map +1 -0
- package/internal/provider.mjs +32 -0
- package/internal/provider.mjs.map +1 -0
- package/internal/utils/log.d.mts.map +1 -1
- package/internal/utils/log.d.ts.map +1 -1
- package/internal/utils/log.js +1 -0
- package/internal/utils/log.js.map +1 -1
- package/internal/utils/log.mjs +1 -0
- package/internal/utils/log.mjs.map +1 -1
- package/lib/AbstractChatCompletionRunner.d.mts +15 -4
- package/lib/AbstractChatCompletionRunner.d.mts.map +1 -1
- package/lib/AbstractChatCompletionRunner.d.ts +15 -4
- package/lib/AbstractChatCompletionRunner.d.ts.map +1 -1
- package/lib/AbstractChatCompletionRunner.js +77 -40
- package/lib/AbstractChatCompletionRunner.js.map +1 -1
- package/lib/AbstractChatCompletionRunner.mjs +77 -40
- package/lib/AbstractChatCompletionRunner.mjs.map +1 -1
- package/lib/AssistantStream.d.mts.map +1 -1
- package/lib/AssistantStream.d.ts.map +1 -1
- package/lib/AssistantStream.js +5 -25
- package/lib/AssistantStream.js.map +1 -1
- package/lib/AssistantStream.mjs +5 -25
- package/lib/AssistantStream.mjs.map +1 -1
- package/lib/ChatCompletionRunner.js +1 -1
- package/lib/ChatCompletionRunner.js.map +1 -1
- package/lib/ChatCompletionRunner.mjs +1 -1
- package/lib/ChatCompletionRunner.mjs.map +1 -1
- package/lib/ChatCompletionStream.d.mts.map +1 -1
- package/lib/ChatCompletionStream.d.ts.map +1 -1
- package/lib/ChatCompletionStream.js +11 -17
- package/lib/ChatCompletionStream.js.map +1 -1
- package/lib/ChatCompletionStream.mjs +11 -17
- package/lib/ChatCompletionStream.mjs.map +1 -1
- package/lib/ChatCompletionStreamingRunner.js +1 -1
- package/lib/ChatCompletionStreamingRunner.js.map +1 -1
- package/lib/ChatCompletionStreamingRunner.mjs +1 -1
- package/lib/ChatCompletionStreamingRunner.mjs.map +1 -1
- package/lib/EventEmitter.d.mts.map +1 -1
- package/lib/EventEmitter.d.ts.map +1 -1
- package/lib/EventEmitter.js +12 -2
- package/lib/EventEmitter.js.map +1 -1
- package/lib/EventEmitter.mjs +12 -2
- package/lib/EventEmitter.mjs.map +1 -1
- package/lib/EventStream.d.mts +1 -0
- package/lib/EventStream.d.mts.map +1 -1
- package/lib/EventStream.d.ts +1 -0
- package/lib/EventStream.d.ts.map +1 -1
- package/lib/EventStream.js +19 -2
- package/lib/EventStream.js.map +1 -1
- package/lib/EventStream.mjs +19 -2
- package/lib/EventStream.mjs.map +1 -1
- package/lib/ResponsesParser.d.mts.map +1 -1
- package/lib/ResponsesParser.d.ts.map +1 -1
- package/lib/ResponsesParser.js +12 -4
- package/lib/ResponsesParser.js.map +1 -1
- package/lib/ResponsesParser.mjs +12 -4
- package/lib/ResponsesParser.mjs.map +1 -1
- package/lib/responses/ResponseAccumulator.d.mts +15 -0
- package/lib/responses/ResponseAccumulator.d.mts.map +1 -0
- package/lib/responses/ResponseAccumulator.d.ts +15 -0
- package/lib/responses/ResponseAccumulator.d.ts.map +1 -0
- package/lib/responses/ResponseAccumulator.js +403 -0
- package/lib/responses/ResponseAccumulator.js.map +1 -0
- package/lib/responses/ResponseAccumulator.mjs +400 -0
- package/lib/responses/ResponseAccumulator.mjs.map +1 -0
- package/lib/responses/ResponseInputItems.d.mts +19 -0
- package/lib/responses/ResponseInputItems.d.mts.map +1 -0
- package/lib/responses/ResponseInputItems.d.ts +19 -0
- package/lib/responses/ResponseInputItems.d.ts.map +1 -0
- package/lib/responses/ResponseInputItems.js +104 -0
- package/lib/responses/ResponseInputItems.js.map +1 -0
- package/lib/responses/ResponseInputItems.mjs +100 -0
- package/lib/responses/ResponseInputItems.mjs.map +1 -0
- package/lib/responses/ResponseStream.d.mts.map +1 -1
- package/lib/responses/ResponseStream.d.ts.map +1 -1
- package/lib/responses/ResponseStream.js +5 -90
- package/lib/responses/ResponseStream.js.map +1 -1
- package/lib/responses/ResponseStream.mjs +5 -90
- package/lib/responses/ResponseStream.mjs.map +1 -1
- package/package.json +24 -1
- package/providers/bedrock/aws.d.mts +24 -0
- package/providers/bedrock/aws.d.mts.map +1 -0
- package/providers/bedrock/aws.d.ts +24 -0
- package/providers/bedrock/aws.d.ts.map +1 -0
- package/providers/bedrock/aws.js +170 -0
- package/providers/bedrock/aws.js.map +1 -0
- package/providers/bedrock/aws.mjs +166 -0
- package/providers/bedrock/aws.mjs.map +1 -0
- package/providers/bedrock.d.mts +7 -0
- package/providers/bedrock.d.mts.map +1 -0
- package/providers/bedrock.d.ts +7 -0
- package/providers/bedrock.d.ts.map +1 -0
- package/providers/bedrock.js +26 -0
- package/providers/bedrock.js.map +1 -0
- package/providers/bedrock.mjs +22 -0
- package/providers/bedrock.mjs.map +1 -0
- package/realtime/internal-base.d.mts +28 -1
- package/realtime/internal-base.d.mts.map +1 -1
- package/realtime/internal-base.d.ts +28 -1
- package/realtime/internal-base.d.ts.map +1 -1
- package/realtime/internal-base.js +50 -7
- package/realtime/internal-base.js.map +1 -1
- package/realtime/internal-base.mjs +49 -7
- package/realtime/internal-base.mjs.map +1 -1
- package/realtime/websocket.d.mts +4 -7
- package/realtime/websocket.d.mts.map +1 -1
- package/realtime/websocket.d.ts +4 -7
- package/realtime/websocket.d.ts.map +1 -1
- package/realtime/websocket.js +4 -8
- package/realtime/websocket.js.map +1 -1
- package/realtime/websocket.mjs +5 -9
- package/realtime/websocket.mjs.map +1 -1
- package/realtime/ws.d.mts +4 -7
- package/realtime/ws.d.mts.map +1 -1
- package/realtime/ws.d.ts +4 -7
- package/realtime/ws.d.ts.map +1 -1
- package/realtime/ws.js +4 -8
- package/realtime/ws.js.map +1 -1
- package/realtime/ws.mjs +5 -9
- package/realtime/ws.mjs.map +1 -1
- package/resources/beta/assistants.d.mts +12 -26
- package/resources/beta/assistants.d.mts.map +1 -1
- package/resources/beta/assistants.d.ts +12 -26
- package/resources/beta/assistants.d.ts.map +1 -1
- package/resources/beta/beta.d.mts +6 -1
- package/resources/beta/beta.d.mts.map +1 -1
- package/resources/beta/beta.d.ts +6 -1
- package/resources/beta/beta.d.ts.map +1 -1
- package/resources/beta/beta.js +4 -0
- package/resources/beta/beta.js.map +1 -1
- package/resources/beta/beta.mjs +4 -0
- package/resources/beta/beta.mjs.map +1 -1
- package/resources/beta/index.d.mts +1 -0
- package/resources/beta/index.d.mts.map +1 -1
- package/resources/beta/index.d.ts +1 -0
- package/resources/beta/index.d.ts.map +1 -1
- package/resources/beta/index.js +5 -3
- package/resources/beta/index.js.map +1 -1
- package/resources/beta/index.mjs +1 -0
- package/resources/beta/index.mjs.map +1 -1
- package/resources/beta/responses/index.d.mts +6 -0
- package/resources/beta/responses/index.d.mts.map +1 -0
- package/resources/beta/responses/index.d.ts +6 -0
- package/resources/beta/responses/index.d.ts.map +1 -0
- package/resources/beta/responses/index.js +11 -0
- package/resources/beta/responses/index.js.map +1 -0
- package/resources/beta/responses/index.mjs +5 -0
- package/resources/beta/responses/index.mjs.map +1 -0
- package/resources/beta/responses/input-items.d.mts +69 -0
- package/resources/beta/responses/input-items.d.mts.map +1 -0
- package/resources/beta/responses/input-items.d.ts +69 -0
- package/resources/beta/responses/input-items.d.ts.map +1 -0
- package/resources/beta/responses/input-items.js +37 -0
- package/resources/beta/responses/input-items.js.map +1 -0
- package/resources/beta/responses/input-items.mjs +33 -0
- package/resources/beta/responses/input-items.mjs.map +1 -0
- package/resources/beta/responses/input-tokens.d.mts +191 -0
- package/resources/beta/responses/input-tokens.d.mts.map +1 -0
- package/resources/beta/responses/input-tokens.d.ts +191 -0
- package/resources/beta/responses/input-tokens.d.ts.map +1 -0
- package/resources/beta/responses/input-tokens.js +34 -0
- package/resources/beta/responses/input-tokens.js.map +1 -0
- package/resources/beta/responses/input-tokens.mjs +30 -0
- package/resources/beta/responses/input-tokens.mjs.map +1 -0
- package/resources/beta/responses/internal-base.d.mts +71 -0
- package/resources/beta/responses/internal-base.d.mts.map +1 -0
- package/resources/beta/responses/internal-base.d.ts +71 -0
- package/resources/beta/responses/internal-base.d.ts.map +1 -0
- package/resources/beta/responses/internal-base.js +48 -0
- package/resources/beta/responses/internal-base.js.map +1 -0
- package/resources/beta/responses/internal-base.mjs +42 -0
- package/resources/beta/responses/internal-base.mjs.map +1 -0
- package/resources/beta/responses/responses.d.mts +9985 -0
- package/resources/beta/responses/responses.d.mts.map +1 -0
- package/resources/beta/responses/responses.d.ts +9985 -0
- package/resources/beta/responses/responses.d.ts.map +1 -0
- package/resources/beta/responses/responses.js +121 -0
- package/resources/beta/responses/responses.js.map +1 -0
- package/resources/beta/responses/responses.mjs +116 -0
- package/resources/beta/responses/responses.mjs.map +1 -0
- package/resources/beta/responses/ws-base.d.mts +106 -0
- package/resources/beta/responses/ws-base.d.mts.map +1 -0
- package/resources/beta/responses/ws-base.d.ts +106 -0
- package/resources/beta/responses/ws-base.d.ts.map +1 -0
- package/resources/beta/responses/ws-base.js +476 -0
- package/resources/beta/responses/ws-base.js.map +1 -0
- package/resources/beta/responses/ws-base.mjs +472 -0
- package/resources/beta/responses/ws-base.mjs.map +1 -0
- package/resources/beta/responses/ws.d.mts +13 -0
- package/resources/beta/responses/ws.d.mts.map +1 -0
- package/resources/beta/responses/ws.d.ts +13 -0
- package/resources/beta/responses/ws.d.ts.map +1 -0
- package/resources/beta/responses/ws.js +31 -0
- package/resources/beta/responses/ws.js.map +1 -0
- package/resources/beta/responses/ws.mjs +26 -0
- package/resources/beta/responses/ws.mjs.map +1 -0
- package/resources/beta/responses.d.mts +2 -0
- package/resources/beta/responses.d.mts.map +1 -0
- package/resources/beta/responses.d.ts +2 -0
- package/resources/beta/responses.d.ts.map +1 -0
- package/resources/beta/responses.js +6 -0
- package/resources/beta/responses.js.map +1 -0
- package/resources/beta/responses.mjs +3 -0
- package/resources/beta/responses.mjs.map +1 -0
- package/resources/beta/threads/runs/runs.d.mts +6 -13
- package/resources/beta/threads/runs/runs.d.mts.map +1 -1
- package/resources/beta/threads/runs/runs.d.ts +6 -13
- package/resources/beta/threads/runs/runs.d.ts.map +1 -1
- package/resources/beta/threads/runs/runs.js.map +1 -1
- package/resources/beta/threads/runs/runs.mjs.map +1 -1
- package/resources/chat/completions/completions.d.mts +155 -14
- package/resources/chat/completions/completions.d.mts.map +1 -1
- package/resources/chat/completions/completions.d.ts +155 -14
- package/resources/chat/completions/completions.d.ts.map +1 -1
- package/resources/chat/completions/completions.js.map +1 -1
- package/resources/chat/completions/completions.mjs.map +1 -1
- package/resources/completions.d.mts +4 -0
- package/resources/completions.d.mts.map +1 -1
- package/resources/completions.d.ts +4 -0
- package/resources/completions.d.ts.map +1 -1
- package/resources/conversations/conversations.d.mts +19 -0
- package/resources/conversations/conversations.d.mts.map +1 -1
- package/resources/conversations/conversations.d.ts +19 -0
- package/resources/conversations/conversations.d.ts.map +1 -1
- package/resources/conversations/conversations.js.map +1 -1
- package/resources/conversations/conversations.mjs.map +1 -1
- package/resources/conversations/items.d.mts +45 -1
- package/resources/conversations/items.d.mts.map +1 -1
- package/resources/conversations/items.d.ts +45 -1
- package/resources/conversations/items.d.ts.map +1 -1
- package/resources/evals/runs/runs.d.mts +66 -143
- package/resources/evals/runs/runs.d.mts.map +1 -1
- package/resources/evals/runs/runs.d.ts +66 -143
- package/resources/evals/runs/runs.d.ts.map +1 -1
- package/resources/evals/runs/runs.js.map +1 -1
- package/resources/evals/runs/runs.mjs.map +1 -1
- package/resources/graders/grader-models.d.mts +6 -13
- package/resources/graders/grader-models.d.mts.map +1 -1
- package/resources/graders/grader-models.d.ts +6 -13
- package/resources/graders/grader-models.d.ts.map +1 -1
- package/resources/realtime/calls.d.mts +1 -1
- package/resources/realtime/calls.d.mts.map +1 -1
- package/resources/realtime/calls.d.ts +1 -1
- package/resources/realtime/calls.d.ts.map +1 -1
- package/resources/realtime/client-secrets.d.mts +5 -1
- package/resources/realtime/client-secrets.d.mts.map +1 -1
- package/resources/realtime/client-secrets.d.ts +5 -1
- package/resources/realtime/client-secrets.d.ts.map +1 -1
- package/resources/realtime/realtime.d.mts +9 -1
- package/resources/realtime/realtime.d.mts.map +1 -1
- package/resources/realtime/realtime.d.ts +9 -1
- package/resources/realtime/realtime.d.ts.map +1 -1
- package/resources/realtime/realtime.js.map +1 -1
- package/resources/realtime/realtime.mjs.map +1 -1
- package/resources/responses/input-tokens.d.mts +7 -1
- package/resources/responses/input-tokens.d.mts.map +1 -1
- package/resources/responses/input-tokens.d.ts +7 -1
- package/resources/responses/input-tokens.d.ts.map +1 -1
- package/resources/responses/responses.d.mts +816 -24
- package/resources/responses/responses.d.mts.map +1 -1
- package/resources/responses/responses.d.ts +816 -24
- package/resources/responses/responses.d.ts.map +1 -1
- package/resources/responses/responses.js +1 -1
- package/resources/responses/responses.js.map +1 -1
- package/resources/responses/responses.mjs +1 -1
- package/resources/responses/responses.mjs.map +1 -1
- package/resources/shared.d.mts +20 -28
- package/resources/shared.d.mts.map +1 -1
- package/resources/shared.d.ts +20 -28
- package/resources/shared.d.ts.map +1 -1
- package/resources/webhooks/webhooks.d.mts +54 -2
- package/resources/webhooks/webhooks.d.mts.map +1 -1
- package/resources/webhooks/webhooks.d.ts +54 -2
- package/resources/webhooks/webhooks.d.ts.map +1 -1
- package/src/_vendor/zod-to-json-schema/parseDef.ts +44 -16
- package/src/_vendor/zod-to-json-schema/parsers/branded.ts +2 -2
- package/src/_vendor/zod-to-json-schema/parsers/catch.ts +2 -2
- package/src/_vendor/zod-to-json-schema/parsers/default.ts +6 -2
- package/src/_vendor/zod-to-json-schema/parsers/nullable.ts +13 -5
- package/src/_vendor/zod-to-json-schema/parsers/optional.ts +14 -6
- package/src/_vendor/zod-to-json-schema/parsers/pipeline.ts +3 -2
- package/src/_vendor/zod-to-json-schema/parsers/promise.ts +6 -2
- package/src/_vendor/zod-to-json-schema/parsers/readonly.ts +2 -2
- package/src/auth/workload-identity-auth.ts +16 -5
- package/src/azure.ts +4 -1
- package/src/beta/realtime/internal-base.ts +43 -5
- package/src/beta/realtime/websocket.ts +10 -7
- package/src/beta/realtime/ws.ts +10 -7
- package/src/client.ts +80 -18
- package/src/helpers/audio.ts +18 -4
- package/src/helpers/zod.ts +16 -0
- package/src/internal/bedrock.ts +153 -0
- package/src/internal/provider.ts +60 -0
- package/src/internal/utils/log.ts +1 -0
- package/src/lib/AbstractChatCompletionRunner.ts +111 -45
- package/src/lib/AssistantStream.ts +5 -21
- package/src/lib/ChatCompletionRunner.ts +1 -1
- package/src/lib/ChatCompletionStream.ts +11 -15
- package/src/lib/ChatCompletionStreamingRunner.ts +1 -1
- package/src/lib/EventEmitter.ts +11 -2
- package/src/lib/EventStream.ts +20 -0
- package/src/lib/ResponsesParser.ts +18 -4
- package/src/lib/responses/ResponseAccumulator.ts +421 -0
- package/src/lib/responses/ResponseInputItems.ts +129 -0
- package/src/lib/responses/ResponseStream.ts +4 -93
- package/src/providers/bedrock/aws.ts +255 -0
- package/src/providers/bedrock.ts +33 -0
- package/src/realtime/internal-base.ts +90 -7
- package/src/realtime/websocket.ts +15 -13
- package/src/realtime/ws.ts +15 -13
- package/src/resources/beta/assistants.ts +12 -26
- package/src/resources/beta/beta.ts +330 -2
- package/src/resources/beta/index.ts +163 -0
- package/src/resources/beta/responses/index.ts +169 -0
- package/src/resources/beta/responses/input-items.ts +105 -0
- package/src/resources/beta/responses/input-tokens.ts +245 -0
- package/src/resources/beta/responses/internal-base.ts +117 -0
- package/src/resources/beta/responses/responses.ts +12632 -0
- package/src/resources/beta/responses/ws-base.ts +615 -0
- package/src/resources/beta/responses/ws.ts +38 -0
- package/src/resources/beta/responses.ts +3 -0
- package/src/resources/beta/threads/runs/runs.ts +6 -13
- package/src/resources/chat/completions/completions.ts +171 -14
- package/src/resources/completions.ts +5 -0
- package/src/resources/conversations/conversations.ts +21 -0
- package/src/resources/conversations/items.ts +56 -0
- package/src/resources/evals/runs/runs.ts +66 -143
- package/src/resources/graders/grader-models.ts +6 -13
- package/src/resources/realtime/calls.ts +2 -0
- package/src/resources/realtime/client-secrets.ts +7 -0
- package/src/resources/realtime/realtime.ts +12 -0
- package/src/resources/responses/input-tokens.ts +8 -0
- package/src/resources/responses/responses.ts +950 -15
- package/src/resources/shared.ts +23 -27
- package/src/resources/webhooks/api.md +1 -0
- package/src/resources/webhooks/webhooks.ts +65 -1
- package/src/version.ts +1 -1
- package/version.d.mts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { OpenAIError } from '../error';
|
|
2
2
|
import type OpenAI from '../index';
|
|
3
3
|
import type { RequestOptions } from '../internal/request-options';
|
|
4
|
+
import { uuid4 } from '../internal/utils/uuid';
|
|
4
5
|
import { isAutoParsableTool, parseChatCompletion } from '../lib/parser';
|
|
5
6
|
import type {
|
|
6
7
|
ChatCompletion,
|
|
@@ -8,12 +9,17 @@ import type {
|
|
|
8
9
|
ChatCompletionMessage,
|
|
9
10
|
ChatCompletionMessageFunctionToolCall,
|
|
10
11
|
ChatCompletionMessageParam,
|
|
12
|
+
ChatCompletionMessageToolCall,
|
|
11
13
|
ChatCompletionTool,
|
|
14
|
+
ChatCompletionToolMessageParam,
|
|
12
15
|
ParsedChatCompletion,
|
|
13
16
|
} from '../resources/chat/completions';
|
|
14
17
|
import type { CompletionUsage } from '../resources/completions';
|
|
15
|
-
import type { ChatCompletionToolRunnerParams } from './ChatCompletionRunner';
|
|
16
|
-
import type {
|
|
18
|
+
import type { ChatCompletionRunner, ChatCompletionToolRunnerParams } from './ChatCompletionRunner';
|
|
19
|
+
import type {
|
|
20
|
+
ChatCompletionStreamingRunner,
|
|
21
|
+
ChatCompletionStreamingToolRunnerParams,
|
|
22
|
+
} from './ChatCompletionStreamingRunner';
|
|
17
23
|
import { isAssistantMessage, isToolMessage } from './chatCompletionUtils';
|
|
18
24
|
import { BaseEvents, EventStream } from './EventStream';
|
|
19
25
|
import {
|
|
@@ -24,9 +30,35 @@ import {
|
|
|
24
30
|
} from './RunnableFunction';
|
|
25
31
|
|
|
26
32
|
const DEFAULT_MAX_CHAT_COMPLETIONS = 10;
|
|
33
|
+
|
|
34
|
+
function normalizeToolCallIds(chatCompletion: ChatCompletion): void {
|
|
35
|
+
for (const choice of chatCompletion.choices) {
|
|
36
|
+
for (const toolCall of choice.message.tool_calls ?? []) {
|
|
37
|
+
// Some OpenAI-compatible providers omit tool call IDs or return an empty string.
|
|
38
|
+
// Generate a unique ID before the completion is stored or emitted so the assistant
|
|
39
|
+
// tool call and its result message always reference the same value.
|
|
40
|
+
if (!toolCall.id) {
|
|
41
|
+
toolCall.id = `call_${uuid4()}`;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface ChatCompletionRunnerContext {
|
|
48
|
+
messages: ChatCompletionMessageParam[];
|
|
49
|
+
abort(): void;
|
|
50
|
+
}
|
|
51
|
+
|
|
27
52
|
export interface RunnerOptions extends RequestOptions {
|
|
28
53
|
/** How many requests to make before canceling. Default 10. */
|
|
29
54
|
maxChatCompletions?: number;
|
|
55
|
+
/**
|
|
56
|
+
* A callback that runs after each chat completion and after any tool calls from
|
|
57
|
+
* that completion have finished. The callback is awaited before the next
|
|
58
|
+
* request starts or before the runner ends. The runner's mutable `messages`
|
|
59
|
+
* array can be used to add context for the next request.
|
|
60
|
+
*/
|
|
61
|
+
afterCompletion?: (completion: ChatCompletion, runner: ChatCompletionRunnerContext) => void | Promise<void>;
|
|
30
62
|
}
|
|
31
63
|
|
|
32
64
|
export class AbstractChatCompletionRunner<
|
|
@@ -40,6 +72,7 @@ export class AbstractChatCompletionRunner<
|
|
|
40
72
|
this: AbstractChatCompletionRunner<AbstractChatCompletionRunnerEvents, ParsedT>,
|
|
41
73
|
chatCompletion: ParsedChatCompletion<ParsedT>,
|
|
42
74
|
): ParsedChatCompletion<ParsedT> {
|
|
75
|
+
normalizeToolCallIds(chatCompletion);
|
|
43
76
|
this._chatCompletions.push(chatCompletion);
|
|
44
77
|
this._emit('chatCompletion', chatCompletion);
|
|
45
78
|
const message = chatCompletion.choices[0]?.message;
|
|
@@ -113,7 +146,7 @@ export class AbstractChatCompletionRunner<
|
|
|
113
146
|
}
|
|
114
147
|
|
|
115
148
|
/**
|
|
116
|
-
* @returns a promise that resolves with the
|
|
149
|
+
* @returns a promise that resolves with the final assistant ChatCompletionMessage response,
|
|
117
150
|
* or rejects if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.
|
|
118
151
|
*/
|
|
119
152
|
async finalMessage(): Promise<ChatCompletionMessage> {
|
|
@@ -230,11 +263,7 @@ export class AbstractChatCompletionRunner<
|
|
|
230
263
|
params: ChatCompletionCreateParams,
|
|
231
264
|
options?: RequestOptions,
|
|
232
265
|
): Promise<ParsedChatCompletion<ParsedT>> {
|
|
233
|
-
|
|
234
|
-
if (signal) {
|
|
235
|
-
if (signal.aborted) this.controller.abort();
|
|
236
|
-
signal.addEventListener('abort', () => this.controller.abort());
|
|
237
|
-
}
|
|
266
|
+
this._listenForAbort(options?.signal);
|
|
238
267
|
this.#validateParams(params);
|
|
239
268
|
|
|
240
269
|
const chatCompletion = await client.chat.completions.create(
|
|
@@ -261,13 +290,14 @@ export class AbstractChatCompletionRunner<
|
|
|
261
290
|
params:
|
|
262
291
|
| ChatCompletionToolRunnerParams<FunctionsArgs>
|
|
263
292
|
| ChatCompletionStreamingToolRunnerParams<FunctionsArgs>,
|
|
293
|
+
runner: ChatCompletionRunner<any> | ChatCompletionStreamingRunner<any>,
|
|
264
294
|
options?: RunnerOptions,
|
|
265
295
|
) {
|
|
266
296
|
const role = 'tool' as const;
|
|
267
297
|
const { tool_choice = 'auto', stream, ...restParams } = params;
|
|
268
298
|
const singleFunctionToCall =
|
|
269
299
|
typeof tool_choice !== 'string' && tool_choice.type === 'function' && tool_choice?.function?.name;
|
|
270
|
-
const { maxChatCompletions = DEFAULT_MAX_CHAT_COMPLETIONS } = options || {};
|
|
300
|
+
const { maxChatCompletions = DEFAULT_MAX_CHAT_COMPLETIONS, afterCompletion } = options || {};
|
|
271
301
|
|
|
272
302
|
// TODO(someday): clean this logic up
|
|
273
303
|
const inputTools = params.tools.map((tool): RunnableToolFunction<any> => {
|
|
@@ -320,6 +350,54 @@ export class AbstractChatCompletionRunner<
|
|
|
320
350
|
this._addMessage(message, false);
|
|
321
351
|
}
|
|
322
352
|
|
|
353
|
+
type ToolCallResult = {
|
|
354
|
+
message: ChatCompletionToolMessageParam | undefined;
|
|
355
|
+
functionCalled: boolean;
|
|
356
|
+
};
|
|
357
|
+
|
|
358
|
+
const runToolCall = async (toolCall: ChatCompletionMessageToolCall): Promise<ToolCallResult> => {
|
|
359
|
+
if (toolCall.type !== 'function') return { message: undefined, functionCalled: false };
|
|
360
|
+
|
|
361
|
+
const tool_call_id = toolCall.id;
|
|
362
|
+
const { name, arguments: args } = toolCall.function;
|
|
363
|
+
const fn = functionsByName[name];
|
|
364
|
+
|
|
365
|
+
if (!fn) {
|
|
366
|
+
const content = `Invalid tool_call: ${JSON.stringify(name)}. Available options are: ${Object.keys(
|
|
367
|
+
functionsByName,
|
|
368
|
+
)
|
|
369
|
+
.map((name) => JSON.stringify(name))
|
|
370
|
+
.join(', ')}. Please try again`;
|
|
371
|
+
|
|
372
|
+
return { message: { role, tool_call_id, content }, functionCalled: false };
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
if (singleFunctionToCall && singleFunctionToCall !== name) {
|
|
376
|
+
const content = `Invalid tool_call: ${JSON.stringify(name)}. ${JSON.stringify(
|
|
377
|
+
singleFunctionToCall,
|
|
378
|
+
)} requested. Please try again`;
|
|
379
|
+
|
|
380
|
+
return { message: { role, tool_call_id, content }, functionCalled: false };
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
let rawContent: unknown;
|
|
384
|
+
if (isRunnableFunctionWithParse(fn)) {
|
|
385
|
+
let parsed;
|
|
386
|
+
try {
|
|
387
|
+
parsed = await fn.parse(args);
|
|
388
|
+
} catch (error) {
|
|
389
|
+
const content = error instanceof Error ? error.message : String(error);
|
|
390
|
+
return { message: { role, tool_call_id, content }, functionCalled: false };
|
|
391
|
+
}
|
|
392
|
+
rawContent = await fn.function(parsed, runner);
|
|
393
|
+
} else {
|
|
394
|
+
rawContent = await fn.function(args, runner);
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
const content = this.#stringifyFunctionCallResult(rawContent);
|
|
398
|
+
return { message: { role, tool_call_id, content }, functionCalled: true };
|
|
399
|
+
};
|
|
400
|
+
|
|
323
401
|
for (let i = 0; i < maxChatCompletions; ++i) {
|
|
324
402
|
const chatCompletion: ChatCompletion = await this._createChatCompletion(
|
|
325
403
|
client,
|
|
@@ -336,51 +414,39 @@ export class AbstractChatCompletionRunner<
|
|
|
336
414
|
throw new OpenAIError(`missing message in ChatCompletion response`);
|
|
337
415
|
}
|
|
338
416
|
if (!message.tool_calls?.length) {
|
|
417
|
+
await afterCompletion?.(chatCompletion, runner);
|
|
339
418
|
return;
|
|
340
419
|
}
|
|
341
420
|
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
const fn = functionsByName[name];
|
|
347
|
-
|
|
348
|
-
if (!fn) {
|
|
349
|
-
const content = `Invalid tool_call: ${JSON.stringify(name)}. Available options are: ${Object.keys(
|
|
350
|
-
functionsByName,
|
|
351
|
-
)
|
|
352
|
-
.map((name) => JSON.stringify(name))
|
|
353
|
-
.join(', ')}. Please try again`;
|
|
354
|
-
|
|
355
|
-
this._addMessage({ role, tool_call_id, content });
|
|
356
|
-
continue;
|
|
357
|
-
} else if (singleFunctionToCall && singleFunctionToCall !== name) {
|
|
358
|
-
const content = `Invalid tool_call: ${JSON.stringify(name)}. ${JSON.stringify(
|
|
359
|
-
singleFunctionToCall,
|
|
360
|
-
)} requested. Please try again`;
|
|
361
|
-
|
|
362
|
-
this._addMessage({ role, tool_call_id, content });
|
|
363
|
-
continue;
|
|
364
|
-
}
|
|
421
|
+
if (singleFunctionToCall || params.parallel_tool_calls === false) {
|
|
422
|
+
for (const toolCall of message.tool_calls) {
|
|
423
|
+
const result = await runToolCall(toolCall);
|
|
424
|
+
if (result.message) this._addMessage(result.message);
|
|
365
425
|
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
const content = error instanceof Error ? error.message : String(error);
|
|
371
|
-
this._addMessage({ role, tool_call_id, content });
|
|
372
|
-
continue;
|
|
426
|
+
if (singleFunctionToCall && result.functionCalled) {
|
|
427
|
+
await afterCompletion?.(chatCompletion, runner);
|
|
428
|
+
return;
|
|
429
|
+
}
|
|
373
430
|
}
|
|
431
|
+
} else {
|
|
432
|
+
const results = await Promise.allSettled(message.tool_calls.map(runToolCall));
|
|
374
433
|
|
|
375
|
-
//
|
|
376
|
-
|
|
377
|
-
const
|
|
378
|
-
|
|
434
|
+
// Wait for every concurrently running tool to settle before surfacing an
|
|
435
|
+
// error so tool side effects cannot continue after the runner has ended.
|
|
436
|
+
for (const result of results) {
|
|
437
|
+
if (result.status === 'rejected') throw result.reason;
|
|
438
|
+
}
|
|
379
439
|
|
|
380
|
-
|
|
381
|
-
|
|
440
|
+
// Promise.allSettled preserves input order, so the next request receives
|
|
441
|
+
// tool result messages in the same order as the assistant's tool calls.
|
|
442
|
+
for (const result of results) {
|
|
443
|
+
if (result.status === 'fulfilled' && result.value.message) {
|
|
444
|
+
this._addMessage(result.value.message);
|
|
445
|
+
}
|
|
382
446
|
}
|
|
383
447
|
}
|
|
448
|
+
|
|
449
|
+
await afterCompletion?.(chatCompletion, runner);
|
|
384
450
|
}
|
|
385
451
|
|
|
386
452
|
return;
|
|
@@ -165,11 +165,7 @@ export class AssistantStream
|
|
|
165
165
|
readableStream: ReadableStream,
|
|
166
166
|
options?: RequestOptions,
|
|
167
167
|
): Promise<Run> {
|
|
168
|
-
|
|
169
|
-
if (signal) {
|
|
170
|
-
if (signal.aborted) this.controller.abort();
|
|
171
|
-
signal.addEventListener('abort', () => this.controller.abort());
|
|
172
|
-
}
|
|
168
|
+
this._listenForAbort(options?.signal);
|
|
173
169
|
this._connected();
|
|
174
170
|
const stream = Stream.fromReadableStream<AssistantStreamEvent>(readableStream, this.controller);
|
|
175
171
|
for await (const event of stream) {
|
|
@@ -208,11 +204,7 @@ export class AssistantStream
|
|
|
208
204
|
params: RunSubmitToolOutputsParamsStream,
|
|
209
205
|
options?: RequestOptions,
|
|
210
206
|
): Promise<Run> {
|
|
211
|
-
|
|
212
|
-
if (signal) {
|
|
213
|
-
if (signal.aborted) this.controller.abort();
|
|
214
|
-
signal.addEventListener('abort', () => this.controller.abort());
|
|
215
|
-
}
|
|
207
|
+
this._listenForAbort(options?.signal);
|
|
216
208
|
|
|
217
209
|
const body: RunSubmitToolOutputsParamsStreaming = { ...params, stream: true };
|
|
218
210
|
const stream = await run.submitToolOutputs(runId, body, {
|
|
@@ -303,11 +295,7 @@ export class AssistantStream
|
|
|
303
295
|
params: ThreadCreateAndRunParamsBase,
|
|
304
296
|
options?: RequestOptions,
|
|
305
297
|
): Promise<Run> {
|
|
306
|
-
|
|
307
|
-
if (signal) {
|
|
308
|
-
if (signal.aborted) this.controller.abort();
|
|
309
|
-
signal.addEventListener('abort', () => this.controller.abort());
|
|
310
|
-
}
|
|
298
|
+
this._listenForAbort(options?.signal);
|
|
311
299
|
|
|
312
300
|
const body: RunCreateParamsStreaming = { ...params, stream: true };
|
|
313
301
|
const stream = await thread.createAndRun(body, { ...options, signal: this.controller.signal });
|
|
@@ -330,11 +318,7 @@ export class AssistantStream
|
|
|
330
318
|
params: RunCreateParamsBase,
|
|
331
319
|
options?: RequestOptions,
|
|
332
320
|
): Promise<Run> {
|
|
333
|
-
|
|
334
|
-
if (signal) {
|
|
335
|
-
if (signal.aborted) this.controller.abort();
|
|
336
|
-
signal.addEventListener('abort', () => this.controller.abort());
|
|
337
|
-
}
|
|
321
|
+
this._listenForAbort(options?.signal);
|
|
338
322
|
|
|
339
323
|
const body: RunCreateParamsStreaming = { ...params, stream: true };
|
|
340
324
|
const stream = await run.create(threadId, body, { ...options, signal: this.controller.signal });
|
|
@@ -702,7 +686,7 @@ export class AssistantStream
|
|
|
702
686
|
|
|
703
687
|
const accEntry = accValue[index];
|
|
704
688
|
if (accEntry == null) {
|
|
705
|
-
accValue
|
|
689
|
+
accValue[index] = deltaEntry;
|
|
706
690
|
} else {
|
|
707
691
|
accValue[index] = this.accumulateDelta(accEntry, deltaEntry);
|
|
708
692
|
}
|
|
@@ -37,7 +37,7 @@ export class ChatCompletionRunner<ParsedT = null> extends AbstractChatCompletion
|
|
|
37
37
|
...options,
|
|
38
38
|
headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runTools' },
|
|
39
39
|
};
|
|
40
|
-
runner._run(() => runner._runTools(client, params, opts));
|
|
40
|
+
runner._run(() => runner._runTools(client, params, runner, opts));
|
|
41
41
|
return runner;
|
|
42
42
|
}
|
|
43
43
|
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
import OpenAI from '../index';
|
|
9
9
|
import { RequestOptions } from '../internal/request-options';
|
|
10
10
|
import { type ReadableStream } from '../internal/shim-types';
|
|
11
|
+
import { uuid4 } from '../internal/utils/uuid';
|
|
11
12
|
import {
|
|
12
13
|
AutoParseableResponseFormat,
|
|
13
14
|
hasAutoParseableInput,
|
|
@@ -373,11 +374,7 @@ export class ChatCompletionStream<ParsedT = null>
|
|
|
373
374
|
options?: RequestOptions,
|
|
374
375
|
): Promise<ParsedChatCompletion<ParsedT>> {
|
|
375
376
|
super._createChatCompletion;
|
|
376
|
-
|
|
377
|
-
if (signal) {
|
|
378
|
-
if (signal.aborted) this.controller.abort();
|
|
379
|
-
signal.addEventListener('abort', () => this.controller.abort());
|
|
380
|
-
}
|
|
377
|
+
this._listenForAbort(options?.signal);
|
|
381
378
|
this.#beginRequest();
|
|
382
379
|
|
|
383
380
|
const stream = await client.chat.completions.create(
|
|
@@ -398,11 +395,7 @@ export class ChatCompletionStream<ParsedT = null>
|
|
|
398
395
|
readableStream: ReadableStream,
|
|
399
396
|
options?: RequestOptions,
|
|
400
397
|
): Promise<ChatCompletion> {
|
|
401
|
-
|
|
402
|
-
if (signal) {
|
|
403
|
-
if (signal.aborted) this.controller.abort();
|
|
404
|
-
signal.addEventListener('abort', () => this.controller.abort());
|
|
405
|
-
}
|
|
398
|
+
this._listenForAbort(options?.signal);
|
|
406
399
|
this.#beginRequest();
|
|
407
400
|
this._connected();
|
|
408
401
|
const stream = Stream.fromReadableStream<ChatCompletionChunk>(readableStream, this.controller);
|
|
@@ -511,7 +504,8 @@ export class ChatCompletionStream<ParsedT = null>
|
|
|
511
504
|
choice.message.content = (choice.message.content || '') + content;
|
|
512
505
|
|
|
513
506
|
if (!choice.message.refusal && this.#getAutoParseableResponseFormat()) {
|
|
514
|
-
|
|
507
|
+
// The partial parser does not accept whitespace-only input.
|
|
508
|
+
choice.message.parsed = choice.message.content.trim() ? partialParse(choice.message.content) : null;
|
|
515
509
|
}
|
|
516
510
|
}
|
|
517
511
|
|
|
@@ -664,9 +658,6 @@ function finalizeChatCompletion<ParsedT>(
|
|
|
664
658
|
tool_calls: tool_calls.map((tool_call, i) => {
|
|
665
659
|
const { function: fn, type, id, ...toolRest } = tool_call;
|
|
666
660
|
const { arguments: args, name, ...fnRest } = fn || {};
|
|
667
|
-
if (id == null) {
|
|
668
|
-
throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].id\n${str(snapshot)}`);
|
|
669
|
-
}
|
|
670
661
|
if (type == null) {
|
|
671
662
|
throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].type\n${str(snapshot)}`);
|
|
672
663
|
}
|
|
@@ -681,7 +672,12 @@ function finalizeChatCompletion<ParsedT>(
|
|
|
681
672
|
);
|
|
682
673
|
}
|
|
683
674
|
|
|
684
|
-
return {
|
|
675
|
+
return {
|
|
676
|
+
...toolRest,
|
|
677
|
+
id: id || `call_${uuid4()}`,
|
|
678
|
+
type,
|
|
679
|
+
function: { ...fnRest, name, arguments: args },
|
|
680
|
+
};
|
|
685
681
|
}),
|
|
686
682
|
},
|
|
687
683
|
};
|
|
@@ -44,7 +44,7 @@ export class ChatCompletionStreamingRunner<ParsedT = null>
|
|
|
44
44
|
...options,
|
|
45
45
|
headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runTools' },
|
|
46
46
|
};
|
|
47
|
-
runner._run(() => runner._runTools(client, params, opts));
|
|
47
|
+
runner._run(() => runner._runTools(client, params, runner, opts));
|
|
48
48
|
return runner;
|
|
49
49
|
}
|
|
50
50
|
}
|
package/src/lib/EventEmitter.ts
CHANGED
|
@@ -74,8 +74,17 @@ export class EventEmitter<EventTypes extends Record<string, (...args: any) => an
|
|
|
74
74
|
: EventParameters<EventTypes, Event>
|
|
75
75
|
> {
|
|
76
76
|
return new Promise((resolve, reject) => {
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
const onError = (error: unknown) => {
|
|
78
|
+
this.off(event, onEvent as any);
|
|
79
|
+
reject(error);
|
|
80
|
+
};
|
|
81
|
+
const onEvent = (value: unknown) => {
|
|
82
|
+
if (event !== 'error') this.off('error', onError as any);
|
|
83
|
+
resolve(value as any);
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
if (event !== 'error') this.once('error', onError as any);
|
|
87
|
+
this.once(event, onEvent as any);
|
|
79
88
|
});
|
|
80
89
|
}
|
|
81
90
|
|
package/src/lib/EventStream.ts
CHANGED
|
@@ -14,6 +14,7 @@ export class EventStream<EventTypes extends BaseEvents> {
|
|
|
14
14
|
#listeners: {
|
|
15
15
|
[Event in keyof EventTypes]?: EventListeners<EventTypes, Event>;
|
|
16
16
|
} = {};
|
|
17
|
+
#abortListeners: Array<{ signal: AbortSignal; listener: () => void }> = [];
|
|
17
18
|
|
|
18
19
|
#ended = false;
|
|
19
20
|
#errored = false;
|
|
@@ -72,6 +73,24 @@ export class EventStream<EventTypes extends BaseEvents> {
|
|
|
72
73
|
this.controller.abort();
|
|
73
74
|
}
|
|
74
75
|
|
|
76
|
+
protected _listenForAbort(signal: AbortSignal | null | undefined) {
|
|
77
|
+
if (!signal || this.ended) return;
|
|
78
|
+
if (signal.aborted) {
|
|
79
|
+
this.controller.abort();
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const listener = () => this.controller.abort();
|
|
84
|
+
signal.addEventListener('abort', listener, { once: true });
|
|
85
|
+
this.#abortListeners.push({ signal, listener });
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
#removeAbortListeners() {
|
|
89
|
+
for (const { signal, listener } of this.#abortListeners.splice(0)) {
|
|
90
|
+
signal.removeEventListener('abort', listener);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
75
94
|
/**
|
|
76
95
|
* Adds the listener function to the end of the listeners array for the event.
|
|
77
96
|
* No checks are made to see if the listener has already been added. Multiple calls passing
|
|
@@ -177,6 +196,7 @@ export class EventStream<EventTypes extends BaseEvents> {
|
|
|
177
196
|
}
|
|
178
197
|
|
|
179
198
|
if (event === 'end') {
|
|
199
|
+
this.#removeAbortListeners();
|
|
180
200
|
this.#ended = true;
|
|
181
201
|
this.#resolveEndPromise();
|
|
182
202
|
}
|
|
@@ -31,7 +31,7 @@ export function maybeParseResponse<
|
|
|
31
31
|
ParsedT = Params extends null ? null : ExtractParsedContentFromParams<NonNullable<Params>>,
|
|
32
32
|
>(response: Response, params: Params): ParsedResponse<ParsedT> {
|
|
33
33
|
if (!params || !hasAutoParseableInput(params)) {
|
|
34
|
-
|
|
34
|
+
const parsed = {
|
|
35
35
|
...response,
|
|
36
36
|
output_parsed: null,
|
|
37
37
|
output: response.output.map((item) => {
|
|
@@ -55,6 +55,12 @@ export function maybeParseResponse<
|
|
|
55
55
|
}
|
|
56
56
|
}),
|
|
57
57
|
};
|
|
58
|
+
|
|
59
|
+
if (needsOutputText(response, parsed)) {
|
|
60
|
+
addOutputText(parsed as Response);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return parsed;
|
|
58
64
|
}
|
|
59
65
|
|
|
60
66
|
return parseResponse(response, params);
|
|
@@ -64,12 +70,13 @@ export function parseResponse<
|
|
|
64
70
|
Params extends ResponseCreateParamsBase,
|
|
65
71
|
ParsedT = ExtractParsedContentFromParams<Params>,
|
|
66
72
|
>(response: Response, params: Params): ParsedResponse<ParsedT> {
|
|
73
|
+
const shouldParse = !response.status || response.status === 'completed';
|
|
67
74
|
const output: Array<ParsedResponseOutputItem<ParsedT>> = response.output.map(
|
|
68
75
|
(item): ParsedResponseOutputItem<ParsedT> => {
|
|
69
76
|
if (item.type === 'function_call') {
|
|
70
77
|
return {
|
|
71
78
|
...item,
|
|
72
|
-
parsed_arguments: parseToolCall(params, item),
|
|
79
|
+
parsed_arguments: shouldParse ? parseToolCall(params, item) : null,
|
|
73
80
|
};
|
|
74
81
|
}
|
|
75
82
|
if (item.type === 'message') {
|
|
@@ -77,7 +84,7 @@ export function parseResponse<
|
|
|
77
84
|
if (content.type === 'output_text') {
|
|
78
85
|
return {
|
|
79
86
|
...content,
|
|
80
|
-
parsed: parseTextFormat(params, content.text),
|
|
87
|
+
parsed: shouldParse ? parseTextFormat(params, content.text) : null,
|
|
81
88
|
};
|
|
82
89
|
}
|
|
83
90
|
|
|
@@ -95,7 +102,7 @@ export function parseResponse<
|
|
|
95
102
|
);
|
|
96
103
|
|
|
97
104
|
const parsed: Omit<ParsedResponse<ParsedT>, 'output_parsed'> = Object.assign({}, response, { output });
|
|
98
|
-
if (
|
|
105
|
+
if (needsOutputText(response, parsed)) {
|
|
99
106
|
addOutputText(parsed);
|
|
100
107
|
}
|
|
101
108
|
|
|
@@ -247,6 +254,13 @@ export function validateInputTools(tools: ChatCompletionTool[] | undefined) {
|
|
|
247
254
|
}
|
|
248
255
|
}
|
|
249
256
|
|
|
257
|
+
function needsOutputText(
|
|
258
|
+
response: Response,
|
|
259
|
+
target: { output_text?: Response['output_text'] | null },
|
|
260
|
+
): boolean {
|
|
261
|
+
return !Object.getOwnPropertyDescriptor(response, 'output_text') || target.output_text == null;
|
|
262
|
+
}
|
|
263
|
+
|
|
250
264
|
export function addOutputText(rsp: Response): void {
|
|
251
265
|
const texts: string[] = [];
|
|
252
266
|
for (const output of rsp.output) {
|