Skip to content

Commit

Permalink
Released for 1.5.0 (#20)
Browse files Browse the repository at this point in the history
  • Loading branch information
qianmoQ committed Jul 14, 2023
2 parents f72bce5 + 170d5a9 commit 960d4a2
Show file tree
Hide file tree
Showing 18 changed files with 402 additions and 7 deletions.
2 changes: 1 addition & 1 deletion docs/docs/powered_by.zh.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: 客户
title: 用户案例

hide:
- navigation
Expand Down
69 changes: 69 additions & 0 deletions docs/docs/reference/moderations.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
---
title: Moderations
---

!!! Note

Please build the client before calling, the build code is as follows:

```java
OpenAiClient client = OpenAiClient.builder()
.apiHost("https://api.openai.com")
.apiKey(System.getProperty("openai.token"))
.build();
```

`System.getProperty("openai.token")` is the key to access the API authorization.

### Create moderation

---

Classifies if text violates OpenAI's Content Policy

```java
ModerationEntity configure = ModerationEntity.builder()
.inputs(Lists.newArrayList("Hello OpenAi Java SDK"))
.build();
client.moderations(configure);
```

Returns

```json
{
"id": "modr-XXXXX",
"model": "text-moderation-005",
"results": [
{
"flagged": true,
"categories": {
"sexual": false,
"hate": false,
"harassment": false,
"self-harm": false,
"sexual/minors": false,
"hate/threatening": false,
"violence/graphic": false,
"self-harm/intent": false,
"self-harm/instructions": false,
"harassment/threatening": true,
"violence": true
},
"category_scores": {
"sexual": 1.2282071e-06,
"hate": 0.010696256,
"harassment": 0.29842457,
"self-harm": 1.5236925e-08,
"sexual/minors": 5.7246268e-08,
"hate/threatening": 0.0060676364,
"violence/graphic": 4.435014e-06,
"self-harm/intent": 8.098441e-10,
"self-harm/instructions": 2.8498655e-11,
"harassment/threatening": 0.63055265,
"violence": 0.99011886
}
}
]
}
```
69 changes: 69 additions & 0 deletions docs/docs/reference/moderations.zh.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
---
title: Moderations
---

!!! Note

调用前请先构建客户端,构建代码如下:

```java
OpenAiClient client = OpenAiClient.builder()
.apiHost("https://api.openai.com")
.apiKey(System.getProperty("openai.token"))
.build();
```

`System.getProperty("openai.token")` 是访问 API 授权的关键。

### Create moderation

---

对文本是否违反 OpenAI 的内容政策进行分类

```java
ModerationEntity configure = ModerationEntity.builder()
.inputs(Lists.newArrayList("Hello OpenAi Java SDK"))
.build();
client.moderations(configure);
```

Returns

```json
{
"id": "modr-XXXXX",
"model": "text-moderation-005",
"results": [
{
"flagged": true,
"categories": {
"sexual": false,
"hate": false,
"harassment": false,
"self-harm": false,
"sexual/minors": false,
"hate/threatening": false,
"violence/graphic": false,
"self-harm/intent": false,
"self-harm/instructions": false,
"harassment/threatening": true,
"violence": true
},
"category_scores": {
"sexual": 1.2282071e-06,
"hate": 0.010696256,
"harassment": 0.29842457,
"self-harm": 1.5236925e-08,
"sexual/minors": 5.7246268e-08,
"hate/threatening": 0.0060676364,
"violence/graphic": 4.435014e-06,
"self-harm/intent": 8.098441e-10,
"self-harm/instructions": 2.8498655e-11,
"harassment/threatening": 0.63055265,
"violence": 0.99011886
}
}
]
}
```
8 changes: 8 additions & 0 deletions docs/docs/released.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,14 @@ hide:
- navigation
---

### 1.5.0

---

- Supports chinese documents
- Support create translation
- Support create moderation

### 1.4.0

---
Expand Down
16 changes: 12 additions & 4 deletions docs/docs/released.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,24 @@ hide:
- navigation
---

### 1.5.0

---

- 支持中文文档
- 支持创建翻译
- 支持创建审核

### 1.4.0

---

- 支持图像 API
- 创建图像
- 创建图像编辑
- 创建图像变化
- 创建图像
- 创建图像编辑
- 创建图像变化
- 支持 embeddings API
- 创建 embeddings
- 创建 embeddings

### 1.3.0

Expand Down
1 change: 1 addition & 0 deletions docs/mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ nav:
- reference/images.md
- reference/embeddings.md
- reference/audio.md
- reference/moderations.md
- Provider:
- reference/provider/azure.md
- released.md
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

<groupId>org.devlive.sdk</groupId>
<artifactId>openai-java-sdk</artifactId>
<version>1.5.0-SNAPSHOT</version>
<version>1.5.0</version>

<name>openai-java-sdk</name>
<description>
Expand Down
10 changes: 10 additions & 0 deletions src/main/java/org/devlive/sdk/openai/DefaultApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,15 @@
import org.devlive.sdk.openai.entity.EmbeddingEntity;
import org.devlive.sdk.openai.entity.ImageEntity;
import org.devlive.sdk.openai.entity.ModelEntity;
import org.devlive.sdk.openai.entity.ModerationEntity;
import org.devlive.sdk.openai.entity.UserKeyEntity;
import org.devlive.sdk.openai.response.AudioResponse;
import org.devlive.sdk.openai.response.CompleteChatResponse;
import org.devlive.sdk.openai.response.CompleteResponse;
import org.devlive.sdk.openai.response.EmbeddingResponse;
import org.devlive.sdk.openai.response.ImageResponse;
import org.devlive.sdk.openai.response.ModelResponse;
import org.devlive.sdk.openai.response.ModerationResponse;
import org.devlive.sdk.openai.response.UserKeyResponse;
import retrofit2.http.Body;
import retrofit2.http.GET;
Expand Down Expand Up @@ -111,4 +113,12 @@ Single<EmbeddingResponse> fetchEmbeddings(@Url String url,
Single<AudioResponse> fetchAudioTranscriptions(@Url String url,
@Part() MultipartBody.Part audio,
@PartMap Map<String, RequestBody> configure);

/**
* Classifies if text violates OpenAI's Content Policy
* 对文本是否违反 OpenAI 的内容政策进行分类
*/
@POST
Single<ModerationResponse> fetchModerations(@Url String url,
@Body ModerationEntity configure);
}
8 changes: 8 additions & 0 deletions src/main/java/org/devlive/sdk/openai/DefaultClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.devlive.sdk.openai.entity.EmbeddingEntity;
import org.devlive.sdk.openai.entity.ImageEntity;
import org.devlive.sdk.openai.entity.ModelEntity;
import org.devlive.sdk.openai.entity.ModerationEntity;
import org.devlive.sdk.openai.entity.UserKeyEntity;
import org.devlive.sdk.openai.model.ProviderModel;
import org.devlive.sdk.openai.model.UrlModel;
Expand All @@ -19,6 +20,7 @@
import org.devlive.sdk.openai.response.EmbeddingResponse;
import org.devlive.sdk.openai.response.ImageResponse;
import org.devlive.sdk.openai.response.ModelResponse;
import org.devlive.sdk.openai.response.ModerationResponse;
import org.devlive.sdk.openai.response.UserKeyResponse;
import org.devlive.sdk.openai.utils.MultipartBodyUtils;
import org.devlive.sdk.openai.utils.ProviderUtils;
Expand Down Expand Up @@ -113,6 +115,12 @@ public AudioResponse audioTranscriptions(AudioEntity configure)
.blockingGet();
}

public ModerationResponse moderations(ModerationEntity configure)
{
return this.api.fetchModerations(ProviderUtils.getUrl(provider, UrlModel.FETCH_MODERATIONS), configure)
.blockingGet();
}

public void close()
{
if (ObjectUtils.isNotEmpty(this.client)) {
Expand Down
43 changes: 43 additions & 0 deletions src/main/java/org/devlive/sdk/openai/entity/CategoryEntity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package org.devlive.sdk.openai.entity;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class CategoryEntity
{
@JsonProperty(value = "sexual")
private Object sexual;

@JsonProperty(value = "hate")
private Object hate;

@JsonProperty(value = "harassment")
private Object harassment;

@JsonProperty(value = "self-harm")
private Object selfHarm;

@JsonProperty(value = "sexual/minors")
private Object sexualMinors;

@JsonProperty(value = "hate/threatening")
private Object hateThreatening;

@JsonProperty(value = "violence/graphic")
private Object violenceGraphic;

@JsonProperty(value = "self-harm/intent")
private Object selfHarmIntent;

@JsonProperty(value = "self-harm/instructions")
private Object selfHarmInstructions;

@JsonProperty(value = "harassment/threatening")
private Object harassmentThreatening;

@JsonProperty(value = "violence")
private Object violence;
}
70 changes: 70 additions & 0 deletions src/main/java/org/devlive/sdk/openai/entity/ModerationEntity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package org.devlive.sdk.openai.entity;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.devlive.sdk.openai.exception.ParamException;
import org.devlive.sdk.openai.model.ModerationModel;

import java.util.List;

@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class ModerationEntity
{
/**
* The input text to classify
* 要分类的输入文本
*/
@JsonProperty(value = "input")
private List<String> inputs;

@JsonProperty(value = "model")
private String model;

private ModerationEntity(ModerationEntityBuilder builder)
{
if (ObjectUtils.isEmpty(builder.inputs)) {
builder.inputs(null);
}
this.inputs = builder.inputs;

if (StringUtils.isEmpty(builder.model)) {
builder.model(ModerationModel.TEXT_MODERATION_LATEST);
}
this.model = builder.model;
}

public static class ModerationEntityBuilder
{
public ModerationEntityBuilder inputs(List<String> inputs)
{
if (ObjectUtils.isEmpty(inputs) || inputs.size() == 0) {
throw new ParamException("Invalid inputs must be non-empty");
}
this.inputs = inputs;
return this;
}

public ModerationEntityBuilder model(ModerationModel model)
{
this.model = model.getName();
return this;
}

public ModerationEntity build()
{
return new ModerationEntity(this);
}
}
}
Loading

0 comments on commit 960d4a2

Please sign in to comment.