Skip to content

Commit 4744078

Browse files
zygiert1990michal.zyga
and
michal.zyga
authored
remove deprecated stuff, no longer available in OpenAI API (#281)
Co-authored-by: michal.zyga <michal.zyga@softwaremill.com>
1 parent 5a06605 commit 4744078

14 files changed

+24
-1296
lines changed

core/src/main/scala/sttp/openai/OpenAI.scala

+9-113
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package sttp.openai
22

3+
import sttp.capabilities.Streams
34
import sttp.client4._
45
import sttp.model.{Header, Uri}
56
import sttp.openai.OpenAIExceptions.OpenAIException
@@ -12,47 +13,31 @@ import sttp.openai.json.SttpUpickleApiExtension.{
1213
}
1314
import sttp.openai.requests.assistants.AssistantsRequestBody.{CreateAssistantBody, ModifyAssistantBody}
1415
import sttp.openai.requests.assistants.AssistantsResponseData.{AssistantData, DeleteAssistantResponse, ListAssistantsResponse}
16+
import sttp.openai.requests.audio.AudioResponseData.AudioResponse
17+
import sttp.openai.requests.audio.RecognitionModel
18+
import sttp.openai.requests.audio.transcriptions.TranscriptionConfig
19+
import sttp.openai.requests.audio.translations.TranslationConfig
1520
import sttp.openai.requests.completions.CompletionsRequestBody.CompletionsBody
1621
import sttp.openai.requests.completions.CompletionsResponseData.CompletionsResponse
1722
import sttp.openai.requests.completions.chat.ChatRequestBody.ChatBody
1823
import sttp.openai.requests.completions.chat.ChatRequestResponseData.ChatResponse
19-
import sttp.openai.requests.completions.edit.EditRequestBody.EditBody
20-
import sttp.openai.requests.completions.edit.EditRequestResponseData.EditResponse
2124
import sttp.openai.requests.embeddings.EmbeddingsRequestBody.EmbeddingsBody
2225
import sttp.openai.requests.embeddings.EmbeddingsResponseBody.EmbeddingResponse
2326
import sttp.openai.requests.files.FilesResponseData._
24-
import sttp.openai.requests.finetunes.FineTunesRequestBody
25-
import sttp.openai.requests.finetunes.FineTunesResponseData.{
26-
DeleteFineTuneModelResponse,
27-
FineTuneEventsResponse,
28-
FineTuneResponse,
29-
GetFineTunesResponse
30-
}
3127
import sttp.openai.requests.images.ImageResponseData.ImageResponse
3228
import sttp.openai.requests.images.creation.ImageCreationRequestBody.ImageCreationBody
3329
import sttp.openai.requests.images.edit.ImageEditsConfig
3430
import sttp.openai.requests.images.variations.ImageVariationsConfig
3531
import sttp.openai.requests.models.ModelsResponseData.{ModelData, ModelsResponse}
3632
import sttp.openai.requests.moderations.ModerationsRequestBody.ModerationsBody
3733
import sttp.openai.requests.moderations.ModerationsResponseData.ModerationData
38-
import sttp.openai.requests.audio.AudioResponseData.AudioResponse
39-
import sttp.openai.requests.audio.transcriptions.TranscriptionConfig
40-
import sttp.openai.requests.audio.translations.TranslationConfig
41-
import sttp.openai.requests.audio.RecognitionModel
42-
import sttp.capabilities.Streams
34+
import sttp.openai.requests.threads.QueryParameters
4335
import sttp.openai.requests.threads.ThreadsRequestBody.CreateThreadBody
4436
import sttp.openai.requests.threads.ThreadsResponseData.{DeleteThreadResponse, ThreadData}
4537
import sttp.openai.requests.threads.messages.ThreadMessagesRequestBody.CreateMessage
4638
import sttp.openai.requests.threads.messages.ThreadMessagesResponseData.{ListMessagesResponse, MessageData}
47-
import sttp.openai.requests.threads.runs.ThreadRunsRequestBody.{
48-
CreateRun,
49-
CreateThreadAndRun,
50-
ModifyRun,
51-
SubmitToolOutputsToRun,
52-
ToolOutput
53-
}
39+
import sttp.openai.requests.threads.runs.ThreadRunsRequestBody._
5440
import sttp.openai.requests.threads.runs.ThreadRunsResponseData.{ListRunStepsResponse, ListRunsResponse, RunData, RunStepData}
55-
import sttp.openai.requests.threads.QueryParameters
5641
import sttp.openai.requests.vectorstore.VectorStoreRequestBody.{CreateVectorStoreBody, ModifyVectorStoreBody}
5742
import sttp.openai.requests.vectorstore.VectorStoreResponseData.{DeleteVectorStoreResponse, ListVectorStoresResponse, VectorStore}
5843
import sttp.openai.requests.vectorstore.file.VectorStoreFileRequestBody.{CreateVectorStoreFileBody, ListVectorStoreFilesBody}
@@ -96,6 +81,8 @@ class OpenAI(authToken: String, baseUri: Uri = OpenAIUris.OpenAIBaseUri) {
9681
*
9782
* @param completionBody
9883
* Create completion request body.
84+
* @deprecated
85+
* This is marked as Legacy in OpenAI API and might be removed in the future. Please use createChatCompletion instead.
9986
*/
10087
def createCompletion(completionBody: CompletionsBody): Request[Either[OpenAIException, CompletionsResponse]] =
10188
openAIAuthRequest
@@ -245,19 +232,6 @@ class OpenAI(authToken: String, baseUri: Uri = OpenAIUris.OpenAIBaseUri) {
245232
}
246233
.response(asJson_parseErrors[ImageResponse])
247234

248-
/** Creates a new edit for provided request body.
249-
*
250-
* [[https://platform.openai.com/docs/api-reference/edits/create]]
251-
*
252-
* @param editRequestBody
253-
* Edit request body.
254-
*/
255-
def createEdit(editRequestBody: EditBody): Request[Either[OpenAIException, EditResponse]] =
256-
openAIAuthRequest
257-
.post(openAIUris.Edits)
258-
.body(editRequestBody)
259-
.response(asJson_parseErrors[EditResponse])
260-
261235
/** Creates a model response for the given chat conversation defined in chatBody.
262236
*
263237
* [[https://platform.openai.com/docs/api-reference/chat/create]]
@@ -567,42 +541,6 @@ class OpenAI(authToken: String, baseUri: Uri = OpenAIUris.OpenAIBaseUri) {
567541
}
568542
.response(asJson_parseErrors[AudioResponse])
569543

570-
/** Creates a job that fine-tunes a specified model from a given dataset.
571-
*
572-
* [[https://platform.openai.com/docs/api-reference/fine-tunes/create]]
573-
*
574-
* @param fineTunesRequestBody
575-
* Request body that will be used to create a fine-tune.
576-
*/
577-
def createFineTune(
578-
fineTunesRequestBody: FineTunesRequestBody
579-
): Request[Either[OpenAIException, FineTuneResponse]] =
580-
openAIAuthRequest
581-
.post(openAIUris.FineTunes)
582-
.body(fineTunesRequestBody)
583-
.response(asJson_parseErrors[FineTuneResponse])
584-
585-
/** List of your organization's fine-tuning jobs.
586-
*
587-
* [[https://platform.openai.com/docs/api-reference/fine-tunes/list]]
588-
*/
589-
def getFineTunes: Request[Either[OpenAIException, GetFineTunesResponse]] =
590-
openAIAuthRequest
591-
.get(openAIUris.FineTunes)
592-
.response(asJson_parseErrors[GetFineTunesResponse])
593-
594-
/** Immediately cancel a fine-tune job.
595-
*
596-
* [[https://platform.openai.com/docs/api-reference/fine-tunes/cancel]]
597-
*
598-
* @param fineTuneId
599-
* The ID of the fine-tune job to cancel.
600-
*/
601-
def cancelFineTune(fineTuneId: String): Request[Either[OpenAIException, FineTuneResponse]] =
602-
openAIAuthRequest
603-
.post(openAIUris.cancelFineTune(fineTuneId))
604-
.response(asJson_parseErrors[FineTuneResponse])
605-
606544
/** Gets info about the fine-tune job.
607545
*
608546
* [[https://platform.openai.com/docs/api-reference/embeddings/create]]
@@ -616,42 +554,6 @@ class OpenAI(authToken: String, baseUri: Uri = OpenAIUris.OpenAIBaseUri) {
616554
.body(embeddingsBody)
617555
.response(asJson_parseErrors[EmbeddingResponse])
618556

619-
/** Gets info about the fine-tune job.
620-
*
621-
* [[https://platform.openai.com/docs/api-reference/fine-tunes/retrieve]]
622-
*
623-
* @param fineTuneId
624-
* The ID of the fine-tune job.
625-
*/
626-
def retrieveFineTune(fineTuneId: String): Request[Either[OpenAIException, FineTuneResponse]] =
627-
openAIAuthRequest
628-
.get(openAIUris.fineTune(fineTuneId))
629-
.response(asJson_parseErrors[FineTuneResponse])
630-
631-
/** Delete a fine-tuned model. You must have the Owner role in your organization.
632-
*
633-
* [[https://platform.openai.com/docs/api-reference/fine-tunes/delete-model]]
634-
*
635-
* @param model
636-
* The model to delete.
637-
*/
638-
def deleteFineTuneModel(model: String): Request[Either[OpenAIException, DeleteFineTuneModelResponse]] =
639-
openAIAuthRequest
640-
.delete(openAIUris.fineTuneModel(model))
641-
.response(asJson_parseErrors[DeleteFineTuneModelResponse])
642-
643-
/** Get fine-grained status updates for a fine-tune job.
644-
*
645-
* [[https://platform.openai.com/docs/api-reference/fine-tunes/events]]
646-
*
647-
* @param fineTuneId
648-
* The ID of the fine-tune job to get events for.
649-
*/
650-
def getFineTuneEvents(fineTuneId: String): Request[Either[OpenAIException, FineTuneEventsResponse]] =
651-
openAIAuthRequest
652-
.get(openAIUris.fineTuneEvents(fineTuneId))
653-
.response(asJson_parseErrors[FineTuneEventsResponse])
654-
655557
/** Create a thread.
656558
*
657559
* [[https://platform.openai.com/docs/api-reference/threads/createThread]]
@@ -1129,11 +1031,9 @@ private class OpenAIUris(val baseUri: Uri) {
11291031
val ChatCompletions: Uri = uri"$baseUri/chat/completions"
11301032
val Completions: Uri = uri"$baseUri/completions"
11311033
val CreateImage: Uri = imageBase.addPath("generations")
1132-
val Edits: Uri = uri"$baseUri/edits"
11331034
val Embeddings: Uri = uri"$baseUri/embeddings"
11341035
val EditImage: Uri = imageBase.addPath("edits")
11351036
val Files: Uri = uri"$baseUri/files"
1136-
val FineTunes: Uri = uri"$baseUri/fine-tunes"
11371037
val Models: Uri = uri"$baseUri/models"
11381038
val Moderations: Uri = uri"$baseUri/moderations"
11391039
val Transcriptions: Uri = audioBase.addPath("transcriptions")
@@ -1145,12 +1045,8 @@ private class OpenAIUris(val baseUri: Uri) {
11451045
val ThreadsRuns: Uri = uri"$baseUri/threads/runs"
11461046
val VectorStores: Uri = uri"$baseUri/vector_stores"
11471047

1148-
def cancelFineTune(fineTuneId: String): Uri = FineTunes.addPath(fineTuneId, "cancel")
11491048
def file(fileId: String): Uri = Files.addPath(fileId)
11501049
def fileContent(fileId: String): Uri = Files.addPath(fileId, "content")
1151-
def fineTuneModel(model: String): Uri = Models.addPath(model)
1152-
def fineTuneEvents(fineTuneId: String): Uri = FineTunes.addPath(fineTuneId, "events")
1153-
def fineTune(fineTuneId: String): Uri = FineTunes.addPath(fineTuneId)
11541050
def model(modelId: String): Uri = Models.addPath(modelId)
11551051

11561052
def assistant(assistantId: String): Uri = Assistants.addPath(assistantId)

core/src/main/scala/sttp/openai/OpenAISyncClient.scala

-76
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,9 @@ import sttp.openai.requests.completions.CompletionsRequestBody.CompletionsBody
1313
import sttp.openai.requests.completions.CompletionsResponseData.CompletionsResponse
1414
import sttp.openai.requests.completions.chat.ChatRequestBody.ChatBody
1515
import sttp.openai.requests.completions.chat.ChatRequestResponseData.ChatResponse
16-
import sttp.openai.requests.completions.edit.EditRequestBody.EditBody
17-
import sttp.openai.requests.completions.edit.EditRequestResponseData.EditResponse
1816
import sttp.openai.requests.embeddings.EmbeddingsRequestBody.EmbeddingsBody
1917
import sttp.openai.requests.embeddings.EmbeddingsResponseBody.EmbeddingResponse
2018
import sttp.openai.requests.files.FilesResponseData.{DeletedFileData, FileData, FilesResponse}
21-
import sttp.openai.requests.finetunes.FineTunesRequestBody
22-
import sttp.openai.requests.finetunes.FineTunesResponseData.{
23-
DeleteFineTuneModelResponse,
24-
FineTuneEventsResponse,
25-
FineTuneResponse,
26-
GetFineTunesResponse
27-
}
2819
import sttp.openai.requests.images.ImageResponseData.ImageResponse
2920
import sttp.openai.requests.images.creation.ImageCreationRequestBody.ImageCreationBody
3021
import sttp.openai.requests.images.edit.ImageEditsConfig
@@ -171,16 +162,6 @@ class OpenAISyncClient private (
171162
def imageVariations(imageVariationsConfig: ImageVariationsConfig): ImageResponse =
172163
sendOrThrow(openAI.imageVariations(imageVariationsConfig))
173164

174-
/** Creates a new edit for provided request body.
175-
*
176-
* [[https://platform.openai.com/docs/api-reference/edits/create]]
177-
*
178-
* @param editRequestBody
179-
* Edit request body.
180-
*/
181-
def createEdit(editRequestBody: EditBody): EditResponse =
182-
sendOrThrow(openAI.createEdit(editRequestBody))
183-
184165
/** Creates a model response for the given chat conversation defined in chatBody.
185166
*
186167
* [[https://platform.openai.com/docs/api-reference/chat/create]]
@@ -367,33 +348,6 @@ class OpenAISyncClient private (
367348
def createTranscription(transcriptionConfig: TranscriptionConfig): AudioResponse =
368349
sendOrThrow(openAI.createTranscription(transcriptionConfig))
369350

370-
/** Creates a job that fine-tunes a specified model from a given dataset.
371-
*
372-
* [[https://platform.openai.com/docs/api-reference/fine-tunes/create]]
373-
*
374-
* @param fineTunesRequestBody
375-
* Request body that will be used to create a fine-tune.
376-
*/
377-
def createFineTune(fineTunesRequestBody: FineTunesRequestBody): FineTuneResponse =
378-
sendOrThrow(openAI.createFineTune(fineTunesRequestBody))
379-
380-
/** List of your organization's fine-tuning jobs.
381-
*
382-
* [[https://platform.openai.com/docs/api-reference/fine-tunes/list]]
383-
*/
384-
def getFineTunes: GetFineTunesResponse =
385-
sendOrThrow(openAI.getFineTunes)
386-
387-
/** Immediately cancel a fine-tune job.
388-
*
389-
* [[https://platform.openai.com/docs/api-reference/fine-tunes/cancel]]
390-
*
391-
* @param fineTuneId
392-
* The ID of the fine-tune job to cancel.
393-
*/
394-
def cancelFineTune(fineTuneId: String): FineTuneResponse =
395-
sendOrThrow(openAI.cancelFineTune(fineTuneId))
396-
397351
/** Gets info about the fine-tune job.
398352
*
399353
* [[https://platform.openai.com/docs/api-reference/embeddings/create]]
@@ -404,36 +358,6 @@ class OpenAISyncClient private (
404358
def createEmbeddings(embeddingsBody: EmbeddingsBody): EmbeddingResponse =
405359
sendOrThrow(openAI.createEmbeddings(embeddingsBody))
406360

407-
/** Gets info about the fine-tune job.
408-
*
409-
* [[https://platform.openai.com/docs/api-reference/fine-tunes/retrieve]]
410-
*
411-
* @param fineTuneId
412-
* The ID of the fine-tune job.
413-
*/
414-
def retrieveFineTune(fineTuneId: String): FineTuneResponse =
415-
sendOrThrow(openAI.retrieveFineTune(fineTuneId))
416-
417-
/** Delete a fine-tuned model. You must have the Owner role in your organization.
418-
*
419-
* [[https://platform.openai.com/docs/api-reference/fine-tunes/delete-model]]
420-
*
421-
* @param model
422-
* The model to delete.
423-
*/
424-
def deleteFineTuneModel(model: String): DeleteFineTuneModelResponse =
425-
sendOrThrow(openAI.deleteFineTuneModel(model))
426-
427-
/** Get fine-grained status updates for a fine-tune job.
428-
*
429-
* [[https://platform.openai.com/docs/api-reference/fine-tunes/events]]
430-
*
431-
* @param fineTuneId
432-
* The ID of the fine-tune job to get events for.
433-
*/
434-
def getFineTuneEvents(fineTuneId: String): FineTuneEventsResponse =
435-
sendOrThrow(openAI.getFineTuneEvents(fineTuneId))
436-
437361
/** Create a thread.
438362
*
439363
* [[https://platform.openai.com/docs/api-reference/threads/createThread]]

core/src/main/scala/sttp/openai/requests/completions/CompletionsRequestBody.scala

+2-10
Original file line numberDiff line numberDiff line change
@@ -82,19 +82,11 @@ object CompletionsRequestBody {
8282
}
8383
)
8484

85-
case object TextDavinci003 extends CompletionModel("text-davinci-003")
86-
87-
case object TextDavinci002 extends CompletionModel("text-davinci-002")
88-
89-
case object TextCurie001 extends CompletionModel("text-curie-001")
90-
91-
case object TextBabbage001 extends CompletionModel("text-babbage-001")
92-
93-
case object TextAda001 extends CompletionModel("text-ada-001")
85+
case object GPT35TurboInstruct extends CompletionModel("gpt-3.5-turbo-instruct")
9486

9587
case class CustomCompletionModel(customCompletionModel: String) extends CompletionModel(customCompletionModel)
9688

97-
val values: Set[CompletionModel] = Set(TextDavinci003, TextDavinci002, TextCurie001, TextBabbage001, TextAda001)
89+
val values: Set[CompletionModel] = Set(GPT35TurboInstruct)
9890

9991
private val byCompletionModelValue = values.map(model => model.value -> model).toMap
10092
}

core/src/main/scala/sttp/openai/requests/completions/chat/ChatRequestBody.scala

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package sttp.openai.requests.completions.chat
22

3-
import io.circe.{DecodingFailure, Json, JsonNumber, JsonObject}
43
import io.circe.syntax._
4+
import io.circe.{DecodingFailure, Json, JsonNumber, JsonObject}
55
import sttp.apispec.Schema
66
import sttp.apispec.circe._
77
import sttp.openai.OpenAIExceptions.OpenAIException.DeserializationOpenAIException
@@ -249,8 +249,6 @@ object ChatRequestBody {
249249

250250
case object GPT4Turbo extends ChatCompletionModel("gpt-4-1106-preview")
251251

252-
case object GPT4TurboVision extends ChatCompletionModel("gpt-4-vision-preview")
253-
254252
case object GPT4o extends ChatCompletionModel("gpt-4o")
255253

256254
case object GPT4oMini extends ChatCompletionModel("gpt-4o-mini")
@@ -266,7 +264,6 @@ object ChatRequestBody {
266264
GPT35Turbo,
267265
GPT35Turbo0301,
268266
GPT4Turbo,
269-
GPT4TurboVision,
270267
GPT4o,
271268
GPT4oMini
272269
)

0 commit comments

Comments
 (0)