1
1
package sttp .openai
2
2
3
+ import sttp .capabilities .Streams
3
4
import sttp .client4 ._
4
5
import sttp .model .{Header , Uri }
5
6
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 }
13
8
import sttp .openai .requests .assistants .AssistantsRequestBody .{CreateAssistantBody , ModifyAssistantBody }
14
9
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
15
14
import sttp .openai .requests .completions .CompletionsRequestBody .CompletionsBody
16
15
import sttp .openai .requests .completions .CompletionsResponseData .CompletionsResponse
17
16
import sttp .openai .requests .completions .chat .ChatRequestBody .ChatBody
18
17
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
21
18
import sttp .openai .requests .embeddings .EmbeddingsRequestBody .EmbeddingsBody
22
19
import sttp .openai .requests .embeddings .EmbeddingsResponseBody .EmbeddingResponse
23
20
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
- }
31
21
import sttp .openai .requests .images .ImageResponseData .ImageResponse
32
22
import sttp .openai .requests .images .creation .ImageCreationRequestBody .ImageCreationBody
33
23
import sttp .openai .requests .images .edit .ImageEditsConfig
34
24
import sttp .openai .requests .images .variations .ImageVariationsConfig
35
25
import sttp .openai .requests .models .ModelsResponseData .{ModelData , ModelsResponse }
36
26
import sttp .openai .requests .moderations .ModerationsRequestBody .ModerationsBody
37
27
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
43
29
import sttp .openai .requests .threads .ThreadsRequestBody .CreateThreadBody
44
30
import sttp .openai .requests .threads .ThreadsResponseData .{DeleteThreadResponse , ThreadData }
45
31
import sttp .openai .requests .threads .messages .ThreadMessagesRequestBody .CreateMessage
46
32
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 ._
54
34
import sttp .openai .requests .threads .runs .ThreadRunsResponseData .{ListRunStepsResponse , ListRunsResponse , RunData , RunStepData }
55
- import sttp .openai .requests .threads .QueryParameters
56
35
import sttp .openai .requests .vectorstore .VectorStoreRequestBody .{CreateVectorStoreBody , ModifyVectorStoreBody }
57
36
import sttp .openai .requests .vectorstore .VectorStoreResponseData .{DeleteVectorStoreResponse , ListVectorStoresResponse , VectorStore }
58
37
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 }
64
39
65
40
import java .io .{File , InputStream }
66
41
import java .nio .file .Paths
@@ -96,6 +71,8 @@ class OpenAI(authToken: String, baseUri: Uri = OpenAIUris.OpenAIBaseUri) {
96
71
*
97
72
* @param completionBody
98
73
* 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.
99
76
*/
100
77
def createCompletion (completionBody : CompletionsBody ): Request [Either [OpenAIException , CompletionsResponse ]] =
101
78
openAIAuthRequest
@@ -245,19 +222,6 @@ class OpenAI(authToken: String, baseUri: Uri = OpenAIUris.OpenAIBaseUri) {
245
222
}
246
223
.response(asJson_parseErrors[ImageResponse ])
247
224
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
-
261
225
/** Creates a model response for the given chat conversation defined in chatBody.
262
226
*
263
227
* [[https://platform.openai.com/docs/api-reference/chat/create ]]
@@ -567,42 +531,6 @@ class OpenAI(authToken: String, baseUri: Uri = OpenAIUris.OpenAIBaseUri) {
567
531
}
568
532
.response(asJson_parseErrors[AudioResponse ])
569
533
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
-
606
534
/** Gets info about the fine-tune job.
607
535
*
608
536
* [[https://platform.openai.com/docs/api-reference/embeddings/create ]]
@@ -616,42 +544,6 @@ class OpenAI(authToken: String, baseUri: Uri = OpenAIUris.OpenAIBaseUri) {
616
544
.body(embeddingsBody)
617
545
.response(asJson_parseErrors[EmbeddingResponse ])
618
546
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
-
655
547
/** Create a thread.
656
548
*
657
549
* [[https://platform.openai.com/docs/api-reference/threads/createThread ]]
@@ -1129,11 +1021,9 @@ private class OpenAIUris(val baseUri: Uri) {
1129
1021
val ChatCompletions : Uri = uri " $baseUri/chat/completions "
1130
1022
val Completions : Uri = uri " $baseUri/completions "
1131
1023
val CreateImage : Uri = imageBase.addPath(" generations" )
1132
- val Edits : Uri = uri " $baseUri/edits "
1133
1024
val Embeddings : Uri = uri " $baseUri/embeddings "
1134
1025
val EditImage : Uri = imageBase.addPath(" edits" )
1135
1026
val Files : Uri = uri " $baseUri/files "
1136
- val FineTunes : Uri = uri " $baseUri/fine-tunes "
1137
1027
val Models : Uri = uri " $baseUri/models "
1138
1028
val Moderations : Uri = uri " $baseUri/moderations "
1139
1029
val Transcriptions : Uri = audioBase.addPath(" transcriptions" )
@@ -1145,12 +1035,8 @@ private class OpenAIUris(val baseUri: Uri) {
1145
1035
val ThreadsRuns : Uri = uri " $baseUri/threads/runs "
1146
1036
val VectorStores : Uri = uri " $baseUri/vector_stores "
1147
1037
1148
- def cancelFineTune (fineTuneId : String ): Uri = FineTunes .addPath(fineTuneId, " cancel" )
1149
1038
def file (fileId : String ): Uri = Files .addPath(fileId)
1150
1039
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)
1154
1040
def model (modelId : String ): Uri = Models .addPath(modelId)
1155
1041
1156
1042
def assistant (assistantId : String ): Uri = Assistants .addPath(assistantId)
0 commit comments