From 27389cd377ce9a109a4aa25f78f70c36ca62de14 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 20 Dec 2024 23:02:12 +0000 Subject: [PATCH] refactor(internal): use constructor to deserialize json (#66) --- .../src/main/kotlin/com/openai/core/Utils.kt | 4 +- .../kotlin/com/openai/errors/OpenAIError.kt | 9 +- .../main/kotlin/com/openai/models/Batch.kt | 141 +++++---- .../com/openai/models/BatchCreateParams.kt | 26 +- .../kotlin/com/openai/models/BatchError.kt | 26 +- .../kotlin/com/openai/models/BatchListPage.kt | 12 +- .../com/openai/models/BatchListPageAsync.kt | 12 +- .../com/openai/models/BatchRequestCounts.kt | 22 +- .../com/openai/models/ChatCompletion.kt | 99 +++--- .../ChatCompletionAssistantMessageParam.kt | 70 ++--- .../com/openai/models/ChatCompletionAudio.kt | 28 +- .../openai/models/ChatCompletionAudioParam.kt | 17 +- .../com/openai/models/ChatCompletionChunk.kt | 201 ++++++------- .../models/ChatCompletionContentPartImage.kt | 33 +- .../ChatCompletionContentPartInputAudio.kt | 35 +-- .../ChatCompletionContentPartRefusal.kt | 17 +- .../models/ChatCompletionContentPartText.kt | 15 +- .../models/ChatCompletionCreateParams.kt | 128 ++++---- .../ChatCompletionDeveloperMessageParam.kt | 20 +- .../ChatCompletionFunctionCallOption.kt | 12 +- .../ChatCompletionFunctionMessageParam.kt | 21 +- .../openai/models/ChatCompletionMessage.kt | 59 ++-- .../models/ChatCompletionMessageToolCall.kt | 39 ++- .../models/ChatCompletionNamedToolChoice.kt | 29 +- .../models/ChatCompletionPredictionContent.kt | 16 +- .../models/ChatCompletionStreamOptions.kt | 14 +- .../ChatCompletionSystemMessageParam.kt | 20 +- .../models/ChatCompletionTokenLogprob.kt | 54 ++-- .../com/openai/models/ChatCompletionTool.kt | 17 +- .../models/ChatCompletionToolMessageParam.kt | 22 +- .../models/ChatCompletionUserMessageParam.kt | 20 +- .../kotlin/com/openai/models/Completion.kt | 45 ++- .../com/openai/models/CompletionChoice.kt | 63 ++-- .../openai/models/CompletionCreateParams.kt | 74 +++-- .../com/openai/models/CompletionUsage.kt | 86 +++--- .../openai/models/CreateEmbeddingResponse.kt | 45 ++- .../kotlin/com/openai/models/Embedding.kt | 23 +- .../openai/models/EmbeddingCreateParams.kt | 25 +- .../kotlin/com/openai/models/ErrorObject.kt | 26 +- .../kotlin/com/openai/models/FileDeleted.kt | 23 +- .../kotlin/com/openai/models/FileListPage.kt | 12 +- .../com/openai/models/FileListPageAsync.kt | 12 +- .../kotlin/com/openai/models/FileObject.kt | 51 ++-- .../kotlin/com/openai/models/FineTuningJob.kt | 255 ++++++++-------- .../openai/models/FineTuningJobCheckpoint.kt | 95 +++--- .../models/FineTuningJobCheckpointListPage.kt | 13 +- .../FineTuningJobCheckpointListPageAsync.kt | 13 +- .../models/FineTuningJobCreateParams.kt | 151 +++++----- .../com/openai/models/FineTuningJobEvent.kt | 41 ++- .../models/FineTuningJobListEventsPage.kt | 13 +- .../FineTuningJobListEventsPageAsync.kt | 13 +- .../openai/models/FineTuningJobListPage.kt | 12 +- .../models/FineTuningJobListPageAsync.kt | 12 +- .../models/FineTuningJobWandbIntegration.kt | 30 +- .../FineTuningJobWandbIntegrationObject.kt | 17 +- .../com/openai/models/FunctionDefinition.kt | 30 +- .../com/openai/models/FunctionParameters.kt | 8 +- .../main/kotlin/com/openai/models/Image.kt | 24 +- .../com/openai/models/ImageGenerateParams.kt | 38 ++- .../com/openai/models/ImagesResponse.kt | 20 +- .../main/kotlin/com/openai/models/Model.kt | 29 +- .../kotlin/com/openai/models/ModelDeleted.kt | 24 +- .../kotlin/com/openai/models/ModelListPage.kt | 15 +- .../com/openai/models/ModelListPageAsync.kt | 15 +- .../kotlin/com/openai/models/Moderation.kt | 284 +++++++++--------- .../openai/models/ModerationCreateParams.kt | 16 +- .../openai/models/ModerationCreateResponse.kt | 22 +- .../openai/models/ModerationImageUrlInput.kt | 27 +- .../com/openai/models/ModerationTextInput.kt | 15 +- .../openai/models/ResponseFormatJsonObject.kt | 11 +- .../openai/models/ResponseFormatJsonSchema.kt | 53 ++-- .../com/openai/models/ResponseFormatText.kt | 11 +- .../main/kotlin/com/openai/models/Upload.kt | 57 ++-- .../com/openai/models/UploadCompleteParams.kt | 16 +- .../com/openai/models/UploadCreateParams.kt | 22 +- .../kotlin/com/openai/models/UploadPart.kt | 29 +- 76 files changed, 1476 insertions(+), 1678 deletions(-) diff --git a/openai-java-core/src/main/kotlin/com/openai/core/Utils.kt b/openai-java-core/src/main/kotlin/com/openai/core/Utils.kt index 6601f8ef..e2cfee07 100644 --- a/openai-java-core/src/main/kotlin/com/openai/core/Utils.kt +++ b/openai-java-core/src/main/kotlin/com/openai/core/Utils.kt @@ -16,7 +16,9 @@ internal fun List.toImmutable(): List = @JvmSynthetic internal fun Map.toImmutable(): Map = - if (isEmpty()) Collections.emptyMap() else Collections.unmodifiableMap(toMap()) + if (isEmpty()) immutableEmptyMap() else Collections.unmodifiableMap(toMap()) + +@JvmSynthetic internal fun immutableEmptyMap(): Map = Collections.emptyMap() @JvmSynthetic internal fun , V> SortedMap.toImmutable(): SortedMap = diff --git a/openai-java-core/src/main/kotlin/com/openai/errors/OpenAIError.kt b/openai-java-core/src/main/kotlin/com/openai/errors/OpenAIError.kt index aefc716c..e4cbac10 100644 --- a/openai-java-core/src/main/kotlin/com/openai/errors/OpenAIError.kt +++ b/openai-java-core/src/main/kotlin/com/openai/errors/OpenAIError.kt @@ -4,21 +4,23 @@ package com.openai.errors import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter -import com.fasterxml.jackson.databind.annotation.JsonDeserialize +import com.fasterxml.jackson.annotation.JsonCreator import com.openai.core.ExcludeMissing import com.openai.core.JsonValue import com.openai.core.NoAutoDetect +import com.openai.core.immutableEmptyMap import com.openai.core.toImmutable import java.util.Objects -@JsonDeserialize(builder = OpenAIError.Builder::class) @NoAutoDetect class OpenAIError +@JsonCreator private constructor( @JsonAnyGetter @ExcludeMissing + @JsonAnySetter @get:JvmName("additionalProperties") - val additionalProperties: Map, + val additionalProperties: Map = immutableEmptyMap(), ) { fun toBuilder() = Builder().from(this) @@ -42,7 +44,6 @@ private constructor( putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { additionalProperties.put(key, value) } diff --git a/openai-java-core/src/main/kotlin/com/openai/models/Batch.kt b/openai-java-core/src/main/kotlin/com/openai/models/Batch.kt index df7d101c..e9f188af 100644 --- a/openai-java-core/src/main/kotlin/com/openai/models/Batch.kt +++ b/openai-java-core/src/main/kotlin/com/openai/models/Batch.kt @@ -6,43 +6,79 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.openai.core.Enum import com.openai.core.ExcludeMissing import com.openai.core.JsonField import com.openai.core.JsonMissing import com.openai.core.JsonValue import com.openai.core.NoAutoDetect +import com.openai.core.immutableEmptyMap import com.openai.core.toImmutable import com.openai.errors.OpenAIInvalidDataException import java.util.Objects import java.util.Optional -@JsonDeserialize(builder = Batch.Builder::class) @NoAutoDetect class Batch +@JsonCreator private constructor( - private val id: JsonField, - private val object_: JsonField, - private val endpoint: JsonField, - private val errors: JsonField, - private val inputFileId: JsonField, - private val completionWindow: JsonField, - private val status: JsonField, - private val outputFileId: JsonField, - private val errorFileId: JsonField, - private val createdAt: JsonField, - private val inProgressAt: JsonField, - private val expiresAt: JsonField, - private val finalizingAt: JsonField, - private val completedAt: JsonField, - private val failedAt: JsonField, - private val expiredAt: JsonField, - private val cancellingAt: JsonField, - private val cancelledAt: JsonField, - private val requestCounts: JsonField, - private val metadata: JsonValue, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("object") + @ExcludeMissing + private val object_: JsonField = JsonMissing.of(), + @JsonProperty("endpoint") + @ExcludeMissing + private val endpoint: JsonField = JsonMissing.of(), + @JsonProperty("errors") + @ExcludeMissing + private val errors: JsonField = JsonMissing.of(), + @JsonProperty("input_file_id") + @ExcludeMissing + private val inputFileId: JsonField = JsonMissing.of(), + @JsonProperty("completion_window") + @ExcludeMissing + private val completionWindow: JsonField = JsonMissing.of(), + @JsonProperty("status") + @ExcludeMissing + private val status: JsonField = JsonMissing.of(), + @JsonProperty("output_file_id") + @ExcludeMissing + private val outputFileId: JsonField = JsonMissing.of(), + @JsonProperty("error_file_id") + @ExcludeMissing + private val errorFileId: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("in_progress_at") + @ExcludeMissing + private val inProgressAt: JsonField = JsonMissing.of(), + @JsonProperty("expires_at") + @ExcludeMissing + private val expiresAt: JsonField = JsonMissing.of(), + @JsonProperty("finalizing_at") + @ExcludeMissing + private val finalizingAt: JsonField = JsonMissing.of(), + @JsonProperty("completed_at") + @ExcludeMissing + private val completedAt: JsonField = JsonMissing.of(), + @JsonProperty("failed_at") + @ExcludeMissing + private val failedAt: JsonField = JsonMissing.of(), + @JsonProperty("expired_at") + @ExcludeMissing + private val expiredAt: JsonField = JsonMissing.of(), + @JsonProperty("cancelling_at") + @ExcludeMissing + private val cancellingAt: JsonField = JsonMissing.of(), + @JsonProperty("cancelled_at") + @ExcludeMissing + private val cancelledAt: JsonField = JsonMissing.of(), + @JsonProperty("request_counts") + @ExcludeMissing + private val requestCounts: JsonField = JsonMissing.of(), + @JsonProperty("metadata") @ExcludeMissing private val metadata: JsonValue = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { fun id(): String = id.getRequired("id") @@ -257,36 +293,28 @@ private constructor( fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** The object type, which is always `batch`. */ fun object_(object_: Object) = object_(JsonField.of(object_)) /** The object type, which is always `batch`. */ - @JsonProperty("object") - @ExcludeMissing fun object_(object_: JsonField) = apply { this.object_ = object_ } /** The OpenAI API endpoint used by the batch. */ fun endpoint(endpoint: String) = endpoint(JsonField.of(endpoint)) /** The OpenAI API endpoint used by the batch. */ - @JsonProperty("endpoint") - @ExcludeMissing fun endpoint(endpoint: JsonField) = apply { this.endpoint = endpoint } fun errors(errors: Errors) = errors(JsonField.of(errors)) - @JsonProperty("errors") - @ExcludeMissing fun errors(errors: JsonField) = apply { this.errors = errors } /** The ID of the input file for the batch. */ fun inputFileId(inputFileId: String) = inputFileId(JsonField.of(inputFileId)) /** The ID of the input file for the batch. */ - @JsonProperty("input_file_id") - @ExcludeMissing fun inputFileId(inputFileId: JsonField) = apply { this.inputFileId = inputFileId } /** The time frame within which the batch should be processed. */ @@ -294,8 +322,6 @@ private constructor( completionWindow(JsonField.of(completionWindow)) /** The time frame within which the batch should be processed. */ - @JsonProperty("completion_window") - @ExcludeMissing fun completionWindow(completionWindow: JsonField) = apply { this.completionWindow = completionWindow } @@ -304,16 +330,12 @@ private constructor( fun status(status: Status) = status(JsonField.of(status)) /** The current status of the batch. */ - @JsonProperty("status") - @ExcludeMissing fun status(status: JsonField) = apply { this.status = status } /** The ID of the file containing the outputs of successfully executed requests. */ fun outputFileId(outputFileId: String) = outputFileId(JsonField.of(outputFileId)) /** The ID of the file containing the outputs of successfully executed requests. */ - @JsonProperty("output_file_id") - @ExcludeMissing fun outputFileId(outputFileId: JsonField) = apply { this.outputFileId = outputFileId } @@ -322,80 +344,60 @@ private constructor( fun errorFileId(errorFileId: String) = errorFileId(JsonField.of(errorFileId)) /** The ID of the file containing the outputs of requests with errors. */ - @JsonProperty("error_file_id") - @ExcludeMissing fun errorFileId(errorFileId: JsonField) = apply { this.errorFileId = errorFileId } /** The Unix timestamp (in seconds) for when the batch was created. */ fun createdAt(createdAt: Long) = createdAt(JsonField.of(createdAt)) /** The Unix timestamp (in seconds) for when the batch was created. */ - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } /** The Unix timestamp (in seconds) for when the batch started processing. */ fun inProgressAt(inProgressAt: Long) = inProgressAt(JsonField.of(inProgressAt)) /** The Unix timestamp (in seconds) for when the batch started processing. */ - @JsonProperty("in_progress_at") - @ExcludeMissing fun inProgressAt(inProgressAt: JsonField) = apply { this.inProgressAt = inProgressAt } /** The Unix timestamp (in seconds) for when the batch will expire. */ fun expiresAt(expiresAt: Long) = expiresAt(JsonField.of(expiresAt)) /** The Unix timestamp (in seconds) for when the batch will expire. */ - @JsonProperty("expires_at") - @ExcludeMissing fun expiresAt(expiresAt: JsonField) = apply { this.expiresAt = expiresAt } /** The Unix timestamp (in seconds) for when the batch started finalizing. */ fun finalizingAt(finalizingAt: Long) = finalizingAt(JsonField.of(finalizingAt)) /** The Unix timestamp (in seconds) for when the batch started finalizing. */ - @JsonProperty("finalizing_at") - @ExcludeMissing fun finalizingAt(finalizingAt: JsonField) = apply { this.finalizingAt = finalizingAt } /** The Unix timestamp (in seconds) for when the batch was completed. */ fun completedAt(completedAt: Long) = completedAt(JsonField.of(completedAt)) /** The Unix timestamp (in seconds) for when the batch was completed. */ - @JsonProperty("completed_at") - @ExcludeMissing fun completedAt(completedAt: JsonField) = apply { this.completedAt = completedAt } /** The Unix timestamp (in seconds) for when the batch failed. */ fun failedAt(failedAt: Long) = failedAt(JsonField.of(failedAt)) /** The Unix timestamp (in seconds) for when the batch failed. */ - @JsonProperty("failed_at") - @ExcludeMissing fun failedAt(failedAt: JsonField) = apply { this.failedAt = failedAt } /** The Unix timestamp (in seconds) for when the batch expired. */ fun expiredAt(expiredAt: Long) = expiredAt(JsonField.of(expiredAt)) /** The Unix timestamp (in seconds) for when the batch expired. */ - @JsonProperty("expired_at") - @ExcludeMissing fun expiredAt(expiredAt: JsonField) = apply { this.expiredAt = expiredAt } /** The Unix timestamp (in seconds) for when the batch started cancelling. */ fun cancellingAt(cancellingAt: Long) = cancellingAt(JsonField.of(cancellingAt)) /** The Unix timestamp (in seconds) for when the batch started cancelling. */ - @JsonProperty("cancelling_at") - @ExcludeMissing fun cancellingAt(cancellingAt: JsonField) = apply { this.cancellingAt = cancellingAt } /** The Unix timestamp (in seconds) for when the batch was cancelled. */ fun cancelledAt(cancelledAt: Long) = cancelledAt(JsonField.of(cancelledAt)) /** The Unix timestamp (in seconds) for when the batch was cancelled. */ - @JsonProperty("cancelled_at") - @ExcludeMissing fun cancelledAt(cancelledAt: JsonField) = apply { this.cancelledAt = cancelledAt } /** The request counts for different statuses within the batch. */ @@ -403,8 +405,6 @@ private constructor( requestCounts(JsonField.of(requestCounts)) /** The request counts for different statuses within the batch. */ - @JsonProperty("request_counts") - @ExcludeMissing fun requestCounts(requestCounts: JsonField) = apply { this.requestCounts = requestCounts } @@ -414,8 +414,6 @@ private constructor( * storing additional information about the object in a structured format. Keys can be a * maximum of 64 characters long and values can be a maximum of 512 characters long. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonValue) = apply { this.metadata = metadata } fun additionalProperties(additionalProperties: Map) = apply { @@ -423,7 +421,6 @@ private constructor( putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { additionalProperties.put(key, value) } @@ -608,13 +605,18 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = Errors.Builder::class) @NoAutoDetect class Errors + @JsonCreator private constructor( - private val object_: JsonField, - private val data: JsonField>, - private val additionalProperties: Map, + @JsonProperty("object") + @ExcludeMissing + private val object_: JsonField = JsonMissing.of(), + @JsonProperty("data") + @ExcludeMissing + private val data: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The object type, which is always `list`. */ @@ -665,14 +667,10 @@ private constructor( fun object_(object_: String) = object_(JsonField.of(object_)) /** The object type, which is always `list`. */ - @JsonProperty("object") - @ExcludeMissing fun object_(object_: JsonField) = apply { this.object_ = object_ } fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") - @ExcludeMissing fun data(data: JsonField>) = apply { this.data = data } fun additionalProperties(additionalProperties: Map) = apply { @@ -680,7 +678,6 @@ private constructor( putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { additionalProperties.put(key, value) } diff --git a/openai-java-core/src/main/kotlin/com/openai/models/BatchCreateParams.kt b/openai-java-core/src/main/kotlin/com/openai/models/BatchCreateParams.kt index 9f678964..19efbabb 100644 --- a/openai-java-core/src/main/kotlin/com/openai/models/BatchCreateParams.kt +++ b/openai-java-core/src/main/kotlin/com/openai/models/BatchCreateParams.kt @@ -6,7 +6,6 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.openai.core.Enum import com.openai.core.ExcludeMissing import com.openai.core.JsonField @@ -14,6 +13,7 @@ import com.openai.core.JsonValue import com.openai.core.NoAutoDetect import com.openai.core.http.Headers import com.openai.core.http.QueryParams +import com.openai.core.immutableEmptyMap import com.openai.core.toImmutable import com.openai.errors.OpenAIInvalidDataException import java.util.Objects @@ -59,15 +59,16 @@ constructor( @JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams - @JsonDeserialize(builder = BatchCreateBody.Builder::class) @NoAutoDetect class BatchCreateBody + @JsonCreator internal constructor( - private val completionWindow: CompletionWindow, - private val endpoint: Endpoint, - private val inputFileId: String, - private val metadata: Metadata?, - private val additionalProperties: Map, + @JsonProperty("completion_window") private val completionWindow: CompletionWindow, + @JsonProperty("endpoint") private val endpoint: Endpoint, + @JsonProperty("input_file_id") private val inputFileId: String, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -133,7 +134,6 @@ constructor( * The time frame within which the batch should be processed. Currently only `24h` is * supported. */ - @JsonProperty("completion_window") fun completionWindow(completionWindow: CompletionWindow) = apply { this.completionWindow = completionWindow } @@ -144,7 +144,6 @@ constructor( * that `/v1/embeddings` batches are also restricted to a maximum of 50,000 embedding * inputs across all requests in the batch. */ - @JsonProperty("endpoint") fun endpoint(endpoint: Endpoint) = apply { this.endpoint = endpoint } /** @@ -158,11 +157,9 @@ constructor( * must be uploaded with the purpose `batch`. The file can contain up to 50,000 * requests, and can be up to 200 MB in size. */ - @JsonProperty("input_file_id") fun inputFileId(inputFileId: String) = apply { this.inputFileId = inputFileId } /** Optional custom metadata for the batch. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } fun additionalProperties(additionalProperties: Map) = apply { @@ -170,7 +167,6 @@ constructor( putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { additionalProperties.put(key, value) } @@ -523,11 +519,12 @@ constructor( } /** Optional custom metadata for the batch. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -555,7 +552,6 @@ constructor( putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { additionalProperties.put(key, value) } diff --git a/openai-java-core/src/main/kotlin/com/openai/models/BatchError.kt b/openai-java-core/src/main/kotlin/com/openai/models/BatchError.kt index d3aa859b..9695ca15 100644 --- a/openai-java-core/src/main/kotlin/com/openai/models/BatchError.kt +++ b/openai-java-core/src/main/kotlin/com/openai/models/BatchError.kt @@ -4,26 +4,29 @@ package com.openai.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.openai.core.ExcludeMissing import com.openai.core.JsonField import com.openai.core.JsonMissing import com.openai.core.JsonValue import com.openai.core.NoAutoDetect +import com.openai.core.immutableEmptyMap import com.openai.core.toImmutable import java.util.Objects import java.util.Optional -@JsonDeserialize(builder = BatchError.Builder::class) @NoAutoDetect class BatchError +@JsonCreator private constructor( - private val code: JsonField, - private val message: JsonField, - private val param: JsonField, - private val line: JsonField, - private val additionalProperties: Map, + @JsonProperty("code") @ExcludeMissing private val code: JsonField = JsonMissing.of(), + @JsonProperty("message") + @ExcludeMissing + private val message: JsonField = JsonMissing.of(), + @JsonProperty("param") @ExcludeMissing private val param: JsonField = JsonMissing.of(), + @JsonProperty("line") @ExcludeMissing private val line: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { /** An error code identifying the error type. */ @@ -94,32 +97,24 @@ private constructor( fun code(code: String) = code(JsonField.of(code)) /** An error code identifying the error type. */ - @JsonProperty("code") - @ExcludeMissing fun code(code: JsonField) = apply { this.code = code } /** A human-readable message providing more details about the error. */ fun message(message: String) = message(JsonField.of(message)) /** A human-readable message providing more details about the error. */ - @JsonProperty("message") - @ExcludeMissing fun message(message: JsonField) = apply { this.message = message } /** The name of the parameter that caused the error, if applicable. */ fun param(param: String) = param(JsonField.of(param)) /** The name of the parameter that caused the error, if applicable. */ - @JsonProperty("param") - @ExcludeMissing fun param(param: JsonField) = apply { this.param = param } /** The line number of the input file where the error occurred, if applicable. */ fun line(line: Long) = line(JsonField.of(line)) /** The line number of the input file where the error occurred, if applicable. */ - @JsonProperty("line") - @ExcludeMissing fun line(line: JsonField) = apply { this.line = line } fun additionalProperties(additionalProperties: Map) = apply { @@ -127,7 +122,6 @@ private constructor( putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { additionalProperties.put(key, value) } diff --git a/openai-java-core/src/main/kotlin/com/openai/models/BatchListPage.kt b/openai-java-core/src/main/kotlin/com/openai/models/BatchListPage.kt index 4e914630..6e01dd49 100644 --- a/openai-java-core/src/main/kotlin/com/openai/models/BatchListPage.kt +++ b/openai-java-core/src/main/kotlin/com/openai/models/BatchListPage.kt @@ -4,13 +4,14 @@ package com.openai.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.openai.core.ExcludeMissing import com.openai.core.JsonField import com.openai.core.JsonMissing import com.openai.core.JsonValue import com.openai.core.NoAutoDetect +import com.openai.core.immutableEmptyMap import com.openai.core.toImmutable import com.openai.services.blocking.BatchService import java.util.Objects @@ -71,12 +72,13 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val additionalProperties: Map, + @JsonProperty("data") private val data: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -129,10 +131,8 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/openai-java-core/src/main/kotlin/com/openai/models/BatchListPageAsync.kt b/openai-java-core/src/main/kotlin/com/openai/models/BatchListPageAsync.kt index 5e4b7b4c..70a27dd9 100644 --- a/openai-java-core/src/main/kotlin/com/openai/models/BatchListPageAsync.kt +++ b/openai-java-core/src/main/kotlin/com/openai/models/BatchListPageAsync.kt @@ -4,13 +4,14 @@ package com.openai.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.openai.core.ExcludeMissing import com.openai.core.JsonField import com.openai.core.JsonMissing import com.openai.core.JsonValue import com.openai.core.NoAutoDetect +import com.openai.core.immutableEmptyMap import com.openai.core.toImmutable import com.openai.services.async.BatchServiceAsync import java.util.Objects @@ -74,12 +75,13 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val additionalProperties: Map, + @JsonProperty("data") private val data: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -132,10 +134,8 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/openai-java-core/src/main/kotlin/com/openai/models/BatchRequestCounts.kt b/openai-java-core/src/main/kotlin/com/openai/models/BatchRequestCounts.kt index f544db79..e3a553d0 100644 --- a/openai-java-core/src/main/kotlin/com/openai/models/BatchRequestCounts.kt +++ b/openai-java-core/src/main/kotlin/com/openai/models/BatchRequestCounts.kt @@ -4,25 +4,28 @@ package com.openai.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.openai.core.ExcludeMissing import com.openai.core.JsonField import com.openai.core.JsonMissing import com.openai.core.JsonValue import com.openai.core.NoAutoDetect +import com.openai.core.immutableEmptyMap import com.openai.core.toImmutable import java.util.Objects /** The request counts for different statuses within the batch. */ -@JsonDeserialize(builder = BatchRequestCounts.Builder::class) @NoAutoDetect class BatchRequestCounts +@JsonCreator private constructor( - private val total: JsonField, - private val completed: JsonField, - private val failed: JsonField, - private val additionalProperties: Map, + @JsonProperty("total") @ExcludeMissing private val total: JsonField = JsonMissing.of(), + @JsonProperty("completed") + @ExcludeMissing + private val completed: JsonField = JsonMissing.of(), + @JsonProperty("failed") @ExcludeMissing private val failed: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { /** Total number of requests in the batch. */ @@ -84,24 +87,18 @@ private constructor( fun total(total: Long) = total(JsonField.of(total)) /** Total number of requests in the batch. */ - @JsonProperty("total") - @ExcludeMissing fun total(total: JsonField) = apply { this.total = total } /** Number of requests that have been completed successfully. */ fun completed(completed: Long) = completed(JsonField.of(completed)) /** Number of requests that have been completed successfully. */ - @JsonProperty("completed") - @ExcludeMissing fun completed(completed: JsonField) = apply { this.completed = completed } /** Number of requests that have failed. */ fun failed(failed: Long) = failed(JsonField.of(failed)) /** Number of requests that have failed. */ - @JsonProperty("failed") - @ExcludeMissing fun failed(failed: JsonField) = apply { this.failed = failed } fun additionalProperties(additionalProperties: Map) = apply { @@ -109,7 +106,6 @@ private constructor( putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { additionalProperties.put(key, value) } diff --git a/openai-java-core/src/main/kotlin/com/openai/models/ChatCompletion.kt b/openai-java-core/src/main/kotlin/com/openai/models/ChatCompletion.kt index 17eadabc..c4badc86 100644 --- a/openai-java-core/src/main/kotlin/com/openai/models/ChatCompletion.kt +++ b/openai-java-core/src/main/kotlin/com/openai/models/ChatCompletion.kt @@ -6,32 +6,44 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.openai.core.Enum import com.openai.core.ExcludeMissing import com.openai.core.JsonField import com.openai.core.JsonMissing import com.openai.core.JsonValue import com.openai.core.NoAutoDetect +import com.openai.core.immutableEmptyMap import com.openai.core.toImmutable import com.openai.errors.OpenAIInvalidDataException import java.util.Objects import java.util.Optional /** Represents a chat completion response returned by model, based on the provided input. */ -@JsonDeserialize(builder = ChatCompletion.Builder::class) @NoAutoDetect class ChatCompletion +@JsonCreator private constructor( - private val id: JsonField, - private val choices: JsonField>, - private val created: JsonField, - private val model: JsonField, - private val serviceTier: JsonField, - private val systemFingerprint: JsonField, - private val object_: JsonField, - private val usage: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("choices") + @ExcludeMissing + private val choices: JsonField> = JsonMissing.of(), + @JsonProperty("created") + @ExcludeMissing + private val created: JsonField = JsonMissing.of(), + @JsonProperty("model") @ExcludeMissing private val model: JsonField = JsonMissing.of(), + @JsonProperty("service_tier") + @ExcludeMissing + private val serviceTier: JsonField = JsonMissing.of(), + @JsonProperty("system_fingerprint") + @ExcludeMissing + private val systemFingerprint: JsonField = JsonMissing.of(), + @JsonProperty("object") + @ExcludeMissing + private val object_: JsonField = JsonMissing.of(), + @JsonProperty("usage") + @ExcludeMissing + private val usage: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { /** A unique identifier for the chat completion. */ @@ -156,30 +168,24 @@ private constructor( fun id(id: String) = id(JsonField.of(id)) /** A unique identifier for the chat completion. */ - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** A list of chat completion choices. Can be more than one if `n` is greater than 1. */ fun choices(choices: List) = choices(JsonField.of(choices)) /** A list of chat completion choices. Can be more than one if `n` is greater than 1. */ - @JsonProperty("choices") - @ExcludeMissing fun choices(choices: JsonField>) = apply { this.choices = choices } /** The Unix timestamp (in seconds) of when the chat completion was created. */ fun created(created: Long) = created(JsonField.of(created)) /** The Unix timestamp (in seconds) of when the chat completion was created. */ - @JsonProperty("created") - @ExcludeMissing fun created(created: JsonField) = apply { this.created = created } /** The model used for the chat completion. */ fun model(model: String) = model(JsonField.of(model)) /** The model used for the chat completion. */ - @JsonProperty("model") - @ExcludeMissing fun model(model: JsonField) = apply { this.model = model } /** @@ -192,8 +198,6 @@ private constructor( * The service tier used for processing the request. This field is only included if the * `service_tier` parameter is specified in the request. */ - @JsonProperty("service_tier") - @ExcludeMissing fun serviceTier(serviceTier: JsonField) = apply { this.serviceTier = serviceTier } @@ -213,8 +217,6 @@ private constructor( * Can be used in conjunction with the `seed` request parameter to understand when backend * changes have been made that might impact determinism. */ - @JsonProperty("system_fingerprint") - @ExcludeMissing fun systemFingerprint(systemFingerprint: JsonField) = apply { this.systemFingerprint = systemFingerprint } @@ -223,16 +225,12 @@ private constructor( fun object_(object_: Object) = object_(JsonField.of(object_)) /** The object type, which is always `chat.completion`. */ - @JsonProperty("object") - @ExcludeMissing fun object_(object_: JsonField) = apply { this.object_ = object_ } /** Usage statistics for the completion request. */ fun usage(usage: CompletionUsage) = usage(JsonField.of(usage)) /** Usage statistics for the completion request. */ - @JsonProperty("usage") - @ExcludeMissing fun usage(usage: JsonField) = apply { this.usage = usage } fun additionalProperties(additionalProperties: Map) = apply { @@ -240,7 +238,6 @@ private constructor( putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { additionalProperties.put(key, value) } @@ -269,15 +266,24 @@ private constructor( ) } - @JsonDeserialize(builder = Choice.Builder::class) @NoAutoDetect class Choice + @JsonCreator private constructor( - private val finishReason: JsonField, - private val index: JsonField, - private val message: JsonField, - private val logprobs: JsonField, - private val additionalProperties: Map, + @JsonProperty("finish_reason") + @ExcludeMissing + private val finishReason: JsonField = JsonMissing.of(), + @JsonProperty("index") + @ExcludeMissing + private val index: JsonField = JsonMissing.of(), + @JsonProperty("message") + @ExcludeMissing + private val message: JsonField = JsonMissing.of(), + @JsonProperty("logprobs") + @ExcludeMissing + private val logprobs: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -372,8 +378,6 @@ private constructor( * due to a flag from our content filters, `tool_calls` if the model called a tool, or * `function_call` (deprecated) if the model called a function. */ - @JsonProperty("finish_reason") - @ExcludeMissing fun finishReason(finishReason: JsonField) = apply { this.finishReason = finishReason } @@ -382,16 +386,12 @@ private constructor( fun index(index: Long) = index(JsonField.of(index)) /** The index of the choice in the list of choices. */ - @JsonProperty("index") - @ExcludeMissing fun index(index: JsonField) = apply { this.index = index } /** A chat completion message generated by the model. */ fun message(message: ChatCompletionMessage) = message(JsonField.of(message)) /** A chat completion message generated by the model. */ - @JsonProperty("message") - @ExcludeMissing fun message(message: JsonField) = apply { this.message = message } @@ -400,8 +400,6 @@ private constructor( fun logprobs(logprobs: Logprobs) = logprobs(JsonField.of(logprobs)) /** Log probability information for the choice. */ - @JsonProperty("logprobs") - @ExcludeMissing fun logprobs(logprobs: JsonField) = apply { this.logprobs = logprobs } fun additionalProperties(additionalProperties: Map) = apply { @@ -409,7 +407,6 @@ private constructor( putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { additionalProperties.put(key, value) } @@ -510,13 +507,18 @@ private constructor( } /** Log probability information for the choice. */ - @JsonDeserialize(builder = Logprobs.Builder::class) @NoAutoDetect class Logprobs + @JsonCreator private constructor( - private val content: JsonField>, - private val refusal: JsonField>, - private val additionalProperties: Map, + @JsonProperty("content") + @ExcludeMissing + private val content: JsonField> = JsonMissing.of(), + @JsonProperty("refusal") + @ExcludeMissing + private val refusal: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** A list of message content tokens with log probability information. */ @@ -572,8 +574,6 @@ private constructor( content(JsonField.of(content)) /** A list of message content tokens with log probability information. */ - @JsonProperty("content") - @ExcludeMissing fun content(content: JsonField>) = apply { this.content = content } @@ -583,8 +583,6 @@ private constructor( refusal(JsonField.of(refusal)) /** A list of message refusal tokens with log probability information. */ - @JsonProperty("refusal") - @ExcludeMissing fun refusal(refusal: JsonField>) = apply { this.refusal = refusal } @@ -594,7 +592,6 @@ private constructor( putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { additionalProperties.put(key, value) } diff --git a/openai-java-core/src/main/kotlin/com/openai/models/ChatCompletionAssistantMessageParam.kt b/openai-java-core/src/main/kotlin/com/openai/models/ChatCompletionAssistantMessageParam.kt index f2f3ed12..e2a1d24e 100644 --- a/openai-java-core/src/main/kotlin/com/openai/models/ChatCompletionAssistantMessageParam.kt +++ b/openai-java-core/src/main/kotlin/com/openai/models/ChatCompletionAssistantMessageParam.kt @@ -22,6 +22,7 @@ import com.openai.core.JsonMissing import com.openai.core.JsonValue import com.openai.core.NoAutoDetect import com.openai.core.getOrThrow +import com.openai.core.immutableEmptyMap import com.openai.core.toImmutable import com.openai.errors.OpenAIInvalidDataException import java.util.Objects @@ -29,18 +30,26 @@ import java.util.Optional import kotlin.jvm.optionals.getOrNull /** Messages sent by the model in response to user messages. */ -@JsonDeserialize(builder = ChatCompletionAssistantMessageParam.Builder::class) @NoAutoDetect class ChatCompletionAssistantMessageParam +@JsonCreator private constructor( - private val content: JsonField, - private val refusal: JsonField, - private val role: JsonField, - private val name: JsonField, - private val audio: JsonField