From 530775d2b9c4e7033358237576047c2639d08921 Mon Sep 17 00:00:00 2001
From: liangtao <547670718@qq.com>
Date: Thu, 16 May 2024 10:41:36 +0800
Subject: [PATCH 1/3] =?UTF-8?q?=E6=9B=B4=E6=96=B0maven=20config?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/pom.xml b/pom.xml
index 7e504e5..42daa3e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,9 +28,9 @@
- https://github.com/Lambdua/openai-java.git
- scm:git:ssh://git@ssh.github.com:443/Lambdua/openai-java.git
- https://github.com/Lambdua/openai-java
+ scm:git:https://github.com/Lambdua/openai4j.git
+ scm:git:https://github.com/Lambdua/openai4j.git
+ https://github.com/Lambdua/openai4j
@@ -213,12 +213,12 @@
org.apache.maven.pluginsmaven-surefire-plugin
- 2.22.2
+ 2.22.2org.junit.jupiterjunit-jupiter-engine
- 5.10.1
+ 5.10.1
@@ -228,7 +228,7 @@
org.apache.maven.pluginsmaven-clean-plugin
- 3.1.0
+ 3.1.0
From fa4b2a431352ef5716ce22ce49f0f8a2a94ae11f Mon Sep 17 00:00:00 2001
From: liangtao <547670718@qq.com>
Date: Tue, 21 May 2024 13:58:05 +0800
Subject: [PATCH 2/3] =?UTF-8?q?function=20call=E5=8F=82=E6=95=B0=E4=BC=98?=
=?UTF-8?q?=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../run/CreateThreadAndRunRequest.java | 2 -
.../openai/assistants/run/Run.java | 2 -
.../assistants/run/RunCreateRequest.java | 2 -
.../openai/assistants/run/ToolChoice.java | 13 ++--
.../chat/ChatCompletionRequest.java | 42 +------------
.../ChatCompletionRequestFunctionCall.java | 59 +++++++++++++------
.../openai/service/ChatCompletionTest.java | 34 +++++------
7 files changed, 69 insertions(+), 85 deletions(-)
diff --git a/api/src/main/java/com/theokanning/openai/assistants/run/CreateThreadAndRunRequest.java b/api/src/main/java/com/theokanning/openai/assistants/run/CreateThreadAndRunRequest.java
index 283fe38..883f111 100644
--- a/api/src/main/java/com/theokanning/openai/assistants/run/CreateThreadAndRunRequest.java
+++ b/api/src/main/java/com/theokanning/openai/assistants/run/CreateThreadAndRunRequest.java
@@ -93,8 +93,6 @@ public class CreateThreadAndRunRequest {
* Specifying a particular tool like {"type": "file_search"} or {"type": "function", "function": {"name": "my_function"}} forces the model to call that tool.
*/
@JsonProperty("tool_choice")
- @JsonSerialize(using = ToolChoice.Serializer.class)
- @JsonDeserialize(using = ToolChoice.Deserializer.class)
ToolChoice toolChoice;
/**
diff --git a/api/src/main/java/com/theokanning/openai/assistants/run/Run.java b/api/src/main/java/com/theokanning/openai/assistants/run/Run.java
index dbbe270..d730b0c 100644
--- a/api/src/main/java/com/theokanning/openai/assistants/run/Run.java
+++ b/api/src/main/java/com/theokanning/openai/assistants/run/Run.java
@@ -122,8 +122,6 @@ public class Run {
* Specifying a particular tool like {"type": "file_search"} or {"type": "function", "function": {"name": "my_function"}} forces the model to call that tool.
*/
@JsonProperty("tool_choice")
- @JsonSerialize(using = ToolChoice.Serializer.class)
- @JsonDeserialize(using = ToolChoice.Deserializer.class)
ToolChoice toolChoice;
/**
diff --git a/api/src/main/java/com/theokanning/openai/assistants/run/RunCreateRequest.java b/api/src/main/java/com/theokanning/openai/assistants/run/RunCreateRequest.java
index 7459d54..c6b27c9 100644
--- a/api/src/main/java/com/theokanning/openai/assistants/run/RunCreateRequest.java
+++ b/api/src/main/java/com/theokanning/openai/assistants/run/RunCreateRequest.java
@@ -101,8 +101,6 @@ public class RunCreateRequest {
* Specifying a particular tool like {"type": "file_search"} or {"type": "function", "function": {"name": "my_function"}} forces the model to call that tool.
*/
@JsonProperty("tool_choice")
- @JsonSerialize(using = ToolChoice.Serializer.class)
- @JsonDeserialize(using = ToolChoice.Deserializer.class)
ToolChoice toolChoice;
/**
diff --git a/api/src/main/java/com/theokanning/openai/assistants/run/ToolChoice.java b/api/src/main/java/com/theokanning/openai/assistants/run/ToolChoice.java
index f6b4196..625503d 100644
--- a/api/src/main/java/com/theokanning/openai/assistants/run/ToolChoice.java
+++ b/api/src/main/java/com/theokanning/openai/assistants/run/ToolChoice.java
@@ -7,6 +7,8 @@
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.Data;
import java.io.IOException;
@@ -17,25 +19,26 @@
* @date 2024年04月18 17:18
**/
@Data
+@JsonSerialize(using = ToolChoice.Serializer.class)
+@JsonDeserialize(using = ToolChoice.Deserializer.class)
public class ToolChoice {
public static final ToolChoice REQUIRED = new ToolChoice("required");
+ public static final ToolChoice NONE = new ToolChoice("none");
+
+ public static final ToolChoice AUTO = new ToolChoice("auto");
+
/**
* The name of the function to call.
*/
Function function;
- public static final ToolChoice NONE = new ToolChoice("none");
-
- public static final ToolChoice AUTO = new ToolChoice("auto");
/**
* The type of the tool. If type is function, the function name must be set
* enum: none/auto/function/required
*/
String type;
-
-
private ToolChoice(String type) {
this.type = type;
}
diff --git a/api/src/main/java/com/theokanning/openai/completion/chat/ChatCompletionRequest.java b/api/src/main/java/com/theokanning/openai/completion/chat/ChatCompletionRequest.java
index 743df14..81318eb 100644
--- a/api/src/main/java/com/theokanning/openai/completion/chat/ChatCompletionRequest.java
+++ b/api/src/main/java/com/theokanning/openai/completion/chat/ChatCompletionRequest.java
@@ -1,8 +1,6 @@
package com.theokanning.openai.completion.chat;
import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.theokanning.openai.assistants.run.ToolChoice;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -19,7 +17,6 @@
public class ChatCompletionRequest {
-
/**
* ID of the model to use.
*/
@@ -114,9 +111,9 @@ public class ChatCompletionRequest {
String user;
/**
+ * @since 0.20.5 {@link com.theokanning.openai.completion.chat.ChatFunction} {@link com.theokanning.openai.completion.chat.ChatFunctionDynamic}will be deprecated
* @deprecated Replaced by {@link #tools}
* recommend to use {@link com.theokanning.openai.function.FunctionDefinition} or custom class
- * @since 0.20.5 {@link com.theokanning.openai.completion.chat.ChatFunction} {@link com.theokanning.openai.completion.chat.ChatFunctionDynamic}will be deprecated
*/
@Deprecated
List> functions;
@@ -126,9 +123,7 @@ public class ChatCompletionRequest {
*/
@JsonProperty("function_call")
@Deprecated
- @JsonSerialize(using = ChatCompletionRequestFunctionCall.Serializer.class)
- @JsonDeserialize(using = ChatCompletionRequestFunctionCall.Deserializer.class)
- Object functionCall;
+ ChatCompletionRequestFunctionCall functionCall;
/**
@@ -148,7 +143,6 @@ public class ChatCompletionRequest {
Integer topLogprobs;
-
/**
* Function definition, only used if type is "function"
* recommend to use {@link com.theokanning.openai.function.FunctionDefinition} or custom class
@@ -161,39 +155,7 @@ public class ChatCompletionRequest {
* Controls which (if any) function is called by the model. none means the model will not call a function and instead generates a message. auto means the model can pick between generating a message or calling a function.
*/
@JsonProperty("tool_choice")
- @JsonSerialize(using = ToolChoice.Serializer.class)
- @JsonDeserialize(using = ToolChoice.Deserializer.class)
ToolChoice toolChoice;
-
- public static ChatCompletionRequestBuilder builder() {
- return new InternalBuilder();
- }
- private static class InternalBuilder extends ChatCompletionRequestBuilder {
- public InternalBuilder() {
- super();
- }
-
- @Override
- public ChatCompletionRequest build() {
- ChatCompletionRequest request = super.build();
- request.functionCallParamCheck();
- return request;
- }
- }
-
- private void functionCallParamCheck() {
- if (functionCall==null){
- return;
- }
- if (!(functionCall instanceof ChatCompletionRequestFunctionCall || functionCall instanceof String)) {
- throw new IllegalArgumentException("functionCall must be a ChatCompletionRequestFunctionCall or a String type");
- }
- }
-
- public void setFunctionCall(Object functionCall) {
- this.functionCall = functionCall;
- functionCallParamCheck();
- }
}
diff --git a/api/src/main/java/com/theokanning/openai/completion/chat/ChatCompletionRequestFunctionCall.java b/api/src/main/java/com/theokanning/openai/completion/chat/ChatCompletionRequestFunctionCall.java
index b7fe32a..3655635 100644
--- a/api/src/main/java/com/theokanning/openai/completion/chat/ChatCompletionRequestFunctionCall.java
+++ b/api/src/main/java/com/theokanning/openai/completion/chat/ChatCompletionRequestFunctionCall.java
@@ -7,6 +7,8 @@
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@@ -20,38 +22,61 @@
@Data
@AllArgsConstructor
@NoArgsConstructor
+@JsonSerialize(using = ChatCompletionRequestFunctionCall.Serializer.class)
+@JsonDeserialize(using = ChatCompletionRequestFunctionCall.Deserializer.class)
public class ChatCompletionRequestFunctionCall {
+ /**
+ * Controls which (if any) function is called by the model.
+ * none means the model will not call a function and instead generates a message.
+ * auto means the model can pick between generating a message or calling a function.
+ * Specifying a particular function via {"name": "my_function"} forces the model to call that function.
+ */
+
+ public static final ChatCompletionRequestFunctionCall NONE = new ChatCompletionRequestFunctionCall("none");
+
+ public static final ChatCompletionRequestFunctionCall AUTO = new ChatCompletionRequestFunctionCall("auto");
+
String name;
- public static class Serializer extends JsonSerializer