Skip to content

Commit af498ee

Browse files
authored
Support File API (#25)
2 parents e878240 + 86f04fe commit af498ee

File tree

7 files changed

+133
-4
lines changed

7 files changed

+133
-4
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,5 @@
33

44
target/
55
pom.xml.versionsBackup
6+
7+
BaseTest.java

docs/docs/reference/openai/files.md

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ Delete a file.
7878

7979
```java
8080
String id = "file-XjGxS3KTG0uNmNOK362iJua3";
81-
this.client.deleteFile(entity.getId());
81+
this.client.deleteFile(entity.getId());
8282
```
8383

8484
Returns:
@@ -90,3 +90,40 @@ Returns:
9090
"deleted": true
9191
}
9292
```
93+
94+
### Retrieve file
95+
96+
---
97+
98+
Returns information about a specific file.
99+
100+
```java
101+
String id = "file-XjGxS3KTG0uNmNOK362iJua3";
102+
this.client.retrieveFile(entity.getId());
103+
```
104+
105+
Returns:
106+
107+
```json
108+
{
109+
"id": "file-XjGxS3KTG0uNmNOK362iJua3",
110+
"object": "file",
111+
"bytes": 140,
112+
"created_at": 1613779657,
113+
"filename": "test.jsonl",
114+
"purpose": "fine-tune"
115+
}
116+
```
117+
118+
### Retrieve file content
119+
120+
---
121+
122+
Returns information about a specific file.
123+
124+
```java
125+
String id = "file-XjGxS3KTG0uNmNOK362iJua3";
126+
this.client.retrieveFileContent(entity.getId());
127+
```
128+
129+
Returns the original content of the uploaded file.

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

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,3 +90,40 @@ this.client.deleteFile(entity.getId());
9090
"deleted": true
9191
}
9292
```
93+
94+
### Retrieve file
95+
96+
---
97+
98+
返回有关特定文件的信息。
99+
100+
```java
101+
String id = "file-XjGxS3KTG0uNmNOK362iJua3";
102+
this.client.retrieveFile(entity.getId());
103+
```
104+
105+
返回:
106+
107+
```json
108+
{
109+
"id": "file-XjGxS3KTG0uNmNOK362iJua3",
110+
"object": "file",
111+
"bytes": 140,
112+
"created_at": 1613779657,
113+
"filename": "test.jsonl",
114+
"purpose": "fine-tune"
115+
}
116+
```
117+
118+
### Retrieve file content
119+
120+
---
121+
122+
返回有关特定文件的信息。
123+
124+
```java
125+
String id = "file-XjGxS3KTG0uNmNOK362iJua3";
126+
this.client.retrieveFileContent(entity.getId());
127+
```
128+
129+
返回上传文件的原始内容。

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,4 +158,18 @@ Single<FileEntity> fetchUploadFile(@Url String url,
158158
*/
159159
@DELETE
160160
Single<FileResponse> fetchDeleteFile(@Url String url);
161+
162+
/**
163+
* Returns information about a specific file.
164+
* 返回有关特定文件的信息。
165+
*/
166+
@GET
167+
Single<FileEntity> fetchRetrieveFile(@Url String url);
168+
169+
/**
170+
* Returns the contents of the specified file
171+
* 返回指定文件的内容
172+
*/
173+
@GET
174+
Single<Object> fetchRetrieveFileContent(@Url String url);
161175
}

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

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ public EditResponse edit(EditEntity configure)
132132
.blockingGet();
133133
}
134134

135-
public FileResponse uploadFile()
135+
public FileResponse files()
136136
{
137137
return this.api.fetchFiles(ProviderUtils.getUrl(provider, UrlModel.FETCH_FILES))
138138
.blockingGet();
@@ -154,6 +154,20 @@ public FileResponse deleteFile(String id)
154154
.blockingGet();
155155
}
156156

157+
public FileEntity retrieveFile(String id)
158+
{
159+
String url = String.join("/", ProviderUtils.getUrl(provider, UrlModel.FETCH_FILES), id);
160+
return this.api.fetchRetrieveFile(url)
161+
.blockingGet();
162+
}
163+
164+
public Object retrieveFileContent(String id)
165+
{
166+
String url = String.join("/", ProviderUtils.getUrl(provider, UrlModel.FETCH_FILES), id, "content");
167+
return this.api.fetchRetrieveFileContent(url)
168+
.blockingGet();
169+
}
170+
157171
public void close()
158172
{
159173
if (ObjectUtils.isNotEmpty(this.client)) {

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

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

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

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public class FileClientTest
1212
@Test
1313
public void testFiles()
1414
{
15-
Assert.assertNotNull(this.client.uploadFile());
15+
Assert.assertNotNull(this.client.files());
1616
}
1717

1818
@Test
@@ -37,4 +37,30 @@ public void testDeleteFile()
3737
Assert.assertTrue(this.client.deleteFile(entity.getId())
3838
.getDeleted());
3939
}
40+
41+
@Test
42+
public void testRetrieveFile()
43+
throws InterruptedException
44+
{
45+
String file = this.getClass().getResource("/test.jsonl").getFile();
46+
FileEntity entity = this.client.uploadFile(FileEntity.builder()
47+
.file(new File(file))
48+
.build());
49+
Thread.sleep(3000);
50+
51+
Assert.assertNotNull(this.client.retrieveFile(entity.getId()));
52+
}
53+
54+
@Test
55+
public void testRetrieveFileContent()
56+
throws InterruptedException
57+
{
58+
String file = this.getClass().getResource("/test.jsonl").getFile();
59+
FileEntity entity = this.client.uploadFile(FileEntity.builder()
60+
.file(new File(file))
61+
.build());
62+
Thread.sleep(3000);
63+
64+
Assert.assertNotNull(this.client.retrieveFileContent(entity.getId()));
65+
}
4066
}

0 commit comments

Comments
 (0)