Skip to content

Commit 065a065

Browse files
committed
[Files] Support delete file
1 parent f7c27a5 commit 065a065

7 files changed

Lines changed: 90 additions & 13 deletions

File tree

docs/docs/reference/openai/files.md

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ String file = this.getClass().getResource("/test.jsonl").getFile();
5454
FileEntity configure = FileEntity.builder()
5555
.file(new File(file))
5656
.build();
57-
this.client.files(configure);
57+
this.client.uploadFile(configure);
5858
```
5959

6060
Returns:
@@ -69,3 +69,24 @@ Returns:
6969
"purpose": "fine-tune"
7070
}
7171
```
72+
73+
### Delete file
74+
75+
---
76+
77+
Delete a file.
78+
79+
```java
80+
String id = "file-XjGxS3KTG0uNmNOK362iJua3";
81+
this.client.deleteFile(entity.getId());
82+
```
83+
84+
Returns:
85+
86+
```json
87+
{
88+
"id": "file-XjGxS3KTG0uNmNOK362iJua3",
89+
"object": "file",
90+
"deleted": true
91+
}
92+
```

docs/docs/reference/openai/files.zh.md

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ String file = this.getClass().getResource("/test.jsonl").getFile();
5454
FileEntity configure = FileEntity.builder()
5555
.file(new File(file))
5656
.build();
57-
this.client.files(configure);
57+
this.client.uploadFile(configure);
5858
```
5959

6060
返回:
@@ -69,3 +69,24 @@ this.client.files(configure);
6969
"purpose": "fine-tune"
7070
}
7171
```
72+
73+
### Delete file
74+
75+
---
76+
77+
删除文件
78+
79+
```java
80+
String id = "file-XjGxS3KTG0uNmNOK362iJua3";
81+
this.client.deleteFile(entity.getId());
82+
```
83+
84+
返回:
85+
86+
```json
87+
{
88+
"id": "file-XjGxS3KTG0uNmNOK362iJua3",
89+
"object": "file",
90+
"deleted": true
91+
}
92+
```

src/main/java/org/devlive/sdk/openai/DefaultApi.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.devlive.sdk.openai.response.ModerationResponse;
2424
import org.devlive.sdk.openai.response.UserKeyResponse;
2525
import retrofit2.http.Body;
26+
import retrofit2.http.DELETE;
2627
import retrofit2.http.GET;
2728
import retrofit2.http.Multipart;
2829
import retrofit2.http.POST;
@@ -147,7 +148,14 @@ Single<EditResponse> fetchEdits(@Url String url,
147148
*/
148149
@POST
149150
@Multipart
150-
Single<FileEntity> fetchFiles(@Url String url,
151+
Single<FileEntity> fetchUploadFile(@Url String url,
151152
@Part() MultipartBody.Part file,
152153
@PartMap Map<String, RequestBody> configure);
154+
155+
/**
156+
* Delete a file.
157+
* 删除文件。
158+
*/
159+
@DELETE
160+
Single<FileResponse> fetchDeleteFile(@Url String url);
153161
}

src/main/java/org/devlive/sdk/openai/DefaultClient.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,21 +132,28 @@ public EditResponse edit(EditEntity configure)
132132
.blockingGet();
133133
}
134134

135-
public FileResponse files()
135+
public FileResponse uploadFile()
136136
{
137137
return this.api.fetchFiles(ProviderUtils.getUrl(provider, UrlModel.FETCH_FILES))
138138
.blockingGet();
139139
}
140140

141-
public FileEntity files(FileEntity configure)
141+
public FileEntity uploadFile(FileEntity configure)
142142
{
143143
MultipartBody.Part fileBody = MultipartBodyUtils.getPart(configure.getFile(), "file");
144-
return this.api.fetchFiles(ProviderUtils.getUrl(provider, UrlModel.FETCH_FILES),
144+
return this.api.fetchUploadFile(ProviderUtils.getUrl(provider, UrlModel.FETCH_FILES),
145145
fileBody,
146146
configure.convertMap())
147147
.blockingGet();
148148
}
149149

150+
public FileResponse deleteFile(String id)
151+
{
152+
String url = String.join("/", ProviderUtils.getUrl(provider, UrlModel.FETCH_FILES), id);
153+
return this.api.fetchDeleteFile(url)
154+
.blockingGet();
155+
}
156+
150157
public void close()
151158
{
152159
if (ObjectUtils.isNotEmpty(this.client)) {

src/main/java/org/devlive/sdk/openai/response/FileResponse.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,10 @@ public class FileResponse
2828

2929
@JsonProperty(value = "usage")
3030
private UsageEntity usage;
31+
32+
@JsonProperty(value = "id")
33+
private String id;
34+
35+
@JsonProperty(value = "deleted")
36+
private Boolean deleted;
3137
}

src/test/java/org/devlive/sdk/openai/BaseTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public void before()
1111
{
1212
client = OpenAiClient.builder()
1313
.apiKey(System.getProperty("openai.token"))
14-
.apiKey("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")
14+
.apiKey("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")
1515
.build();
1616
}
1717
}

src/test/java/org/devlive/sdk/openai/FileClientTest.java

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,29 @@ public class FileClientTest
1212
@Test
1313
public void testFiles()
1414
{
15-
Assert.assertNotNull(this.client.files());
15+
Assert.assertNotNull(this.client.uploadFile());
16+
}
1617

17-
/**
18-
* Test upload
19-
* 测试上传
20-
*/
18+
@Test
19+
public void testUploadFile()
20+
{
2121
String file = this.getClass().getResource("/test.jsonl").getFile();
22-
Assert.assertNotNull(this.client.files(FileEntity.builder()
22+
Assert.assertNotNull(this.client.uploadFile(FileEntity.builder()
2323
.file(new File(file))
2424
.build()));
2525
}
26+
27+
@Test
28+
public void testDeleteFile()
29+
throws InterruptedException
30+
{
31+
String file = this.getClass().getResource("/test.jsonl").getFile();
32+
FileEntity entity = this.client.uploadFile(FileEntity.builder()
33+
.file(new File(file))
34+
.build());
35+
Thread.sleep(3000);
36+
37+
Assert.assertTrue(this.client.deleteFile(entity.getId())
38+
.getDeleted());
39+
}
2640
}

0 commit comments

Comments
 (0)