Skip to content

Commit 04ae4ac

Browse files
author
马同徽
committed
fixbug:修复传输文件的问题
1 parent 0ff7bea commit 04ae4ac

File tree

7 files changed

+75
-58
lines changed

7 files changed

+75
-58
lines changed

src/main/java/com/plexpt/chatgpt/Audio.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,12 @@
1212
import io.reactivex.Single;
1313
import lombok.*;
1414
import lombok.extern.slf4j.Slf4j;
15-
import okhttp3.OkHttpClient;
16-
import okhttp3.Request;
17-
import okhttp3.Response;
15+
import okhttp3.*;
1816
import retrofit2.Retrofit;
1917
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
2018
import retrofit2.converter.jackson.JacksonConverterFactory;
2119

20+
import java.io.File;
2221
import java.net.Proxy;
2322
import java.util.List;
2423
import java.util.Objects;
@@ -116,14 +115,18 @@ public Audio init() {
116115
return this;
117116
}
118117

119-
public AudioResponse transcriptions(Transcriptions transcriptions){
118+
public AudioResponse transcriptions(File audio,Transcriptions transcriptions){
119+
RequestBody a = RequestBody.create(MediaType.parse("multipart/form-data;charset=UTF-8"), audio);
120+
MultipartBody.Part aPart = MultipartBody.Part.createFormData("image", audio.getName(), a);
120121
Single<AudioResponse> audioResponse =
121-
this.apiClient.audioTranscriptions(transcriptions);
122+
this.apiClient.audioTranscriptions(aPart,transcriptions);
122123
return audioResponse.blockingGet();
123124
}
124-
public AudioResponse translations(Transcriptions transcriptions){
125+
public AudioResponse translations(File audio,Transcriptions transcriptions){
126+
RequestBody a = RequestBody.create(MediaType.parse("multipart/form-data;charset=UTF-8"), audio);
127+
MultipartBody.Part aPart = MultipartBody.Part.createFormData("image", audio.getName(), a);
125128
Single<AudioResponse> audioResponse =
126-
this.apiClient.audioTranslations(transcriptions);
129+
this.apiClient.audioTranslations(aPart,transcriptions);
127130
return audioResponse.blockingGet();
128131
}
129132
}

src/main/java/com/plexpt/chatgpt/Images.java

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,16 @@
1414
import io.reactivex.Single;
1515
import lombok.*;
1616
import lombok.extern.slf4j.Slf4j;
17-
import okhttp3.OkHttpClient;
18-
import okhttp3.Request;
19-
import okhttp3.Response;
17+
import okhttp3.*;
2018
import retrofit2.Retrofit;
2119
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
2220
import retrofit2.converter.jackson.JacksonConverterFactory;
2321

22+
import java.io.File;
2423
import java.net.Proxy;
24+
import java.util.HashMap;
2525
import java.util.List;
26+
import java.util.Map;
2627
import java.util.Objects;
2728
import java.util.concurrent.TimeUnit;
2829

@@ -124,15 +125,23 @@ public ImagesRensponse generations(Generations generations){
124125
return imagesRensponse.blockingGet();
125126
}
126127

127-
public ImagesRensponse edits(Edits edits){
128+
public ImagesRensponse edits(File image,File mask,Edits edits){
129+
RequestBody i = RequestBody.create(MediaType.parse("multipart/form-data;charset=UTF-8"), image);
130+
MultipartBody.Part iPart = MultipartBody.Part.createFormData("image", image.getName(), i);
131+
132+
RequestBody m = RequestBody.create(MediaType.parse("multipart/form-data;charset=UTF-8"), mask);
133+
MultipartBody.Part mPart = MultipartBody.Part.createFormData("mask", mask.getName(), m);
134+
128135
Single<ImagesRensponse> imagesRensponse =
129-
this.apiClient.imageEdits(edits);
136+
this.apiClient.imageEdits(iPart,mPart,edits);
130137
return imagesRensponse.blockingGet();
131138
}
132139

133-
public ImagesRensponse variations(Variations variations){
140+
public ImagesRensponse variations(File image,Variations variations){
141+
RequestBody i = RequestBody.create(MediaType.parse("multipart/form-data;charset=UTF-8"), image);
142+
MultipartBody.Part iPart = MultipartBody.Part.createFormData("image", image.getName(), i);
134143
Single<ImagesRensponse> imagesRensponse =
135-
this.apiClient.imageVariations(variations);
144+
this.apiClient.imageVariations(iPart,variations);
136145
return imagesRensponse.blockingGet();
137146
}
138147
}

src/main/java/com/plexpt/chatgpt/Test.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
package com.plexpt.chatgpt;
22

3+
import com.plexpt.chatgpt.entity.audio.AudioResponse;
4+
import com.plexpt.chatgpt.entity.audio.Transcriptions;
5+
import com.plexpt.chatgpt.entity.audio.enums.AudioModel;
36
import com.plexpt.chatgpt.entity.images.Generations;
47
import com.plexpt.chatgpt.entity.images.ImagesRensponse;
8+
import com.plexpt.chatgpt.entity.images.Variations;
59
import com.plexpt.chatgpt.util.Proxys;
610

11+
import java.io.File;
712
import java.net.Proxy;
813
import java.util.List;
914

@@ -17,20 +22,33 @@ public static void main(String[] args) {
1722
Proxy proxys = Proxys.http("127.0.0.1",10809);
1823
Images images = Images.builder()
1924
.proxy(proxys)
20-
.apiKey("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")
25+
.apiKey("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")
2126
.apiHost("https://api.openai.com/")
2227
.timeout(900)
2328
.build()
2429
.init();
2530

31+
File file = new File("C:\\Users\\马同徽\\Pictures\\微信图片_20230606140621.png");
32+
Variations variations = Variations.ofURL(1,"256x256");
2633
Generations generations = Generations.ofURL("一只鲨鱼和一直蜜蜂结合成一种动物",1,"256x256");
27-
ImagesRensponse imagesRensponse = images.generations(generations);
34+
ImagesRensponse imagesRensponse = images.variations(file,variations);
2835
System.out.println(imagesRensponse.getCreated());
2936
System.out.println(imagesRensponse.getCode());
3037
System.out.println(imagesRensponse.getMsg());
3138
List<Object> data = imagesRensponse.getData();
3239
for(Object o:data){
3340
System.out.println(o.toString());
3441
}
42+
/*Audio audio = Audio.builder()
43+
.proxy(proxys)
44+
.apiKey("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")
45+
.apiHost("https://api.openai.com/")
46+
.timeout(900)
47+
.build()
48+
.init();
49+
File file = new File("D:\\Jenny.mp3");
50+
Transcriptions transcriptions = Transcriptions.of(file, AudioModel.WHISPER1.getValue());
51+
AudioResponse response = audio.transcriptions(transcriptions);
52+
System.out.println(response.getText());*/
3553
}
3654
}

src/main/java/com/plexpt/chatgpt/api/Api.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,12 @@
1313
import com.plexpt.chatgpt.entity.images.ImagesRensponse;
1414
import com.plexpt.chatgpt.entity.images.Variations;
1515
import io.reactivex.Single;
16+
import okhttp3.MultipartBody;
17+
import okhttp3.RequestBody;
1618
import retrofit2.http.*;
1719

20+
import java.util.Map;
21+
1822

1923
/**
2024
*
@@ -41,29 +45,34 @@ public interface Api {
4145
*/
4246
@Multipart
4347
@POST("v1/images/edits")
44-
Single<ImagesRensponse> imageEdits(@PartMap Edits edits);
48+
Single<ImagesRensponse> imageEdits(@Part() MultipartBody.Part image,
49+
@Part() MultipartBody.Part mask,
50+
@PartMap Edits edits);
4551

4652

4753
/**
4854
* image_variations
4955
*/
5056
@Multipart
5157
@POST("v1/images/variations")
52-
Single<ImagesRensponse> imageVariations(@PartMap Variations variations);
58+
Single<ImagesRensponse> imageVariations(@Part() MultipartBody.Part image,
59+
@PartMap Variations variations);
5360

5461
/**
5562
* audio_transcriptions
5663
*/
5764
@Multipart
5865
@POST("v1/audio/transcriptions")
59-
Single<AudioResponse> audioTranscriptions(@PartMap Transcriptions transcriptions);
66+
Single<AudioResponse> audioTranscriptions(@Part() MultipartBody.Part audio,
67+
@PartMap Transcriptions transcriptions);
6068

6169
/**
6270
* audio_translations
6371
*/
6472
@Multipart
6573
@POST("v1/audio/translations")
66-
Single<AudioResponse> audioTranslations(@PartMap Transcriptions transcriptions);
74+
Single<AudioResponse> audioTranslations(@Part() MultipartBody.Part audio,
75+
@PartMap Transcriptions transcriptions);
6776

6877

6978
/**

src/main/java/com/plexpt/chatgpt/entity/audio/Transcriptions.java

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,12 @@
1313
*/
1414
public class Transcriptions extends HashMap<String, RequestBody> {
1515

16-
public Transcriptions(File file, String model){
17-
this.put("file",RequestBody.create(MediaType.parse("multipart/form-data;charset=UTF-8"), file));
18-
this.put("model",RequestBody.create(MediaType.parse("text/plain;charset=UTF-8"), model));
19-
}
20-
21-
public Transcriptions(File file, String model, String prompt){
22-
this.put("file",RequestBody.create(MediaType.parse("multipart/form-data;charset=UTF-8"), file));
16+
public Transcriptions(String model, String prompt){
2317
this.put("model",RequestBody.create(MediaType.parse("text/plain;charset=UTF-8"), model));
2418
this.put("prompt",RequestBody.create(MediaType.parse("text/plain;charset=UTF-8"), prompt));
2519
}
2620

27-
public static Transcriptions of(File file, String model) {
28-
return new Transcriptions(file,model);
29-
}
30-
public static Transcriptions of(File file, String model, String prompt) {
31-
return new Transcriptions(file,model,prompt);
21+
public static Transcriptions of(String model, String prompt) {
22+
return new Transcriptions(model,prompt);
3223
}
3324
}

src/main/java/com/plexpt/chatgpt/entity/images/Edits.java

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,32 +15,18 @@
1515

1616
public class Edits extends HashMap<String, RequestBody> {
1717

18-
public Edits(File image,String prompt, int n, String size,String response_format){
19-
this.put("image",RequestBody.create(MediaType.parse("multipart/form-data;charset=UTF-8"), image));
18+
public Edits(String prompt, int n, String size,String response_format){
2019
this.put("prompt",RequestBody.create(MediaType.parse("text/plain;charset=UTF-8"), prompt));
2120
this.put("n",RequestBody.create(MediaType.parse("text/plain;charset=UTF-8"), String.valueOf(n)));
2221
this.put("size",RequestBody.create(MediaType.parse("text/plain;charset=UTF-8"), size));
2322
this.put("response_format",RequestBody.create(MediaType.parse("text/plain;charset=UTF-8"), response_format));
2423
}
25-
public Edits(File image,String prompt, int n, String size,File mask,String response_format){
26-
this.put("image",RequestBody.create(MediaType.parse("multipart/form-data;charset=UTF-8"), image));
27-
this.put("prompt",RequestBody.create(MediaType.parse("text/plain;charset=UTF-8"), prompt));
28-
this.put("n",RequestBody.create(MediaType.parse("text/plain;charset=UTF-8"), String.valueOf(n)));
29-
this.put("size",RequestBody.create(MediaType.parse("text/plain;charset=UTF-8"), size));
30-
this.put("mask",RequestBody.create(MediaType.parse("multipart/form-data;charset=UTF-8"), mask));
31-
this.put("response_format",RequestBody.create(MediaType.parse("text/plain;charset=UTF-8"), response_format));
32-
}
33-
public static Edits ofURL(File image,String prompt, int n, String size) {
34-
return new Edits(image,prompt,n,size,ResponseFormat.URL.getValue());
35-
}
36-
public static Edits ofURL(File image,String prompt, int n, String size,File mask) {
37-
return new Edits(image,prompt,n,size,mask,ResponseFormat.URL.getValue());
24+
public static Edits ofURL(String prompt, int n, String size) {
25+
return new Edits(prompt,n,size,ResponseFormat.URL.getValue());
3826
}
3927

40-
public static Edits ofB64_JSON(File image,String prompt, int n, String size) {
41-
return new Edits(image,prompt,n,size,ResponseFormat.B64_JSON.getValue());
42-
}
43-
public static Edits ofB64_JSON(File image,String prompt, int n, String size,File mask) {
44-
return new Edits(image,prompt,n,size,mask,ResponseFormat.B64_JSON.getValue());
28+
public static Edits ofB64_JSON(String prompt, int n, String size) {
29+
return new Edits(prompt,n,size,ResponseFormat.B64_JSON.getValue());
4530
}
31+
4632
}

src/main/java/com/plexpt/chatgpt/entity/images/Variations.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22

33
import com.plexpt.chatgpt.entity.images.enums.ResponseFormat;
44
import okhttp3.MediaType;
5+
import okhttp3.MultipartBody;
56
import okhttp3.RequestBody;
67

78
import java.io.File;
89
import java.util.HashMap;
10+
import java.util.Objects;
911

1012
/**
1113
* @Author matoooo
@@ -15,18 +17,17 @@
1517

1618
public class Variations extends HashMap<String, RequestBody> {
1719

18-
public Variations(File image, int n, String size, String response_format){
19-
this.put("image",RequestBody.create(MediaType.parse("multipart/form-data;charset=UTF-8"), image));
20+
public Variations(int n, String size, String response_format){
2021
this.put("n",RequestBody.create(MediaType.parse("text/plain;charset=UTF-8"), String.valueOf(n)));
2122
this.put("size",RequestBody.create(MediaType.parse("text/plain;charset=UTF-8"), size));
2223
this.put("response_format",RequestBody.create(MediaType.parse("text/plain;charset=UTF-8"), response_format));
2324
}
2425

25-
public static Variations ofURL(File image, int n, String size) {
26-
return new Variations(image,n,size, ResponseFormat.URL.getValue());
26+
public static Variations ofURL(int n, String size) {
27+
return new Variations(n,size, ResponseFormat.URL.getValue());
2728
}
2829

29-
public static Variations ofB64_JSON(File image, int n, String size) {
30-
return new Variations(image,n,size,ResponseFormat.B64_JSON.getValue());
30+
public static Variations ofB64_JSON(int n, String size) {
31+
return new Variations(n,size,ResponseFormat.B64_JSON.getValue());
3132
}
3233
}

0 commit comments

Comments
 (0)