chore: rename assistant relate entity (#35)
This commit is contained in:
parent
a1af39838c
commit
3f425c320d
43 changed files with 168 additions and 161 deletions
|
|
@ -2,10 +2,10 @@ package ai.z.openapi.api.assistant;
|
||||||
|
|
||||||
import ai.z.openapi.service.assistant.AssistantCompletion;
|
import ai.z.openapi.service.assistant.AssistantCompletion;
|
||||||
import ai.z.openapi.service.assistant.AssistantParameters;
|
import ai.z.openapi.service.assistant.AssistantParameters;
|
||||||
import ai.z.openapi.service.assistant.conversation.ConversationUsageListStatus;
|
import ai.z.openapi.service.assistant.conversation.AssistantConversationUsageListStatus;
|
||||||
import ai.z.openapi.service.assistant.query_support.AssistantSupportStatus;
|
import ai.z.openapi.service.assistant.query_support.AssistantSupportStatus;
|
||||||
import ai.z.openapi.service.assistant.conversation.ConversationParameters;
|
import ai.z.openapi.service.assistant.conversation.AssistantConversationParameters;
|
||||||
import ai.z.openapi.service.assistant.query_support.QuerySupportParams;
|
import ai.z.openapi.service.assistant.query_support.AssistantQuerySupportParams;
|
||||||
import io.reactivex.Single;
|
import io.reactivex.Single;
|
||||||
import okhttp3.ResponseBody;
|
import okhttp3.ResponseBody;
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
|
|
@ -46,7 +46,7 @@ public interface AssistantApi {
|
||||||
* @return Assistant support status and available capabilities
|
* @return Assistant support status and available capabilities
|
||||||
*/
|
*/
|
||||||
@POST("assistant/list")
|
@POST("assistant/list")
|
||||||
Single<AssistantSupportStatus> querySupport(@Body QuerySupportParams request);
|
Single<AssistantSupportStatus> querySupport(@Body AssistantQuerySupportParams request);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Query conversation usage statistics Retrieves usage metrics and conversation
|
* Query conversation usage statistics Retrieves usage metrics and conversation
|
||||||
|
|
@ -55,6 +55,6 @@ public interface AssistantApi {
|
||||||
* @return Conversation usage statistics and history information
|
* @return Conversation usage statistics and history information
|
||||||
*/
|
*/
|
||||||
@POST("assistant/conversation/list")
|
@POST("assistant/conversation/list")
|
||||||
Single<ConversationUsageListStatus> queryConversationUsage(@Body ConversationParameters request);
|
Single<AssistantConversationUsageListStatus> queryConversationUsage(@Body AssistantConversationParameters request);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,21 +14,21 @@ import lombok.NoArgsConstructor;
|
||||||
@Builder
|
@Builder
|
||||||
public class AgentContent {
|
public class AgentContent {
|
||||||
|
|
||||||
/** 消息类型 text image_url video_url */
|
/** Message type: text, image_url, video_url */
|
||||||
private String type;
|
private String type;
|
||||||
|
|
||||||
/** 消息内容 when type is text */
|
/** Message content when type is text */
|
||||||
private String text;
|
private String text;
|
||||||
|
|
||||||
/** 消息图片URL when type is image_url */
|
/** Message image URL when type is image_url */
|
||||||
@JsonProperty("image_url")
|
@JsonProperty("image_url")
|
||||||
private String imageUrl;
|
private String imageUrl;
|
||||||
|
|
||||||
/** 消息视频URL when type is video_url */
|
/** Message video URL when type is video_url */
|
||||||
@JsonProperty("video_url")
|
@JsonProperty("video_url")
|
||||||
private String videoUrl;
|
private String videoUrl;
|
||||||
|
|
||||||
/** 消息对象 when type is object */
|
/** Message object when type is object */
|
||||||
@JsonProperty("object")
|
@JsonProperty("object")
|
||||||
private Object object;
|
private Object object;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||||
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
|
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
|
||||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||||
import ai.z.openapi.service.assistant.message.MessageContent;
|
import ai.z.openapi.service.assistant.message.AssistantMessageContent;
|
||||||
import ai.z.openapi.service.deserialize.MessageDeserializeFactory;
|
import ai.z.openapi.service.deserialize.MessageDeserializeFactory;
|
||||||
import ai.z.openapi.service.deserialize.assistant.AssistantChoiceDeserializer;
|
import ai.z.openapi.service.deserialize.assistant.AssistantChoiceDeserializer;
|
||||||
|
|
||||||
|
|
@ -31,7 +31,7 @@ public class AssistantChoice extends ObjectNode {
|
||||||
* Current conversation output message content.
|
* Current conversation output message content.
|
||||||
*/
|
*/
|
||||||
@JsonProperty("delta")
|
@JsonProperty("delta")
|
||||||
private MessageContent delta;
|
private AssistantMessageContent delta;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reason for inference completion: - stop: inference naturally ended or triggered
|
* Reason for inference completion: - stop: inference naturally ended or triggered
|
||||||
|
|
@ -66,7 +66,8 @@ public class AssistantChoice extends ObjectNode {
|
||||||
this.setIndex(0);
|
this.setIndex(0);
|
||||||
}
|
}
|
||||||
if (objectNode.has("delta")) {
|
if (objectNode.has("delta")) {
|
||||||
MessageContent delta = objectMapper.convertValue(objectNode.get("delta"), MessageContent.class);
|
AssistantMessageContent delta = objectMapper.convertValue(objectNode.get("delta"),
|
||||||
|
AssistantMessageContent.class);
|
||||||
this.setDelta(delta);
|
this.setDelta(delta);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
@ -108,11 +109,11 @@ public class AssistantChoice extends ObjectNode {
|
||||||
this.put("index", index);
|
this.put("index", index);
|
||||||
}
|
}
|
||||||
|
|
||||||
public MessageContent getDelta() {
|
public AssistantMessageContent getDelta() {
|
||||||
return delta;
|
return delta;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDelta(MessageContent delta) {
|
public void setDelta(AssistantMessageContent delta) {
|
||||||
this.delta = delta;
|
this.delta = delta;
|
||||||
this.putPOJO("delta", delta);
|
this.putPOJO("delta", delta);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ public class AssistantCompletion {
|
||||||
* Error information
|
* Error information
|
||||||
*/
|
*/
|
||||||
@JsonProperty("last_error")
|
@JsonProperty("last_error")
|
||||||
private ErrorInfo lastError;
|
private AssistantErrorInfo lastError;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Incremental return information
|
* Incremental return information
|
||||||
|
|
@ -71,6 +71,6 @@ public class AssistantCompletion {
|
||||||
* Token count statistics
|
* Token count statistics
|
||||||
*/
|
*/
|
||||||
@JsonProperty("usage")
|
@JsonProperty("usage")
|
||||||
private CompletionUsage usage;
|
private AssistantCompletionUsage usage;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ import lombok.NoArgsConstructor;
|
||||||
@Builder
|
@Builder
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class CompletionUsage {
|
public class AssistantCompletionUsage {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Number of tokens in the input (prompt).
|
* Number of tokens in the input (prompt).
|
||||||
|
|
@ -17,7 +17,7 @@ import java.util.List;
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Data
|
@Data
|
||||||
public class ConversationMessage {
|
public class AssistantConversationMessage {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The role of the user input, e.g., 'user'.
|
* The role of the user input, e.g., 'user'.
|
||||||
|
|
@ -29,6 +29,6 @@ public class ConversationMessage {
|
||||||
* The content of the conversation message.
|
* The content of the conversation message.
|
||||||
*/
|
*/
|
||||||
@JsonProperty("content")
|
@JsonProperty("content")
|
||||||
private List<MessageTextContent> content;
|
private List<AssistantMessageTextContent> content;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -14,7 +14,7 @@ import lombok.NoArgsConstructor;
|
||||||
@Builder
|
@Builder
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class ErrorInfo {
|
public class AssistantErrorInfo {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Error code.
|
* Error code.
|
||||||
|
|
@ -18,6 +18,6 @@ public class AssistantExtraParameters {
|
||||||
/**
|
/**
|
||||||
* Translation agent parameters
|
* Translation agent parameters
|
||||||
*/
|
*/
|
||||||
private TranslateParameters translate;
|
private AssistantTranslateParameters translate;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ import lombok.experimental.SuperBuilder;
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Data
|
@Data
|
||||||
public class MessageTextContent {
|
public class AssistantMessageTextContent {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The type of the message content, currently only "text" is supported.
|
* The type of the message content, currently only "text" is supported.
|
||||||
|
|
@ -9,7 +9,6 @@ import lombok.EqualsAndHashCode;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.experimental.SuperBuilder;
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
@ -51,7 +50,7 @@ public class AssistantParameters extends CommonRequest implements ClientRequest<
|
||||||
* The list of conversation messages.
|
* The list of conversation messages.
|
||||||
*/
|
*/
|
||||||
@JsonProperty("messages")
|
@JsonProperty("messages")
|
||||||
private List<ConversationMessage> messages;
|
private List<AssistantConversationMessage> messages;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The list of file attachments for the conversation, optional.
|
* The list of file attachments for the conversation, optional.
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,9 @@
|
||||||
package ai.z.openapi.service.assistant;
|
package ai.z.openapi.service.assistant;
|
||||||
|
|
||||||
import ai.z.openapi.service.assistant.AssistantParameters;
|
import ai.z.openapi.service.assistant.conversation.AssistantConversationParameters;
|
||||||
import ai.z.openapi.service.assistant.AssistantApiResponse;
|
import ai.z.openapi.service.assistant.conversation.AssistantConversationUsageListResponse;
|
||||||
import ai.z.openapi.service.assistant.conversation.ConversationParameters;
|
|
||||||
import ai.z.openapi.service.assistant.conversation.ConversationUsageListResponse;
|
|
||||||
import ai.z.openapi.service.assistant.query_support.AssistantSupportResponse;
|
import ai.z.openapi.service.assistant.query_support.AssistantSupportResponse;
|
||||||
import ai.z.openapi.service.assistant.query_support.QuerySupportParams;
|
import ai.z.openapi.service.assistant.query_support.AssistantQuerySupportParams;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Assistant service interface
|
* Assistant service interface
|
||||||
|
|
@ -31,13 +29,13 @@ public interface AssistantService {
|
||||||
* @param request the query support request
|
* @param request the query support request
|
||||||
* @return AssistantSupportResponse containing the support information
|
* @return AssistantSupportResponse containing the support information
|
||||||
*/
|
*/
|
||||||
AssistantSupportResponse querySupport(QuerySupportParams request);
|
AssistantSupportResponse querySupport(AssistantQuerySupportParams request);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Queries conversation usage information.
|
* Queries conversation usage information.
|
||||||
* @param request the conversation parameters
|
* @param request the conversation parameters
|
||||||
* @return ConversationUsageListResponse containing the usage information
|
* @return ConversationUsageListResponse containing the usage information
|
||||||
*/
|
*/
|
||||||
ConversationUsageListResponse queryConversationUsage(ConversationParameters request);
|
AssistantConversationUsageListResponse queryConversationUsage(AssistantConversationParameters request);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -2,12 +2,12 @@ package ai.z.openapi.service.assistant;
|
||||||
|
|
||||||
import ai.z.openapi.AbstractAiClient;
|
import ai.z.openapi.AbstractAiClient;
|
||||||
import ai.z.openapi.api.assistant.AssistantApi;
|
import ai.z.openapi.api.assistant.AssistantApi;
|
||||||
import ai.z.openapi.service.assistant.conversation.ConversationParameters;
|
import ai.z.openapi.service.assistant.conversation.AssistantConversationParameters;
|
||||||
import ai.z.openapi.service.assistant.conversation.ConversationUsageListResponse;
|
import ai.z.openapi.service.assistant.conversation.AssistantConversationUsageListResponse;
|
||||||
import ai.z.openapi.service.assistant.conversation.ConversationUsageListStatus;
|
import ai.z.openapi.service.assistant.conversation.AssistantConversationUsageListStatus;
|
||||||
import ai.z.openapi.service.assistant.query_support.AssistantSupportResponse;
|
import ai.z.openapi.service.assistant.query_support.AssistantSupportResponse;
|
||||||
import ai.z.openapi.service.assistant.query_support.AssistantSupportStatus;
|
import ai.z.openapi.service.assistant.query_support.AssistantSupportStatus;
|
||||||
import ai.z.openapi.service.assistant.query_support.QuerySupportParams;
|
import ai.z.openapi.service.assistant.query_support.AssistantQuerySupportParams;
|
||||||
import ai.z.openapi.utils.FlowableRequestSupplier;
|
import ai.z.openapi.utils.FlowableRequestSupplier;
|
||||||
import ai.z.openapi.utils.RequestSupplier;
|
import ai.z.openapi.utils.RequestSupplier;
|
||||||
import okhttp3.ResponseBody;
|
import okhttp3.ResponseBody;
|
||||||
|
|
@ -39,15 +39,15 @@ public class AssistantServiceImpl implements AssistantService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AssistantSupportResponse querySupport(QuerySupportParams request) {
|
public AssistantSupportResponse querySupport(AssistantQuerySupportParams request) {
|
||||||
RequestSupplier<QuerySupportParams, AssistantSupportStatus> supplier = assistantApi::querySupport;
|
RequestSupplier<AssistantQuerySupportParams, AssistantSupportStatus> supplier = assistantApi::querySupport;
|
||||||
return zAiClient.executeRequest(request, supplier, AssistantSupportResponse.class);
|
return zAiClient.executeRequest(request, supplier, AssistantSupportResponse.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ConversationUsageListResponse queryConversationUsage(ConversationParameters request) {
|
public AssistantConversationUsageListResponse queryConversationUsage(AssistantConversationParameters request) {
|
||||||
RequestSupplier<ConversationParameters, ConversationUsageListStatus> supplier = assistantApi::queryConversationUsage;
|
RequestSupplier<AssistantConversationParameters, AssistantConversationUsageListStatus> supplier = assistantApi::queryConversationUsage;
|
||||||
return zAiClient.executeRequest(request, supplier, ConversationUsageListResponse.class);
|
return zAiClient.executeRequest(request, supplier, AssistantConversationUsageListResponse.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -13,7 +13,7 @@ import lombok.experimental.SuperBuilder;
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Data
|
@Data
|
||||||
public class TranslateParameters {
|
public class AssistantTranslateParameters {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Source language for translation.
|
* Source language for translation.
|
||||||
|
|
@ -17,7 +17,8 @@ import lombok.experimental.SuperBuilder;
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Data
|
@Data
|
||||||
public class ConversationParameters extends CommonRequest implements ClientRequest<ConversationParameters> {
|
public class AssistantConversationParameters extends CommonRequest
|
||||||
|
implements ClientRequest<AssistantConversationParameters> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Assistant ID.
|
* The Assistant ID.
|
||||||
|
|
@ -7,7 +7,7 @@ import lombok.Data;
|
||||||
* This class represents the usage data for a specific conversation.
|
* This class represents the usage data for a specific conversation.
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class ConversationUsage {
|
public class AssistantConversationUsage {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The conversation ID.
|
* The conversation ID.
|
||||||
|
|
@ -37,6 +37,6 @@ public class ConversationUsage {
|
||||||
* The usage statistics for the conversation.
|
* The usage statistics for the conversation.
|
||||||
*/
|
*/
|
||||||
@JsonProperty("usage")
|
@JsonProperty("usage")
|
||||||
private Usage usage;
|
private AssistantUsage usage;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -9,7 +9,7 @@ import java.util.List;
|
||||||
* This class represents a list of conversation usage data.
|
* This class represents a list of conversation usage data.
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class ConversationUsageList {
|
public class AssistantConversationUsageList {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Assistant ID.
|
* The Assistant ID.
|
||||||
|
|
@ -27,6 +27,6 @@ public class ConversationUsageList {
|
||||||
* The list of conversation usage data.
|
* The list of conversation usage data.
|
||||||
*/
|
*/
|
||||||
@JsonProperty("conversation_list")
|
@JsonProperty("conversation_list")
|
||||||
private List<ConversationUsage> conversationList;
|
private List<AssistantConversationUsage> conversationList;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -9,7 +9,7 @@ import lombok.Data;
|
||||||
* for retrieving conversation usage statistics.
|
* for retrieving conversation usage statistics.
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class ConversationUsageListResponse implements ClientResponse<ConversationUsageListStatus> {
|
public class AssistantConversationUsageListResponse implements ClientResponse<AssistantConversationUsageListStatus> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Response status code.
|
* Response status code.
|
||||||
|
|
@ -29,17 +29,17 @@ public class ConversationUsageListResponse implements ClientResponse<Conversatio
|
||||||
/**
|
/**
|
||||||
* The conversation usage list data.
|
* The conversation usage list data.
|
||||||
*/
|
*/
|
||||||
private ConversationUsageListStatus data;
|
private AssistantConversationUsageListStatus data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Error information if the request failed.
|
* Error information if the request failed.
|
||||||
*/
|
*/
|
||||||
private ChatError error;
|
private ChatError error;
|
||||||
|
|
||||||
public ConversationUsageListResponse() {
|
public AssistantConversationUsageListResponse() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public ConversationUsageListResponse(int code, String msg) {
|
public AssistantConversationUsageListResponse(int code, String msg) {
|
||||||
this.code = code;
|
this.code = code;
|
||||||
this.msg = msg;
|
this.msg = msg;
|
||||||
}
|
}
|
||||||
|
|
@ -7,7 +7,7 @@ import lombok.Data;
|
||||||
* This class represents the response containing a list of conversation usage data.
|
* This class represents the response containing a list of conversation usage data.
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class ConversationUsageListStatus {
|
public class AssistantConversationUsageListStatus {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The response code.
|
* The response code.
|
||||||
|
|
@ -25,6 +25,6 @@ public class ConversationUsageListStatus {
|
||||||
* The data containing the conversation usage list.
|
* The data containing the conversation usage list.
|
||||||
*/
|
*/
|
||||||
@JsonProperty("data")
|
@JsonProperty("data")
|
||||||
private ConversationUsageList data;
|
private AssistantConversationUsageList data;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -7,7 +7,7 @@ import lombok.Data;
|
||||||
* This class represents the usage statistics for a conversation.
|
* This class represents the usage statistics for a conversation.
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class Usage {
|
public class AssistantUsage {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The number of tokens in the user's input.
|
* The number of tokens in the user's input.
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
package ai.z.openapi.service.assistant.message;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||||
|
import ai.z.openapi.service.deserialize.JsonTypeMapping;
|
||||||
|
import ai.z.openapi.service.deserialize.assistant.message.AssistantMessageContentDeserializer;
|
||||||
|
|
||||||
|
@JsonTypeMapping({ AssistantToolsDeltaBlock.class, AssistantTextContentBlock.class })
|
||||||
|
@JsonDeserialize(using = AssistantMessageContentDeserializer.class)
|
||||||
|
public abstract class AssistantMessageContent {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -7,7 +7,7 @@ import ai.z.openapi.service.deserialize.JsonTypeField;
|
||||||
* This class represents a block of text content in a conversation.
|
* This class represents a block of text content in a conversation.
|
||||||
*/
|
*/
|
||||||
@JsonTypeField("content")
|
@JsonTypeField("content")
|
||||||
public class TextContentBlock extends MessageContent {
|
public class AssistantTextContentBlock extends AssistantMessageContent {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The content of the text block.
|
* The content of the text block.
|
||||||
|
|
@ -24,7 +24,7 @@ public class TextContentBlock extends MessageContent {
|
||||||
/**
|
/**
|
||||||
* Default constructor.
|
* Default constructor.
|
||||||
*/
|
*/
|
||||||
public TextContentBlock() {
|
public AssistantTextContentBlock() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Getters and Setters
|
// Getters and Setters
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package ai.z.openapi.service.assistant.message;
|
package ai.z.openapi.service.assistant.message;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import ai.z.openapi.service.assistant.message.tools.ToolsType;
|
import ai.z.openapi.service.assistant.message.tools.AssistantToolsType;
|
||||||
import ai.z.openapi.service.deserialize.JsonTypeField;
|
import ai.z.openapi.service.deserialize.JsonTypeField;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -10,13 +10,13 @@ import java.util.List;
|
||||||
* This class represents a block of tool call data in a conversation.
|
* This class represents a block of tool call data in a conversation.
|
||||||
*/
|
*/
|
||||||
@JsonTypeField("tool_calls")
|
@JsonTypeField("tool_calls")
|
||||||
public class ToolsDeltaBlock extends MessageContent {
|
public class AssistantToolsDeltaBlock extends AssistantMessageContent {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A list of tool call types.
|
* A list of tool call types.
|
||||||
*/
|
*/
|
||||||
@JsonProperty("tool_calls")
|
@JsonProperty("tool_calls")
|
||||||
private List<ToolsType> toolCalls;
|
private List<AssistantToolsType> toolCalls;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The role of the speaker, default is "tool".
|
* The role of the speaker, default is "tool".
|
||||||
|
|
@ -27,16 +27,16 @@ public class ToolsDeltaBlock extends MessageContent {
|
||||||
/**
|
/**
|
||||||
* Default constructor.
|
* Default constructor.
|
||||||
*/
|
*/
|
||||||
public ToolsDeltaBlock() {
|
public AssistantToolsDeltaBlock() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Getters and Setters
|
// Getters and Setters
|
||||||
|
|
||||||
public List<ToolsType> getToolCalls() {
|
public List<AssistantToolsType> getToolCalls() {
|
||||||
return toolCalls;
|
return toolCalls;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setToolCalls(List<ToolsType> toolCalls) {
|
public void setToolCalls(List<AssistantToolsType> toolCalls) {
|
||||||
this.toolCalls = toolCalls;
|
this.toolCalls = toolCalls;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
package ai.z.openapi.service.assistant.message;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
|
||||||
import ai.z.openapi.service.deserialize.JsonTypeMapping;
|
|
||||||
import ai.z.openapi.service.deserialize.assistant.message.MessageContentDeserializer;
|
|
||||||
|
|
||||||
@JsonTypeMapping({ ToolsDeltaBlock.class, TextContentBlock.class })
|
|
||||||
@JsonDeserialize(using = MessageContentDeserializer.class)
|
|
||||||
public abstract class MessageContent {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
package ai.z.openapi.service.assistant.message.tools;
|
||||||
|
|
||||||
|
import ai.z.openapi.service.assistant.message.tools.code_interpreter.AssistantCodeInterpreterToolBlock;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonSubTypes;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
||||||
|
import ai.z.openapi.service.assistant.message.tools.drawing_tool.AssistantDrawingToolBlock;
|
||||||
|
import ai.z.openapi.service.assistant.message.tools.function.AssistantFunctionToolBlock;
|
||||||
|
import ai.z.openapi.service.assistant.message.tools.retrieval.AssistantRetrievalToolBlock;
|
||||||
|
import ai.z.openapi.service.assistant.message.tools.web_browser.AssistantWebBrowserToolBlock;
|
||||||
|
|
||||||
|
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||||
|
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type", include = JsonTypeInfo.As.EXISTING_PROPERTY)
|
||||||
|
@JsonSubTypes({ @JsonSubTypes.Type(value = AssistantWebBrowserToolBlock.class, name = "web_browser"),
|
||||||
|
@JsonSubTypes.Type(value = AssistantRetrievalToolBlock.class, name = "retrieval"),
|
||||||
|
@JsonSubTypes.Type(value = AssistantFunctionToolBlock.class, name = "function"),
|
||||||
|
@JsonSubTypes.Type(value = AssistantCodeInterpreterToolBlock.class, name = "code_interpreter"),
|
||||||
|
@JsonSubTypes.Type(value = AssistantDrawingToolBlock.class, name = "drawing_tool") })
|
||||||
|
public abstract class AssistantToolsType {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
package ai.z.openapi.service.assistant.message.tools;
|
|
||||||
|
|
||||||
import ai.z.openapi.service.assistant.message.tools.code_interpreter.CodeInterpreterToolBlock;
|
|
||||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
|
||||||
import com.fasterxml.jackson.annotation.JsonSubTypes;
|
|
||||||
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
|
||||||
import ai.z.openapi.service.assistant.message.tools.drawing_tool.DrawingToolBlock;
|
|
||||||
import ai.z.openapi.service.assistant.message.tools.function.FunctionToolBlock;
|
|
||||||
import ai.z.openapi.service.assistant.message.tools.retrieval.RetrievalToolBlock;
|
|
||||||
import ai.z.openapi.service.assistant.message.tools.web_browser.WebBrowserToolBlock;
|
|
||||||
|
|
||||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
|
||||||
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type", include = JsonTypeInfo.As.EXISTING_PROPERTY)
|
|
||||||
@JsonSubTypes({ @JsonSubTypes.Type(value = WebBrowserToolBlock.class, name = "web_browser"),
|
|
||||||
@JsonSubTypes.Type(value = RetrievalToolBlock.class, name = "retrieval"),
|
|
||||||
@JsonSubTypes.Type(value = FunctionToolBlock.class, name = "function"),
|
|
||||||
@JsonSubTypes.Type(value = CodeInterpreterToolBlock.class, name = "code_interpreter"),
|
|
||||||
@JsonSubTypes.Type(value = DrawingToolBlock.class, name = "drawing_tool") })
|
|
||||||
public abstract class ToolsType {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -2,7 +2,6 @@ package ai.z.openapi.service.assistant.message.tools.code_interpreter;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
|
@ -14,7 +13,7 @@ import java.util.List;
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class CodeInterpreter {
|
public class AssistantCodeInterpreter {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The generated code snippet that is input to the code sandbox.
|
* The generated code snippet that is input to the code sandbox.
|
||||||
|
|
@ -26,6 +25,6 @@ public class CodeInterpreter {
|
||||||
* The output results after the code execution.
|
* The output results after the code execution.
|
||||||
*/
|
*/
|
||||||
@JsonProperty("outputs")
|
@JsonProperty("outputs")
|
||||||
private List<CodeInterpreterToolOutput> outputs;
|
private List<AssistantCodeInterpreterToolOutput> outputs;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package ai.z.openapi.service.assistant.message.tools.code_interpreter;
|
package ai.z.openapi.service.assistant.message.tools.code_interpreter;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import ai.z.openapi.service.assistant.message.tools.ToolsType;
|
import ai.z.openapi.service.assistant.message.tools.AssistantToolsType;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
@ -16,7 +16,7 @@ import lombok.NoArgsConstructor;
|
||||||
@Builder
|
@Builder
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class CodeInterpreterToolBlock extends ToolsType {
|
public class AssistantCodeInterpreterToolBlock extends AssistantToolsType {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The index of the tool call.
|
* The index of the tool call.
|
||||||
|
|
@ -34,7 +34,7 @@ public class CodeInterpreterToolBlock extends ToolsType {
|
||||||
* The code interpreter object.
|
* The code interpreter object.
|
||||||
*/
|
*/
|
||||||
@JsonProperty("code_interpreter")
|
@JsonProperty("code_interpreter")
|
||||||
private CodeInterpreter codeInterpreter;
|
private AssistantCodeInterpreter codeInterpreter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The type of tool being called, always "code_interpreter".
|
* The type of tool being called, always "code_interpreter".
|
||||||
|
|
@ -11,7 +11,7 @@ import lombok.NoArgsConstructor;
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class CodeInterpreterToolOutput {
|
public class AssistantCodeInterpreterToolOutput {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The type of output, currently only "logs".
|
* The type of output, currently only "logs".
|
||||||
|
|
@ -13,7 +13,7 @@ import java.util.List;
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class DrawingTool {
|
public class AssistantDrawingTool {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The input string that was used to generate the drawing.
|
* The input string that was used to generate the drawing.
|
||||||
|
|
@ -25,6 +25,6 @@ public class DrawingTool {
|
||||||
* A list of outputs generated by the drawing tool.
|
* A list of outputs generated by the drawing tool.
|
||||||
*/
|
*/
|
||||||
@JsonProperty("outputs")
|
@JsonProperty("outputs")
|
||||||
private List<DrawingToolOutput> outputs;
|
private List<AssistantDrawingToolOutput> outputs;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package ai.z.openapi.service.assistant.message.tools.drawing_tool;
|
package ai.z.openapi.service.assistant.message.tools.drawing_tool;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import ai.z.openapi.service.assistant.message.tools.ToolsType;
|
import ai.z.openapi.service.assistant.message.tools.AssistantToolsType;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
@ -16,7 +16,7 @@ import lombok.NoArgsConstructor;
|
||||||
@Builder
|
@Builder
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class DrawingToolBlock extends ToolsType {
|
public class AssistantDrawingToolBlock extends AssistantToolsType {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The index of the tool call.
|
* The index of the tool call.
|
||||||
|
|
@ -34,7 +34,7 @@ public class DrawingToolBlock extends ToolsType {
|
||||||
* The drawing tool object that contains input and outputs.
|
* The drawing tool object that contains input and outputs.
|
||||||
*/
|
*/
|
||||||
@JsonProperty("drawing_tool")
|
@JsonProperty("drawing_tool")
|
||||||
private DrawingTool drawingTool;
|
private AssistantDrawingTool drawingTool;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The type of tool being called, always "drawing_tool".
|
* The type of tool being called, always "drawing_tool".
|
||||||
|
|
@ -11,7 +11,7 @@ import lombok.NoArgsConstructor;
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class DrawingToolOutput {
|
public class AssistantDrawingToolOutput {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The generated image in a string format.
|
* The generated image in a string format.
|
||||||
|
|
@ -14,7 +14,7 @@ import java.util.List;
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class FunctionTool {
|
public class AssistantFunctionTool {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The name of the function tool.
|
* The name of the function tool.
|
||||||
|
|
@ -32,6 +32,6 @@ public class FunctionTool {
|
||||||
* A list of outputs generated by the function tool.
|
* A list of outputs generated by the function tool.
|
||||||
*/
|
*/
|
||||||
@JsonProperty("outputs")
|
@JsonProperty("outputs")
|
||||||
private List<FunctionToolOutput> outputs;
|
private List<AssistantFunctionToolOutput> outputs;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package ai.z.openapi.service.assistant.message.tools.function;
|
package ai.z.openapi.service.assistant.message.tools.function;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import ai.z.openapi.service.assistant.message.tools.ToolsType;
|
import ai.z.openapi.service.assistant.message.tools.AssistantToolsType;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
@ -16,7 +16,7 @@ import lombok.NoArgsConstructor;
|
||||||
@Builder
|
@Builder
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class FunctionToolBlock extends ToolsType {
|
public class AssistantFunctionToolBlock extends AssistantToolsType {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The index of the tool call.
|
* The index of the tool call.
|
||||||
|
|
@ -34,7 +34,7 @@ public class FunctionToolBlock extends ToolsType {
|
||||||
* The function tool object that contains the name, arguments, and outputs.
|
* The function tool object that contains the name, arguments, and outputs.
|
||||||
*/
|
*/
|
||||||
@JsonProperty("function")
|
@JsonProperty("function")
|
||||||
private FunctionTool function;
|
private AssistantFunctionTool function;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The type of tool being called, always "function".
|
* The type of tool being called, always "function".
|
||||||
|
|
@ -11,7 +11,7 @@ import lombok.NoArgsConstructor;
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class FunctionToolOutput {
|
public class AssistantFunctionToolOutput {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The generated content as a string.
|
* The generated content as a string.
|
||||||
|
|
@ -15,13 +15,13 @@ import java.util.List;
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@Builder
|
@Builder
|
||||||
public class RetrievalTool {
|
public class AssistantRetrievalTool {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A list of text snippets and their respective document names retrieved from the
|
* A list of text snippets and their respective document names retrieved from the
|
||||||
* knowledge base.
|
* knowledge base.
|
||||||
*/
|
*/
|
||||||
@JsonProperty("outputs")
|
@JsonProperty("outputs")
|
||||||
private List<RetrievalToolOutput> outputs;
|
private List<AssistantRetrievalToolOutput> outputs;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package ai.z.openapi.service.assistant.message.tools.retrieval;
|
package ai.z.openapi.service.assistant.message.tools.retrieval;
|
||||||
|
|
||||||
import ai.z.openapi.service.assistant.message.tools.ToolsType;
|
import ai.z.openapi.service.assistant.message.tools.AssistantToolsType;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
|
|
@ -13,7 +13,7 @@ import lombok.NoArgsConstructor;
|
||||||
@Builder
|
@Builder
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class RetrievalToolBlock extends ToolsType {
|
public class AssistantRetrievalToolBlock extends AssistantToolsType {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The index of the tool call.
|
* The index of the tool call.
|
||||||
|
|
@ -31,7 +31,7 @@ public class RetrievalToolBlock extends ToolsType {
|
||||||
* An instance of the RetrievalTool class containing the retrieval outputs.
|
* An instance of the RetrievalTool class containing the retrieval outputs.
|
||||||
*/
|
*/
|
||||||
@JsonProperty("retrieval")
|
@JsonProperty("retrieval")
|
||||||
private RetrievalTool retrieval;
|
private AssistantRetrievalTool retrieval;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The type of tool being used, always set to "retrieval".
|
* The type of tool being used, always set to "retrieval".
|
||||||
|
|
@ -13,7 +13,7 @@ import lombok.NoArgsConstructor;
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@Builder
|
@Builder
|
||||||
public class RetrievalToolOutput {
|
public class AssistantRetrievalToolOutput {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The text snippet retrieved from the knowledge base.
|
* The text snippet retrieved from the knowledge base.
|
||||||
|
|
@ -13,7 +13,7 @@ import java.util.List;
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class WebBrowser {
|
public class AssistantWebBrowser {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The input query for the web browser search.
|
* The input query for the web browser search.
|
||||||
|
|
@ -25,6 +25,6 @@ public class WebBrowser {
|
||||||
* A list of search results returned by the web browser.
|
* A list of search results returned by the web browser.
|
||||||
*/
|
*/
|
||||||
@JsonProperty("outputs")
|
@JsonProperty("outputs")
|
||||||
private List<WebBrowserOutput> outputs;
|
private List<AssistantWebBrowserOutput> outputs;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -11,7 +11,7 @@ import lombok.NoArgsConstructor;
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class WebBrowserOutput {
|
public class AssistantWebBrowserOutput {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The title of the search result.
|
* The title of the search result.
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package ai.z.openapi.service.assistant.message.tools.web_browser;
|
package ai.z.openapi.service.assistant.message.tools.web_browser;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import ai.z.openapi.service.assistant.message.tools.ToolsType;
|
import ai.z.openapi.service.assistant.message.tools.AssistantToolsType;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
@ -16,7 +16,7 @@ import lombok.NoArgsConstructor;
|
||||||
@Builder
|
@Builder
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class WebBrowserToolBlock extends ToolsType {
|
public class AssistantWebBrowserToolBlock extends AssistantToolsType {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The index of the tool call.
|
* The index of the tool call.
|
||||||
|
|
@ -34,7 +34,7 @@ public class WebBrowserToolBlock extends ToolsType {
|
||||||
* An instance of the WebBrowser class containing the search input and outputs.
|
* An instance of the WebBrowser class containing the search input and outputs.
|
||||||
*/
|
*/
|
||||||
@JsonProperty("web_browser")
|
@JsonProperty("web_browser")
|
||||||
private WebBrowser webBrowser;
|
private AssistantWebBrowser webBrowser;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The type of tool being used, always set to "web_browser".
|
* The type of tool being used, always set to "web_browser".
|
||||||
|
|
@ -20,7 +20,7 @@ import java.util.List;
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Data
|
@Data
|
||||||
public class QuerySupportParams extends CommonRequest implements ClientRequest<QuerySupportParams> {
|
public class AssistantQuerySupportParams extends CommonRequest implements ClientRequest<AssistantQuerySupportParams> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List of assistant IDs to query support status for.
|
* List of assistant IDs to query support status for.
|
||||||
|
|
@ -3,9 +3,9 @@ package ai.z.openapi.service.deserialize.assistant.message;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import com.fasterxml.jackson.core.JsonParser;
|
import com.fasterxml.jackson.core.JsonParser;
|
||||||
import com.fasterxml.jackson.databind.*;
|
import com.fasterxml.jackson.databind.*;
|
||||||
import ai.z.openapi.service.assistant.message.MessageContent;
|
import ai.z.openapi.service.assistant.message.AssistantMessageContent;
|
||||||
import ai.z.openapi.service.assistant.message.TextContentBlock;
|
import ai.z.openapi.service.assistant.message.AssistantTextContentBlock;
|
||||||
import ai.z.openapi.service.assistant.message.tools.ToolsType;
|
import ai.z.openapi.service.assistant.message.tools.AssistantToolsType;
|
||||||
import ai.z.openapi.service.deserialize.JsonTypeField;
|
import ai.z.openapi.service.deserialize.JsonTypeField;
|
||||||
import ai.z.openapi.service.deserialize.JsonTypeMapping;
|
import ai.z.openapi.service.deserialize.JsonTypeMapping;
|
||||||
|
|
||||||
|
|
@ -14,14 +14,14 @@ import java.lang.reflect.Field;
|
||||||
import java.lang.reflect.ParameterizedType;
|
import java.lang.reflect.ParameterizedType;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class MessageContentDeserializer extends JsonDeserializer<MessageContent> {
|
public class AssistantMessageContentDeserializer extends JsonDeserializer<AssistantMessageContent> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MessageContent deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
|
public AssistantMessageContent deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
|
||||||
JsonNode node = p.readValueAsTree();
|
JsonNode node = p.readValueAsTree();
|
||||||
|
|
||||||
// Get JsonTypeMapping annotation from MessageContent class
|
// Get JsonTypeMapping annotation from MessageContent class
|
||||||
JsonTypeMapping mapping = MessageContent.class.getAnnotation(JsonTypeMapping.class);
|
JsonTypeMapping mapping = AssistantMessageContent.class.getAnnotation(JsonTypeMapping.class);
|
||||||
if (mapping == null) {
|
if (mapping == null) {
|
||||||
throw new IllegalStateException("Missing JsonTypeMapping annotation on MessageContent class");
|
throw new IllegalStateException("Missing JsonTypeMapping annotation on MessageContent class");
|
||||||
}
|
}
|
||||||
|
|
@ -66,9 +66,10 @@ public class MessageContentDeserializer extends JsonDeserializer<MessageContent>
|
||||||
ParameterizedType listType = (ParameterizedType) field.getGenericType();
|
ParameterizedType listType = (ParameterizedType) field.getGenericType();
|
||||||
Class<?> listGenericType = (Class<?>) listType.getActualTypeArguments()[0];
|
Class<?> listGenericType = (Class<?>) listType.getActualTypeArguments()[0];
|
||||||
|
|
||||||
if (listGenericType.equals(ToolsType.class)) {
|
if (listGenericType.equals(AssistantToolsType.class)) {
|
||||||
// Deserialize to List<ToolsType>
|
// Deserialize to List<ToolsType>
|
||||||
List<ToolsType> list = new ObjectMapper().readerForListOf(ToolsType.class)
|
List<AssistantToolsType> list = new ObjectMapper()
|
||||||
|
.readerForListOf(AssistantToolsType.class)
|
||||||
.readValue(node.get(name));
|
.readValue(node.get(name));
|
||||||
field.set(obj, list);
|
field.set(obj, list);
|
||||||
}
|
}
|
||||||
|
|
@ -84,7 +85,7 @@ public class MessageContentDeserializer extends JsonDeserializer<MessageContent>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (MessageContent) obj;
|
return (AssistantMessageContent) obj;
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
throw new RuntimeException("Error while creating instance of " + clazz.getName(), e);
|
throw new RuntimeException("Error while creating instance of " + clazz.getName(), e);
|
||||||
|
|
@ -94,10 +95,10 @@ public class MessageContentDeserializer extends JsonDeserializer<MessageContent>
|
||||||
|
|
||||||
// Create instance of the class
|
// Create instance of the class
|
||||||
try {
|
try {
|
||||||
MessageContent obj = TextContentBlock.class.getDeclaredConstructor().newInstance();
|
AssistantMessageContent obj = AssistantTextContentBlock.class.getDeclaredConstructor().newInstance();
|
||||||
|
|
||||||
// Use reflection to manually set field values
|
// Use reflection to manually set field values
|
||||||
for (Field field : TextContentBlock.class.getDeclaredFields()) {
|
for (Field field : AssistantTextContentBlock.class.getDeclaredFields()) {
|
||||||
field.setAccessible(true);
|
field.setAccessible(true);
|
||||||
// field.getName() gets the value from JsonProperty annotation above
|
// field.getName() gets the value from JsonProperty annotation above
|
||||||
JsonProperty annotation = field.getAnnotation(JsonProperty.class);
|
JsonProperty annotation = field.getAnnotation(JsonProperty.class);
|
||||||
|
|
@ -132,7 +133,8 @@ public class MessageContentDeserializer extends JsonDeserializer<MessageContent>
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
throw new RuntimeException("Error while creating instance of " + TextContentBlock.class.getName(), e);
|
throw new RuntimeException("Error while creating instance of " + AssistantTextContentBlock.class.getName(),
|
||||||
|
e);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -2,11 +2,11 @@ package ai.z.openapi.service.assistant;
|
||||||
|
|
||||||
import ai.z.openapi.ZaiClient;
|
import ai.z.openapi.ZaiClient;
|
||||||
import ai.z.openapi.core.config.ZaiConfig;
|
import ai.z.openapi.core.config.ZaiConfig;
|
||||||
import ai.z.openapi.service.assistant.conversation.ConversationParameters;
|
import ai.z.openapi.service.assistant.conversation.AssistantConversationParameters;
|
||||||
import ai.z.openapi.service.assistant.conversation.ConversationUsageListResponse;
|
import ai.z.openapi.service.assistant.conversation.AssistantConversationUsageListResponse;
|
||||||
import ai.z.openapi.service.assistant.message.MessageContent;
|
import ai.z.openapi.service.assistant.message.AssistantMessageContent;
|
||||||
import ai.z.openapi.service.assistant.query_support.AssistantSupportResponse;
|
import ai.z.openapi.service.assistant.query_support.AssistantSupportResponse;
|
||||||
import ai.z.openapi.service.assistant.query_support.QuerySupportParams;
|
import ai.z.openapi.service.assistant.query_support.AssistantQuerySupportParams;
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
|
@ -66,12 +66,12 @@ public class AssistantServiceTest {
|
||||||
@EnabledIfEnvironmentVariable(named = "ZAI_API_KEY", matches = "^[^.]+\\.[^.]+$")
|
@EnabledIfEnvironmentVariable(named = "ZAI_API_KEY", matches = "^[^.]+\\.[^.]+$")
|
||||||
void testStreamAssistantCompletion() throws JsonProcessingException {
|
void testStreamAssistantCompletion() throws JsonProcessingException {
|
||||||
// Prepare test data
|
// Prepare test data
|
||||||
MessageTextContent textContent = MessageTextContent.builder()
|
AssistantMessageTextContent textContent = AssistantMessageTextContent.builder()
|
||||||
.text("Help me search for the release time of ZAI's CogVideoX")
|
.text("Help me search for the release time of ZAI's CogVideoX")
|
||||||
.type("text")
|
.type("text")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
ConversationMessage message = ConversationMessage.builder()
|
AssistantConversationMessage message = AssistantConversationMessage.builder()
|
||||||
.role("user")
|
.role("user")
|
||||||
.content(Collections.singletonList(textContent))
|
.content(Collections.singletonList(textContent))
|
||||||
.build();
|
.build();
|
||||||
|
|
@ -95,7 +95,7 @@ public class AssistantServiceTest {
|
||||||
// Test stream data processing
|
// Test stream data processing
|
||||||
AtomicInteger messageCount = new AtomicInteger(0);
|
AtomicInteger messageCount = new AtomicInteger(0);
|
||||||
AtomicBoolean isFirst = new AtomicBoolean(true);
|
AtomicBoolean isFirst = new AtomicBoolean(true);
|
||||||
List<MessageContent> choices = new ArrayList<>();
|
List<AssistantMessageContent> choices = new ArrayList<>();
|
||||||
AtomicReference<AssistantCompletion> lastAccumulator = new AtomicReference<>();
|
AtomicReference<AssistantCompletion> lastAccumulator = new AtomicReference<>();
|
||||||
|
|
||||||
response.getFlowable().doOnNext(accumulator -> {
|
response.getFlowable().doOnNext(accumulator -> {
|
||||||
|
|
@ -103,7 +103,7 @@ public class AssistantServiceTest {
|
||||||
logger.info("Starting to receive stream response:");
|
logger.info("Starting to receive stream response:");
|
||||||
}
|
}
|
||||||
if (accumulator.getChoices() != null && !accumulator.getChoices().isEmpty()) {
|
if (accumulator.getChoices() != null && !accumulator.getChoices().isEmpty()) {
|
||||||
MessageContent delta = accumulator.getChoices().get(0).getDelta();
|
AssistantMessageContent delta = accumulator.getChoices().get(0).getDelta();
|
||||||
if (delta != null) {
|
if (delta != null) {
|
||||||
try {
|
try {
|
||||||
logger.info("MessageContent: {}", mapper.writeValueAsString(delta));
|
logger.info("MessageContent: {}", mapper.writeValueAsString(delta));
|
||||||
|
|
@ -133,7 +133,7 @@ public class AssistantServiceTest {
|
||||||
@EnabledIfEnvironmentVariable(named = "ZAI_API_KEY", matches = "^[^.]+\\.[^.]+$")
|
@EnabledIfEnvironmentVariable(named = "ZAI_API_KEY", matches = "^[^.]+\\.[^.]+$")
|
||||||
void testQuerySupport() {
|
void testQuerySupport() {
|
||||||
// Prepare test data
|
// Prepare test data
|
||||||
QuerySupportParams request = QuerySupportParams.builder()
|
AssistantQuerySupportParams request = AssistantQuerySupportParams.builder()
|
||||||
.assistantIdList(Collections.singletonList(TEST_ASSISTANT_ID))
|
.assistantIdList(Collections.singletonList(TEST_ASSISTANT_ID))
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
|
|
@ -150,14 +150,14 @@ public class AssistantServiceTest {
|
||||||
@EnabledIfEnvironmentVariable(named = "ZAI_API_KEY", matches = "^[^.]+\\.[^.]+$")
|
@EnabledIfEnvironmentVariable(named = "ZAI_API_KEY", matches = "^[^.]+\\.[^.]+$")
|
||||||
void testQueryConversationUsage() {
|
void testQueryConversationUsage() {
|
||||||
// Prepare test data
|
// Prepare test data
|
||||||
ConversationParameters request = ConversationParameters.builder()
|
AssistantConversationParameters request = AssistantConversationParameters.builder()
|
||||||
.assistantId(TEST_ASSISTANT_ID)
|
.assistantId(TEST_ASSISTANT_ID)
|
||||||
.page(1)
|
.page(1)
|
||||||
.pageSize(5)
|
.pageSize(5)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
// Execute test
|
// Execute test
|
||||||
ConversationUsageListResponse response = assistantService.queryConversationUsage(request);
|
AssistantConversationUsageListResponse response = assistantService.queryConversationUsage(request);
|
||||||
|
|
||||||
// Verify results
|
// Verify results
|
||||||
assertNotNull(response.getData(), "Response should not be null");
|
assertNotNull(response.getData(), "Response should not be null");
|
||||||
|
|
@ -169,9 +169,12 @@ public class AssistantServiceTest {
|
||||||
@EnabledIfEnvironmentVariable(named = "ZAI_API_KEY", matches = "^[^.]+\\.[^.]+$")
|
@EnabledIfEnvironmentVariable(named = "ZAI_API_KEY", matches = "^[^.]+\\.[^.]+$")
|
||||||
void testErrorHandling_InvalidAssistantId() {
|
void testErrorHandling_InvalidAssistantId() {
|
||||||
// Test with invalid assistant ID
|
// Test with invalid assistant ID
|
||||||
MessageTextContent textContent = MessageTextContent.builder().text("Hello").type("text").build();
|
AssistantMessageTextContent textContent = AssistantMessageTextContent.builder()
|
||||||
|
.text("Hello")
|
||||||
|
.type("text")
|
||||||
|
.build();
|
||||||
|
|
||||||
ConversationMessage message = ConversationMessage.builder()
|
AssistantConversationMessage message = AssistantConversationMessage.builder()
|
||||||
.role("user")
|
.role("user")
|
||||||
.content(Collections.singletonList(textContent))
|
.content(Collections.singletonList(textContent))
|
||||||
.build();
|
.build();
|
||||||
|
|
@ -193,32 +196,36 @@ public class AssistantServiceTest {
|
||||||
@DisplayName("Test Multi-turn Conversation")
|
@DisplayName("Test Multi-turn Conversation")
|
||||||
@EnabledIfEnvironmentVariable(named = "ZAI_API_KEY", matches = "^[^.]+\\.[^.]+$")
|
@EnabledIfEnvironmentVariable(named = "ZAI_API_KEY", matches = "^[^.]+\\.[^.]+$")
|
||||||
void testMultiTurnConversation() throws JsonProcessingException {
|
void testMultiTurnConversation() throws JsonProcessingException {
|
||||||
List<ConversationMessage> messages = new ArrayList<>();
|
List<AssistantConversationMessage> messages = new ArrayList<>();
|
||||||
|
|
||||||
// First round of conversation
|
// First round of conversation
|
||||||
MessageTextContent firstContent = MessageTextContent.builder()
|
AssistantMessageTextContent firstContent = AssistantMessageTextContent.builder()
|
||||||
.text("Hello, I would like to learn about machine learning")
|
.text("Hello, I would like to learn about machine learning")
|
||||||
.type("text")
|
.type("text")
|
||||||
.build();
|
.build();
|
||||||
messages
|
messages.add(AssistantConversationMessage.builder()
|
||||||
.add(ConversationMessage.builder().role("user").content(Collections.singletonList(firstContent)).build());
|
.role("user")
|
||||||
|
.content(Collections.singletonList(firstContent))
|
||||||
|
.build());
|
||||||
|
|
||||||
MessageTextContent assistantContent = MessageTextContent.builder()
|
AssistantMessageTextContent assistantContent = AssistantMessageTextContent.builder()
|
||||||
.text("Hello! Machine learning is an important branch of artificial intelligence...")
|
.text("Hello! Machine learning is an important branch of artificial intelligence...")
|
||||||
.type("text")
|
.type("text")
|
||||||
.build();
|
.build();
|
||||||
messages.add(ConversationMessage.builder()
|
messages.add(AssistantConversationMessage.builder()
|
||||||
.role("assistant")
|
.role("assistant")
|
||||||
.content(Collections.singletonList(assistantContent))
|
.content(Collections.singletonList(assistantContent))
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
// Second round of conversation
|
// Second round of conversation
|
||||||
MessageTextContent secondContent = MessageTextContent.builder()
|
AssistantMessageTextContent secondContent = AssistantMessageTextContent.builder()
|
||||||
.text("Can you introduce supervised learning in detail?")
|
.text("Can you introduce supervised learning in detail?")
|
||||||
.type("text")
|
.type("text")
|
||||||
.build();
|
.build();
|
||||||
messages
|
messages.add(AssistantConversationMessage.builder()
|
||||||
.add(ConversationMessage.builder().role("user").content(Collections.singletonList(secondContent)).build());
|
.role("user")
|
||||||
|
.content(Collections.singletonList(secondContent))
|
||||||
|
.build());
|
||||||
|
|
||||||
String requestId = String.format(REQUEST_ID_TEMPLATE, System.currentTimeMillis());
|
String requestId = String.format(REQUEST_ID_TEMPLATE, System.currentTimeMillis());
|
||||||
|
|
||||||
|
|
@ -232,7 +239,7 @@ public class AssistantServiceTest {
|
||||||
AssistantApiResponse response = assistantService.assistantCompletionStream(request);
|
AssistantApiResponse response = assistantService.assistantCompletionStream(request);
|
||||||
response.getFlowable().doOnNext(accumulator -> {
|
response.getFlowable().doOnNext(accumulator -> {
|
||||||
if (accumulator.getChoices() != null && !accumulator.getChoices().isEmpty()) {
|
if (accumulator.getChoices() != null && !accumulator.getChoices().isEmpty()) {
|
||||||
MessageContent delta = accumulator.getChoices().get(0).getDelta();
|
AssistantMessageContent delta = accumulator.getChoices().get(0).getDelta();
|
||||||
if (delta != null) {
|
if (delta != null) {
|
||||||
try {
|
try {
|
||||||
logger.info("MessageContent: {}", mapper.writeValueAsString(delta));
|
logger.info("MessageContent: {}", mapper.writeValueAsString(delta));
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue