Skip to content

Commit a833d42

Browse files
author
michal.zyga
committed
remove deprecated stuff, no longer available in OpenAI API
1 parent 5a06605 commit a833d42

14 files changed

+26
-1312
lines changed

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

+11-125
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,41 @@
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
6-
import sttp.openai.json.SttpUpickleApiExtension.{
7-
asInputStreamUnsafe_parseErrors,
8-
asJson_parseErrors,
9-
asStreamUnsafe_parseErrors,
10-
asStringEither,
11-
upickleBodySerializer
12-
}
7+
import sttp.openai.json.SttpUpickleApiExtension.{asInputStreamUnsafe_parseErrors, asJson_parseErrors, asStreamUnsafe_parseErrors, asStringEither, upickleBodySerializer}
138
import sttp.openai.requests.assistants.AssistantsRequestBody.{CreateAssistantBody, ModifyAssistantBody}
149
import sttp.openai.requests.assistants.AssistantsResponseData.{AssistantData, DeleteAssistantResponse, ListAssistantsResponse}
10+
import sttp.openai.requests.audio.AudioResponseData.AudioResponse
11+
import sttp.openai.requests.audio.RecognitionModel
12+
import sttp.openai.requests.audio.transcriptions.TranscriptionConfig
13+
import sttp.openai.requests.audio.translations.TranslationConfig
1514
import sttp.openai.requests.completions.CompletionsRequestBody.CompletionsBody
1615
import sttp.openai.requests.completions.CompletionsResponseData.CompletionsResponse
1716
import sttp.openai.requests.completions.chat.ChatRequestBody.ChatBody
1817
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
2118
import sttp.openai.requests.embeddings.EmbeddingsRequestBody.EmbeddingsBody
2219
import sttp.openai.requests.embeddings.EmbeddingsResponseBody.EmbeddingResponse
2320
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-
}
3121
import sttp.openai.requests.images.ImageResponseData.ImageResponse
3222
import sttp.openai.requests.images.creation.ImageCreationRequestBody.ImageCreationBody
3323
import sttp.openai.requests.images.edit.ImageEditsConfig
3424
import sttp.openai.requests.images.variations.ImageVariationsConfig
3525
import sttp.openai.requests.models.ModelsResponseData.{ModelData, ModelsResponse}
3626
import sttp.openai.requests.moderations.ModerationsRequestBody.ModerationsBody
3727
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
28+
import sttp.openai.requests.threads.QueryParameters
4329
import sttp.openai.requests.threads.ThreadsRequestBody.CreateThreadBody
4430
import sttp.openai.requests.threads.ThreadsResponseData.{DeleteThreadResponse, ThreadData}
4531
import sttp.openai.requests.threads.messages.ThreadMessagesRequestBody.CreateMessage
4632
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-
}
33+
import sttp.openai.requests.threads.runs.ThreadRunsRequestBody._
5434
import sttp.openai.requests.threads.runs.ThreadRunsResponseData.{ListRunStepsResponse, ListRunsResponse, RunData, RunStepData}
55-
import sttp.openai.requests.threads.QueryParameters
5635
import sttp.openai.requests.vectorstore.VectorStoreRequestBody.{CreateVectorStoreBody, ModifyVectorStoreBody}
5736
import sttp.openai.requests.vectorstore.VectorStoreResponseData.{DeleteVectorStoreResponse, ListVectorStoresResponse, VectorStore}
5837
import sttp.openai.requests.vectorstore.file.VectorStoreFileRequestBody.{CreateVectorStoreFileBody, ListVectorStoreFilesBody}
59-
import sttp.openai.requests.vectorstore.file.VectorStoreFileResponseData.{
60-
DeleteVectorStoreFileResponse,
61-
ListVectorStoreFilesResponse,
62-
VectorStoreFile
63-
}
38+
import sttp.openai.requests.vectorstore.file.VectorStoreFileResponseData.{DeleteVectorStoreFileResponse, ListVectorStoreFilesResponse, VectorStoreFile}
6439

6540
import java.io.{File, InputStream}
6641
import java.nio.file.Paths
@@ -96,6 +71,8 @@ class OpenAI(authToken: String, baseUri: Uri = OpenAIUris.OpenAIBaseUri) {
9671
*
9772
* @param completionBody
9873
* Create completion request body.
74+
* @deprecated
75+
* This is marked as Legacy in OpenAI API and might be removed in the future. Please use createChatCompletion instead.
9976
*/
10077
def createCompletion(completionBody: CompletionsBody): Request[Either[OpenAIException, CompletionsResponse]] =
10178
openAIAuthRequest
@@ -245,19 +222,6 @@ class OpenAI(authToken: String, baseUri: Uri = OpenAIUris.OpenAIBaseUri) {
245222
}
246223
.response(asJson_parseErrors[ImageResponse])
247224

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-
261225
/** Creates a model response for the given chat conversation defined in chatBody.
262226
*
263227
* [[https://platform.openai.com/docs/api-reference/chat/create]]
@@ -567,42 +531,6 @@ class OpenAI(authToken: String, baseUri: Uri = OpenAIUris.OpenAIBaseUri) {
567531
}
568532
.response(asJson_parseErrors[AudioResponse])
569533

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-
606534
/** Gets info about the fine-tune job.
607535
*
608536
* [[https://platform.openai.com/docs/api-reference/embeddings/create]]
@@ -616,42 +544,6 @@ class OpenAI(authToken: String, baseUri: Uri = OpenAIUris.OpenAIBaseUri) {
616544
.body(embeddingsBody)
617545
.response(asJson_parseErrors[EmbeddingResponse])
618546

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-
655547
/** Create a thread.
656548
*
657549
* [[https://platform.openai.com/docs/api-reference/threads/createThread]]
@@ -1129,11 +1021,9 @@ private class OpenAIUris(val baseUri: Uri) {
11291021
val ChatCompletions: Uri = uri"$baseUri/chat/completions"
11301022
val Completions: Uri = uri"$baseUri/completions"
11311023
val CreateImage: Uri = imageBase.addPath("generations")
1132-
val Edits: Uri = uri"$baseUri/edits"
11331024
val Embeddings: Uri = uri"$baseUri/embeddings"
11341025
val EditImage: Uri = imageBase.addPath("edits")
11351026
val Files: Uri = uri"$baseUri/files"
1136-
val FineTunes: Uri = uri"$baseUri/fine-tunes"
11371027
val Models: Uri = uri"$baseUri/models"
11381028
val Moderations: Uri = uri"$baseUri/moderations"
11391029
val Transcriptions: Uri = audioBase.addPath("transcriptions")
@@ -1145,12 +1035,8 @@ private class OpenAIUris(val baseUri: Uri) {
11451035
val ThreadsRuns: Uri = uri"$baseUri/threads/runs"
11461036
val VectorStores: Uri = uri"$baseUri/vector_stores"
11471037

1148-
def cancelFineTune(fineTuneId: String): Uri = FineTunes.addPath(fineTuneId, "cancel")
11491038
def file(fileId: String): Uri = Files.addPath(fileId)
11501039
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)
11541040
def model(modelId: String): Uri = Models.addPath(modelId)
11551041

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

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

+1-81
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
@@ -42,11 +33,7 @@ import sttp.openai.requests.threads.runs.ThreadRunsResponseData.{ListRunStepsRes
4233
import sttp.openai.requests.vectorstore.VectorStoreRequestBody.{CreateVectorStoreBody, ModifyVectorStoreBody}
4334
import sttp.openai.requests.vectorstore.VectorStoreResponseData.{DeleteVectorStoreResponse, ListVectorStoresResponse, VectorStore}
4435
import sttp.openai.requests.vectorstore.file.VectorStoreFileRequestBody.{CreateVectorStoreFileBody, ListVectorStoreFilesBody}
45-
import sttp.openai.requests.vectorstore.file.VectorStoreFileResponseData.{
46-
DeleteVectorStoreFileResponse,
47-
ListVectorStoreFilesResponse,
48-
VectorStoreFile
49-
}
36+
import sttp.openai.requests.vectorstore.file.VectorStoreFileResponseData.{DeleteVectorStoreFileResponse, ListVectorStoreFilesResponse, VectorStoreFile}
5037

5138
import java.io.File
5239

@@ -171,16 +158,6 @@ class OpenAISyncClient private (
171158
def imageVariations(imageVariationsConfig: ImageVariationsConfig): ImageResponse =
172159
sendOrThrow(openAI.imageVariations(imageVariationsConfig))
173160

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-
184161
/** Creates a model response for the given chat conversation defined in chatBody.
185162
*
186163
* [[https://platform.openai.com/docs/api-reference/chat/create]]
@@ -367,33 +344,6 @@ class OpenAISyncClient private (
367344
def createTranscription(transcriptionConfig: TranscriptionConfig): AudioResponse =
368345
sendOrThrow(openAI.createTranscription(transcriptionConfig))
369346

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-
397347
/** Gets info about the fine-tune job.
398348
*
399349
* [[https://platform.openai.com/docs/api-reference/embeddings/create]]
@@ -404,36 +354,6 @@ class OpenAISyncClient private (
404354
def createEmbeddings(embeddingsBody: EmbeddingsBody): EmbeddingResponse =
405355
sendOrThrow(openAI.createEmbeddings(embeddingsBody))
406356

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-
437357
/** Create a thread.
438358
*
439359
* [[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

-3
Original file line numberDiff line numberDiff line change
@@ -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)