11package com .plexpt .chatgpt ;
22
3- import com .plexpt .chatgpt .util .fastjson .JSON ;
3+ import cn .hutool .core .date .DateTime ;
4+ import cn .hutool .core .date .DateUtil ;
5+ import cn .hutool .core .util .RandomUtil ;
6+ import cn .hutool .http .ContentType ;
7+ import cn .hutool .http .Header ;
48import com .plexpt .chatgpt .api .Api ;
59import com .plexpt .chatgpt .entity .BaseResponse ;
10+ import com .plexpt .chatgpt .entity .audio .AudioResponse ;
11+ import com .plexpt .chatgpt .entity .audio .Transcriptions ;
612import com .plexpt .chatgpt .entity .billing .CreditGrantsResponse ;
713import com .plexpt .chatgpt .entity .billing .SubscriptionData ;
814import com .plexpt .chatgpt .entity .billing .UseageResponse ;
915import com .plexpt .chatgpt .entity .chat .ChatCompletion ;
1016import com .plexpt .chatgpt .entity .chat .ChatCompletionResponse ;
1117import com .plexpt .chatgpt .entity .chat .Message ;
18+ import com .plexpt .chatgpt .entity .embedding .EmbeddingRequest ;
19+ import com .plexpt .chatgpt .entity .embedding .EmbeddingResult ;
20+ import com .plexpt .chatgpt .entity .images .Edits ;
21+ import com .plexpt .chatgpt .entity .images .Generations ;
22+ import com .plexpt .chatgpt .entity .images .ImagesRensponse ;
23+ import com .plexpt .chatgpt .entity .images .Variations ;
1224import com .plexpt .chatgpt .exception .ChatException ;
13-
14- import java .math .BigDecimal ;
15- import java .net .Proxy ;
16- import java .text .SimpleDateFormat ;
17- import java .util .Arrays ;
18- import java .util .Date ;
19- import java .util .List ;
20- import java .util .Locale ;
21- import java .util .Objects ;
22- import java .util .concurrent .TimeUnit ;
23-
24- import cn .hutool .core .date .DateTime ;
25- import cn .hutool .core .date .DateUtil ;
26- import cn .hutool .core .util .RandomUtil ;
27- import cn .hutool .http .ContentType ;
28- import cn .hutool .http .Header ;
25+ import com .plexpt .chatgpt .util .fastjson .JSON ;
2926import io .reactivex .Single ;
30- import lombok .AllArgsConstructor ;
31- import lombok .Builder ;
32- import lombok .Getter ;
33- import lombok .NoArgsConstructor ;
34- import lombok .Setter ;
27+ import lombok .*;
3528import lombok .extern .slf4j .Slf4j ;
36- import okhttp3 .OkHttpClient ;
37- import okhttp3 .Request ;
38- import okhttp3 .Response ;
29+ import okhttp3 .*;
3930import retrofit2 .Retrofit ;
4031import retrofit2 .adapter .rxjava2 .RxJava2CallAdapterFactory ;
4132import retrofit2 .converter .jackson .JacksonConverterFactory ;
4233
34+ import java .io .File ;
35+ import java .math .BigDecimal ;
36+ import java .net .Proxy ;
37+ import java .util .*;
38+ import java .util .concurrent .TimeUnit ;
39+
4340import static com .plexpt .chatgpt .util .FormatDateUtil .formatDate ;
4441
4542
@@ -122,9 +119,7 @@ public ChatGPT init() {
122119 if (Objects .nonNull (proxy )) {
123120 client .proxy (proxy );
124121 }
125- OkHttpClient httpClient = client .build ();
126- this .okHttpClient = httpClient ;
127-
122+ this .okHttpClient = client .build ();
128123
129124 this .apiClient = new Retrofit .Builder ()
130125 .baseUrl (this .apiHost )
@@ -153,7 +148,7 @@ public ChatCompletionResponse chatCompletion(ChatCompletion chatCompletion) {
153148 /**
154149 * 支持多个问答参数来与服务端进行对话
155150 *
156- * @param messages 问答参数,即咨询的内容
151+ * @param messages 问答参数,即咨询的内容
157152 * @return 服务端的问答响应
158153 */
159154 public ChatCompletionResponse chatCompletion (List <Message > messages ) {
@@ -163,6 +158,7 @@ public ChatCompletionResponse chatCompletion(List<Message> messages) {
163158
164159 /**
165160 * 与服务端进行对话
161+ *
166162 * @param message 问答参数,即咨询的内容
167163 * @return 服务端的问答响应
168164 */
@@ -174,22 +170,79 @@ public String chat(String message) {
174170 return response .getChoices ().get (0 ).getMessage ().getContent ();
175171 }
176172
173+
177174 /**
178- * 余额查询
179- *
180- * @return 余额总金额及明细
175+ * 生成向量
181176 */
182- public CreditGrantsResponse creditGrants ( ) {
183- Single <CreditGrantsResponse > creditGrants = this .apiClient .creditGrants ( );
184- return creditGrants .blockingGet ();
177+ public EmbeddingResult createEmbeddings ( EmbeddingRequest request ) {
178+ Single <EmbeddingResult > embeddingResultSingle = this .apiClient .createEmbeddings ( request );
179+ return embeddingResultSingle .blockingGet ();
185180 }
186181
187182
183+ /**
184+ * 生成向量
185+ */
186+ public EmbeddingResult createEmbeddings (String input , String user ) {
187+ EmbeddingRequest request = EmbeddingRequest .builder ()
188+ .input (Collections .singletonList (input ))
189+ .model (EmbeddingRequest .EmbeddingModelEnum .TEXT_EMBEDDING_ADA_002 .getModelName ())
190+ .user (user )
191+ .build ();
192+ Single <EmbeddingResult > embeddingResultSingle = this .apiClient .createEmbeddings (request );
193+ return embeddingResultSingle .blockingGet ();
194+ }
195+
196+
197+ public ImagesRensponse imageGeneration (Generations generations ) {
198+ Single <ImagesRensponse > imagesRensponse =
199+ this .apiClient .imageGenerations (generations );
200+ return imagesRensponse .blockingGet ();
201+ }
202+
203+ public ImagesRensponse imageEdit (File image , File mask , Edits edits ) {
204+ RequestBody i = RequestBody .create (MediaType .parse ("multipart/form-data;charset=UTF-8" ), image );
205+ MultipartBody .Part iPart = MultipartBody .Part .createFormData ("image" , image .getName (), i );
206+
207+ RequestBody m = RequestBody .create (MediaType .parse ("multipart/form-data;charset=UTF-8" ), mask );
208+ MultipartBody .Part mPart = MultipartBody .Part .createFormData ("mask" , mask .getName (), m );
209+
210+ Single <ImagesRensponse > imagesRensponse =
211+ this .apiClient .imageEdits (iPart , mPart , edits );
212+ return imagesRensponse .blockingGet ();
213+ }
214+
215+ public ImagesRensponse imageVariation (File image , Variations variations ) {
216+ RequestBody i = RequestBody .create (MediaType .parse ("multipart/form-data;charset=UTF-8" ), image );
217+ MultipartBody .Part iPart = MultipartBody .Part .createFormData ("image" , image .getName (), i );
218+ Single <ImagesRensponse > imagesRensponse =
219+ this .apiClient .imageVariations (iPart , variations );
220+ return imagesRensponse .blockingGet ();
221+ }
222+
223+
224+ public AudioResponse audioTranscription (File audio , Transcriptions transcriptions ) {
225+ RequestBody a = RequestBody .create (MediaType .parse ("multipart/form-data;charset=UTF-8" ), audio );
226+ MultipartBody .Part aPart = MultipartBody .Part .createFormData ("image" , audio .getName (), a );
227+ Single <AudioResponse > audioResponse =
228+ this .apiClient .audioTranscriptions (aPart , transcriptions );
229+ return audioResponse .blockingGet ();
230+ }
231+
232+ public AudioResponse audioTranslation (File audio , Transcriptions transcriptions ) {
233+ RequestBody a = RequestBody .create (MediaType .parse ("multipart/form-data;charset=UTF-8" ), audio );
234+ MultipartBody .Part aPart = MultipartBody .Part .createFormData ("image" , audio .getName (), a );
235+ Single <AudioResponse > audioResponse =
236+ this .apiClient .audioTranslations (aPart , transcriptions );
237+ return audioResponse .blockingGet ();
238+ }
239+
188240 /**
189241 * 余额查询
190242 *
191243 * @return 余额总金额
192244 */
245+ @ Deprecated
193246 public BigDecimal balance () {
194247 Single <SubscriptionData > subscription = apiClient .subscription ();
195248 SubscriptionData subscriptionData = subscription .blockingGet ();
@@ -209,6 +262,7 @@ public BigDecimal balance() {
209262 *
210263 * @return 余额总金额
211264 */
265+ @ Deprecated
212266 public static BigDecimal balance (String key ) {
213267 ChatGPT chatGPT = ChatGPT .builder ()
214268 .apiKey (key )
@@ -217,4 +271,15 @@ public static BigDecimal balance(String key) {
217271
218272 return chatGPT .balance ();
219273 }
274+
275+ /**
276+ * 余额查询
277+ *
278+ * @return 余额总金额及明细
279+ */
280+ @ Deprecated
281+ public CreditGrantsResponse creditGrants () {
282+ Single <CreditGrantsResponse > creditGrants = this .apiClient .creditGrants ();
283+ return creditGrants .blockingGet ();
284+ }
220285}
0 commit comments