Skip to content
This repository has been archived by the owner on Jun 6, 2024. It is now read-only.

Commit

Permalink
Merge branch 'main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
AlphaSerpentis authored Nov 12, 2023
2 parents 2456ce5 + bc81a29 commit 2a8b1a1
Show file tree
Hide file tree
Showing 33 changed files with 909 additions and 27 deletions.
14 changes: 0 additions & 14 deletions .github/workflows/gradle-wrapper-validation.yml

This file was deleted.

24 changes: 24 additions & 0 deletions api/src/main/java/com/theokanning/openai/assistants/Assistant.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.theokanning.openai.assistants;

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

@Data
public class Assistant extends AssistantBase {

/**
* The identifier, which can be referenced in API endpoints.
*/
String id;

/**
* The object type which is always 'assistant'
*/
String object;

/**
* The Unix timestamp(in seconds) for when the assistant was created
*/
@JsonProperty("created_at")
Integer createdAt;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package com.theokanning.openai.assistants;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;

import java.util.List;
import java.util.Map;

@Builder
@NoArgsConstructor
@AllArgsConstructor
@Data
public class AssistantBase {

/**
* ID of the model to use
*/
@NonNull
String model;

/**
* The name of the assistant. The maximum length is 256
*/
String name;

/**
* The description of the assistant.
*/
String description;

/**
* The system instructions that the assistant uses.
*/
String instructions;

/**
* A list of tools enabled on the assistant.
*/
List<Tool> tools;

/**
* A list of file IDs attached to this assistant.
*/
@JsonProperty("file_ids")
List<String> fields;

/**
* Set of 16 key-value pairs that can be attached to an object.
*/
Map<String, String> metadata;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.theokanning.openai.assistants;

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

@Data
public class AssistantFile {

/**
* The identifier of the Assistant File
*/
String id;

/**
* The object type, which is always assistant.file.
*/
String object;

/**
* The Unix timestamp (in seconds) for when the assistant file was created.
*/
@JsonProperty("created_at")
String createdAt;

/**
* The assistant ID that the file is attached to
*/
@JsonProperty("assistant_id")
String assistantId;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.theokanning.openai.assistants;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Builder
@NoArgsConstructor
@AllArgsConstructor
@Data
public class AssistantFileRequest {

@JsonProperty("file_id")
String fileId;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.theokanning.openai.assistants;


public class AssistantRequest extends AssistantBase {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.theokanning.openai.assistants;

import com.fasterxml.jackson.annotation.JsonProperty;

public enum AssistantSortOrder {

@JsonProperty("asc")
ASC,

@JsonProperty("desc")
DESC
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.theokanning.openai.assistants;

import com.fasterxml.jackson.annotation.JsonProperty;

public enum AssistantToolsEnum {

@JsonProperty("code_interpreter")
CODE_INTERPRETER,

@JsonProperty("function")
FUNCTION,

@JsonProperty("retrieval")
RETRIEVAL
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.theokanning.openai.assistants;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.theokanning.openai.OpenAiResponse;

public class ListAssistant<T extends AssistantBase> extends OpenAiResponse<T> {

@JsonProperty("first_id")
String firstId;

@JsonProperty("last_id")
String lastId;

@JsonProperty("has_more")
boolean hasMore;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.theokanning.openai.assistants;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Builder
@NoArgsConstructor
@AllArgsConstructor
@Data
public class ListAssistantQueryRequest {
/**
* A limit on the number of objects to be returned.
* Limit can range between 1 and 100, and the default is 20
*/

Integer limit;

/**
* Sort order by the 'created_at' timestamp of the objects.
* 'asc' for ascending order and 'desc' for descending order.
*/
AssistantSortOrder order;

/**
* A cursor for use in pagination. after is an object ID that defines your place in the list.
* For instance, if you make a list request and receive 100 objects, ending with obj_foo,
* your subsequent call can include after=obj_foo in order to fetch the next page of the list
*/
String after;

/**
* A cursor for use in pagination. before is an object ID that defines your place in the list.
* For instance, if you make a list request and receive 100 objects, ending with obj_foo,
* your subsequent call can include before=obj_foo in order to fetch the previous page of the list.
*/
String before;
}
12 changes: 12 additions & 0 deletions api/src/main/java/com/theokanning/openai/assistants/Tool.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.theokanning.openai.assistants;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@NoArgsConstructor
@AllArgsConstructor
@Data
public class Tool {
AssistantToolsEnum type;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package com.theokanning.openai.audio;

import com.fasterxml.jackson.annotation.JsonProperty;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;

@Builder
@NoArgsConstructor
@AllArgsConstructor
@Data
public class CreateSpeechRequest {

/**
* The name of the model to use.
*/
@NonNull
String model;

/**
* The text to generate audio for. The maximum length is 4096 characters.
*/
@NonNull
String input;

/**
* The voice to use when generating the audio.
*/
@NonNull
String voice;

/**
* The format to audio in. Supported formats are mp3, opus, aac, and flac. Defaults to mp3.
*/
@JsonProperty("response_format")
String responseFormat;

/**
* The speed of the generated audio. Select a value from 0.25 to 4.0. Defaults to 1.0.
*/
Double speed;
}
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ public class ChatCompletionRequest {
/**
* A list of the available functions.
*/
List<ChatFunction> functions;
List<?> functions;

/**
* Controls how the model responds to function calls, as specified in the <a href="https://platform.openai.com/docs/api-reference/chat/create#chat/create-function_call">OpenAI documentation</a>.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,29 @@
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;

import java.util.function.Function;

@Data
@NoArgsConstructor
public class ChatFunction {

/**
* The name of the function being called.
*/
@NonNull
private String name;

/**
* A description of what the function does, used by the model to choose when and how to call the function.
*/
private String description;

/**
* The parameters the functions accepts.
*/
@JsonProperty("parameters")
private Class<?> parametersClass;

Expand Down Expand Up @@ -46,7 +59,8 @@ public <T> Builder executor(Class<T> requestClass, Function<T, Object> executor)
}

public ChatFunction build() {
ChatFunction chatFunction = new ChatFunction(name);
ChatFunction chatFunction = new ChatFunction();
chatFunction.setName(name);
chatFunction.setDescription(description);
chatFunction.setParametersClass(parameters);
chatFunction.setExecutor(executor);
Expand Down
Loading

0 comments on commit 2a8b1a1

Please sign in to comment.