diff --git a/pom.xml b/pom.xml index a6791e8c..8f3fe0b4 100644 --- a/pom.xml +++ b/pom.xml @@ -518,4 +518,4 @@ - \ No newline at end of file + diff --git a/spring-ai-alibaba-core/pom.xml b/spring-ai-alibaba-core/pom.xml index b277bcc8..0065f2b8 100644 --- a/spring-ai-alibaba-core/pom.xml +++ b/spring-ai-alibaba-core/pom.xml @@ -53,7 +53,6 @@ - org.springframework.ai spring-ai-test @@ -73,4 +72,4 @@ - \ No newline at end of file + diff --git a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/autoconfigure/dashscope/DashScopeAutoConfiguration.java b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/autoconfigure/dashscope/DashScopeAutoConfiguration.java index dcc95bf8..b0af59aa 100644 --- a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/autoconfigure/dashscope/DashScopeAutoConfiguration.java +++ b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/autoconfigure/dashscope/DashScopeAutoConfiguration.java @@ -65,6 +65,7 @@ /** * @author nuocheng.lxm + * @author yuluo * @date 2024/8/16 11:45 */ @AutoConfiguration(after = { RestClientAutoConfiguration.class, WebClientAutoConfiguration.class, @@ -227,33 +228,4 @@ private record ResolvedConnectionProperties(String baseUrl, String apiKey, Strin CollectionUtils.toMultiValueMap(connectionHeaders)); } - /** - * Setting the API key. - * @param connectionProperties {@link DashScopeConnectionProperties} - */ - private void settingApiKey(DashScopeConnectionProperties connectionProperties) { - String apiKey; - try { - // It is recommended to set the key by defining the api-key in an environment - // variable. - var envKey = System.getenv(DASHSCOPE_API_KEY); - if (Objects.nonNull(envKey)) { - Constants.apiKey = envKey; - return; - } - if (Objects.nonNull(connectionProperties.getApiKey())) { - apiKey = connectionProperties.getApiKey(); - } - else { - apiKey = ApiKey.getApiKey(null); - } - - Constants.apiKey = apiKey; - } - catch (NoApiKeyException e) { - throw new RuntimeException(e.getMessage()); - } - - } - } diff --git a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/autoconfigure/dashscope/DashScopeChatProperties.java b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/autoconfigure/dashscope/DashScopeChatProperties.java index 7138eb98..8f10aff4 100644 --- a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/autoconfigure/dashscope/DashScopeChatProperties.java +++ b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/autoconfigure/dashscope/DashScopeChatProperties.java @@ -33,12 +33,12 @@ public class DashScopeChatProperties extends DashScopeParentProperties { /** - * Spring Cloud Alibaba AI configuration prefix. + * Spring AI Alibaba configuration prefix. */ public static final String CONFIG_PREFIX = "spring.ai.dashscope.chat"; /** - * Default DashScope Qwen Chat model. + * Default DashScope Chat model. */ public static final String DEFAULT_DEPLOYMENT_NAME = Generation.Models.QWEN_TURBO; @@ -48,7 +48,7 @@ public class DashScopeChatProperties extends DashScopeParentProperties { private static final Float DEFAULT_TEMPERATURE = 0.8f; /** - * Enable qwen ai chat client. + * Enable Dashscope ai chat client. */ private boolean enabled = true; diff --git a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/autoconfigure/dashscope/DashScopeConnectionProperties.java b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/autoconfigure/dashscope/DashScopeConnectionProperties.java index 7f4c7633..68969d23 100644 --- a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/autoconfigure/dashscope/DashScopeConnectionProperties.java +++ b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/autoconfigure/dashscope/DashScopeConnectionProperties.java @@ -22,7 +22,7 @@ import static com.alibaba.cloud.ai.dashscope.common.DashScopeApiConstants.DEFAULT_READ_TIMEOUT; /** - * Spring Cloud Alibaba AI TongYi LLM connection properties. + * Spring AI Alibaba TongYi LLM connection properties. * * @author yuluo * @author yuluo diff --git a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/autoconfigure/dashscope/DashScopeImageProperties.java b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/autoconfigure/dashscope/DashScopeImageProperties.java index d85a1f6f..06697a6c 100644 --- a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/autoconfigure/dashscope/DashScopeImageProperties.java +++ b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/autoconfigure/dashscope/DashScopeImageProperties.java @@ -34,17 +34,17 @@ public class DashScopeImageProperties extends DashScopeParentProperties { /** - * Spring Cloud Alibaba AI configuration prefix. + * Spring AI Alibaba configuration prefix. */ public static final String CONFIG_PREFIX = "spring.ai.dashscope.image"; /** - * Default TongYi Chat model. + * Default DashScope Chat model. */ public static final String DEFAULT_IMAGES_MODEL_NAME = ImageSynthesis.Models.WANX_V1; /** - * Enable TongYiQWEN ai images client. + * Enable DashScope ai images client. */ private boolean enabled = true; diff --git a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/autoconfigure/dashscope/DashScopeParentProperties.java b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/autoconfigure/dashscope/DashScopeParentProperties.java index 416c37b3..af21e53b 100644 --- a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/autoconfigure/dashscope/DashScopeParentProperties.java +++ b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/autoconfigure/dashscope/DashScopeParentProperties.java @@ -49,11 +49,11 @@ public void setBaseUrl(String baseUrl) { this.baseUrl = baseUrl; } - String getWorkspaceId() { + public String getWorkspaceId() { return workspaceId; } - void setWorkspaceId(String workspaceId) { + public void setWorkspaceId(String workspaceId) { this.workspaceId = workspaceId; } diff --git a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/api/DashScopeApi.java b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/api/DashScopeApi.java index 41d59ce5..de2a205a 100644 --- a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/api/DashScopeApi.java +++ b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/api/DashScopeApi.java @@ -38,6 +38,8 @@ /** * @author nuocheng.lxm + * @author yuluo + * * @date 2024/7/31 14:15 */ public class DashScopeApi { @@ -345,12 +347,6 @@ public record DocumentChunk(@JsonProperty("chunk_id") int chunkId, @JsonProperty } } - /** - * 上传文件 返回文件ID - * @param file - * @param request - * @return - */ public String upload(File file, UploadRequest request) { // 申请上传 ResponseEntity responseEntity = uploadLease(request); @@ -358,15 +354,12 @@ public String upload(File file, UploadRequest request) { if (uploadLeaseResponse == null) { throw new DashScopeException(ErrorCodeEnum.READER_APPLY_LEASE_ERROR); } - if (!"SUCCESS".equals(uploadLeaseResponse.code().toUpperCase())) { + if (!"SUCCESS".equalsIgnoreCase(uploadLeaseResponse.code())) { throw new DashScopeException("ApplyLease Failed,code:%s,message:%s".formatted(uploadLeaseResponse.code(), uploadLeaseResponse.message())); } - // 上传文件 uploadFile(file, uploadLeaseResponse); - // 开始解析 - String fileId = addFile(uploadLeaseResponse.data.leaseId(), request); - return fileId; + return addFile(uploadLeaseResponse.data.leaseId(), request); } public ResponseEntity> queryFileInfo(String categoryId, @@ -451,8 +444,7 @@ public String getFilename() { } }; HttpEntity requestEntity = new HttpEntity<>(resource, headers); - ResponseEntity response = restTemplate.exchange(new URI(uploadParam.url), HttpMethod.PUT, - requestEntity, Void.class); + restTemplate.exchange(new URI(uploadParam.url), HttpMethod.PUT, requestEntity, Void.class); } catch (Exception ex) { throw new DashScopeException("Upload File Failed", ex); @@ -672,8 +664,8 @@ public void upsertPipeline(List documents, DashScopeStoreOptions store retrieverOptions.getRerankModelName())), retrieverOptions.getRerankMinScore(), retrieverOptions.getRerankTopN())); List documentIdList = documents.stream() - .filter(e -> e.getId() != null) .map(Document::getId) + .filter(Objects::nonNull) .collect(Collectors.toList()); UpsertPipelineRequest upsertPipelineRequest = new UpsertPipelineRequest(storeOptions.getIndexName(), "MANAGED_SHARED", null, "unstructured", "recommend", @@ -689,7 +681,7 @@ public void upsertPipeline(List documents, DashScopeStoreOptions store .retrieve() .toEntity(UpsertPipelineResponse.class); if (upsertPipelineResponse.getBody() == null - || !"SUCCESS".equals(upsertPipelineResponse.getBody().status.toUpperCase())) { + || !"SUCCESS".equalsIgnoreCase(upsertPipelineResponse.getBody().status)) { throw new DashScopeException(ErrorCodeEnum.CREATE_INDEX_ERROR); } String pipelineId = upsertPipelineResponse.getBody().id; @@ -699,7 +691,7 @@ public void upsertPipeline(List documents, DashScopeStoreOptions store .retrieve() .toEntity(StartPipelineResponse.class); if (startPipelineResponse.getBody() == null - || !"SUCCESS".equals(startPipelineResponse.getBody().code.toUpperCase()) + || !"SUCCESS".equalsIgnoreCase(startPipelineResponse.getBody().code) || startPipelineResponse.getBody().ingestionId == null) { throw new DashScopeException(ErrorCodeEnum.INDEX_ADD_DOCUMENT_ERROR); } @@ -715,7 +707,7 @@ public boolean deletePipelineDocument(String pipelineId, List idList) { .retrieve() .toEntity(DelePipelineDocumentResponse.class); if (deleDocumentResponse == null || deleDocumentResponse.getBody() == null - || !"SUCCESS".equals(deleDocumentResponse.getBody().code.toUpperCase())) { + || !"SUCCESS".equalsIgnoreCase(deleDocumentResponse.getBody().code)) { return false; } return true; @@ -736,11 +728,11 @@ public List retriever(String pipelineId, String query, DashScopeDocume .retrieve() .toEntity(DocumentRetrieveResponse.class); if (deleDocumentResponse == null || deleDocumentResponse.getBody() == null - || !"SUCCESS".equals(deleDocumentResponse.getBody().code.toUpperCase())) { + || !"SUCCESS".equalsIgnoreCase(deleDocumentResponse.getBody().code)) { throw new DashScopeException(ErrorCodeEnum.RETRIEVER_DOCUMENT_ERROR); } List nodeList = deleDocumentResponse.getBody().nodes; - if (nodeList == null || nodeList.size() == 0) { + if (nodeList == null || nodeList.isEmpty()) { return new ArrayList<>(); } List documents = new ArrayList<>(); diff --git a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/api/DashScopeAudioApi.java b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/api/DashScopeAudioApi.java index 5bf43848..999a776a 100644 --- a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/api/DashScopeAudioApi.java +++ b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/api/DashScopeAudioApi.java @@ -180,7 +180,7 @@ public record SpeechRequest( */ public enum Voice { - // @formatter:off + // @formatter:off @JsonProperty("alloy") ALLOY("alloy"), @JsonProperty("echo") ECHO("echo"), @JsonProperty("fable") FABLE("fable"), @@ -191,7 +191,7 @@ public enum Voice { public final String value; - private Voice(String value) { + Voice(String value) { this.value = value; } @@ -481,7 +481,7 @@ public Class getResponseType() { */ @JsonInclude(Include.NON_NULL) public record TranslationRequest( - // @formatter:off + // @formatter:off @JsonProperty("file") byte[] file, @JsonProperty("model") String model, @JsonProperty("prompt") String prompt, @@ -557,7 +557,7 @@ public TranslationRequest build() { */ @JsonInclude(Include.NON_NULL) public record StructuredResponse( - // @formatter:off + // @formatter:off @JsonProperty("language") String language, @JsonProperty("duration") Float duration, @JsonProperty("text") String text, @@ -566,7 +566,7 @@ public record StructuredResponse( // @formatter:on /** - * Extracted word and it corresponding timestamps. + * Extracted word and it's corresponding timestamps. * * @param word The text content of the word. * @param start The start time of the word in seconds. @@ -600,7 +600,7 @@ public record Word( */ @JsonInclude(Include.NON_NULL) public record Segment( - // @formatter:off + // @formatter:off @JsonProperty("id") Integer id, @JsonProperty("seek") Integer seek, @JsonProperty("start") Float start, diff --git a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/DashScopeAudioSpeechModelOpenAPI.java b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/DashScopeAudioSpeechModelOpenAPI.java index 4d30bc52..96fe27d2 100644 --- a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/DashScopeAudioSpeechModelOpenAPI.java +++ b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/DashScopeAudioSpeechModelOpenAPI.java @@ -16,8 +16,6 @@ package com.alibaba.cloud.ai.dashscope.audio; -import java.nio.ByteBuffer; - import com.alibaba.cloud.ai.dashscope.api.DashScopeAudioApi; import com.alibaba.cloud.ai.dashscope.audio.speech.Speech; import com.alibaba.cloud.ai.dashscope.audio.speech.SpeechModel; @@ -29,7 +27,6 @@ import com.alibaba.cloud.ai.dashscope.metadata.audio.DashScopeAudioSpeechResponseMetadata; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.ai.chat.metadata.RateLimit; import org.springframework.ai.retry.RetryUtils; import org.springframework.http.ResponseEntity; import org.springframework.retry.support.RetryTemplate; @@ -38,8 +35,6 @@ import reactor.core.publisher.Flux; -import static org.springframework.util.ObjectUtils.isEmpty; - /** * OpenAI audio speech client implementation for backed by {@link DashScopeAudioApi}. * diff --git a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/DashScopeAudioTranscriptionModelOpenAPI.java b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/DashScopeAudioTranscriptionModelOpenAPI.java index 92aadcd2..9c89187d 100644 --- a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/DashScopeAudioTranscriptionModelOpenAPI.java +++ b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/DashScopeAudioTranscriptionModelOpenAPI.java @@ -17,18 +17,14 @@ package com.alibaba.cloud.ai.dashscope.audio; import com.alibaba.cloud.ai.dashscope.api.DashScopeAudioApi; -import com.alibaba.cloud.ai.dashscope.metadata.audio.DashScopeAudioTranscriptionResponseMetadata; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.ai.audio.transcription.AudioTranscription; import org.springframework.ai.audio.transcription.AudioTranscriptionPrompt; import org.springframework.ai.audio.transcription.AudioTranscriptionResponse; -import org.springframework.ai.chat.metadata.RateLimit; import org.springframework.ai.model.Model; import org.springframework.ai.retry.RetryUtils; import org.springframework.core.io.Resource; -import org.springframework.http.ResponseEntity; import org.springframework.retry.support.RetryTemplate; import org.springframework.util.Assert; diff --git a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/DashScopeAudioTranscriptionOptions.java b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/DashScopeAudioTranscriptionOptions.java index f2877ceb..4c2c7d76 100644 --- a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/DashScopeAudioTranscriptionOptions.java +++ b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/DashScopeAudioTranscriptionOptions.java @@ -24,7 +24,6 @@ import com.fasterxml.jackson.annotation.JsonProperty; import org.springframework.ai.audio.transcription.AudioTranscriptionOptions; -import org.springframework.ai.model.ModelOptions; import org.springframework.boot.context.properties.NestedConfigurationProperty; /** diff --git a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/speech/Speech.java b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/speech/Speech.java index 9a8c53f7..94771713 100644 --- a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/speech/Speech.java +++ b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/speech/Speech.java @@ -16,7 +16,6 @@ package com.alibaba.cloud.ai.dashscope.audio.speech; -import java.nio.ByteBuffer; import java.util.Arrays; import java.util.Objects; diff --git a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/speech/SpeechModel.java b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/speech/SpeechModel.java index dac959bb..dceb81cc 100644 --- a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/speech/SpeechModel.java +++ b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/speech/SpeechModel.java @@ -16,8 +16,6 @@ package com.alibaba.cloud.ai.dashscope.audio.speech; -import java.nio.ByteBuffer; - import org.springframework.ai.model.Model; /** diff --git a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/speech/SpeechStreamModel.java b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/speech/SpeechStreamModel.java index 11c814a2..2fa085a4 100644 --- a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/speech/SpeechStreamModel.java +++ b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/speech/SpeechStreamModel.java @@ -16,8 +16,6 @@ package com.alibaba.cloud.ai.dashscope.audio.speech; -import java.nio.ByteBuffer; - import reactor.core.publisher.Flux; import org.springframework.ai.model.StreamingModel; diff --git a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/speech/StreamingSpeechModel.java b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/speech/StreamingSpeechModel.java index e170ef7e..0bd8ac2d 100644 --- a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/speech/StreamingSpeechModel.java +++ b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/audio/speech/StreamingSpeechModel.java @@ -16,8 +16,6 @@ package com.alibaba.cloud.ai.dashscope.audio.speech; -import java.nio.ByteBuffer; - import reactor.core.publisher.Flux; import org.springframework.ai.model.StreamingModel; diff --git a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/chat/DashScopeChatModel.java b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/chat/DashScopeChatModel.java index 1992f80e..db315238 100755 --- a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/chat/DashScopeChatModel.java +++ b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/chat/DashScopeChatModel.java @@ -41,6 +41,15 @@ import org.springframework.util.CollectionUtils; import org.springframework.util.MimeType; +/** + * {@link ChatModel} implementation for {@literal Alibaba DashScope} + * backed by {@link Generation}. + * + * @author yuluo + * @author yuluo + * @see ChatModel + * @see com.alibaba.dashscope.aigc.generation + */ public class DashScopeChatModel extends AbstractToolCallSupport implements ChatModel { private static final Logger logger = LoggerFactory.getLogger(DashScopeChatModel.class); @@ -141,7 +150,7 @@ public Flux stream(Prompt prompt) { @SuppressWarnings("null") String requestId = chatCompletion2.requestId(); - // @formatter:off + // @formatter:off List generations = chatCompletion2.output().choices().stream().map(choice -> { if (choice.message().role() != null) { roleMap.putIfAbsent(requestId, choice.message().role().name()); diff --git a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/chat/DashScopeChatOptions.java b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/chat/DashScopeChatOptions.java index 0b2b9647..156d0a5b 100755 --- a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/chat/DashScopeChatOptions.java +++ b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/chat/DashScopeChatOptions.java @@ -22,7 +22,7 @@ @JsonInclude(JsonInclude.Include.NON_NULL) public class DashScopeChatOptions implements FunctionCallingOptions, ChatOptions { - // @formatter:off + // @formatter:off /** ID of the model to use. */ @JsonProperty("model") private String model; @@ -51,8 +51,6 @@ public class DashScopeChatOptions implements FunctionCallingOptions, ChatOptions private @JsonProperty("top_k") Integer topK; /** - * - * *
    *
  • stop参数用于实现内容生成过程的精确控制,在生成内容即将包含指定的字符串或token_ids时自动停止,生成内容不包含指定的内容。 *

    例如,如果指定stop为"你好",表示将要生成"你好"时停止;如果指定stop为[37763, 367],表示将要生成"Observation"时停止。 diff --git a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/embedding/DashScopeEmbeddingModel.java b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/embedding/DashScopeEmbeddingModel.java index f8096fae..e20163a6 100644 --- a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/embedding/DashScopeEmbeddingModel.java +++ b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/embedding/DashScopeEmbeddingModel.java @@ -42,6 +42,9 @@ * DashScope Embedding Model implementation. * * @author nuocheng.lxm + * @author why_ohh + * @author yuluo + * @author why_ohh * @date 2024/7/31 10:57 */ public class DashScopeEmbeddingModel extends AbstractEmbeddingModel { diff --git a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/embedding/DashScopeEmbeddingOptions.java b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/embedding/DashScopeEmbeddingOptions.java index 45876ce6..6c50e401 100644 --- a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/embedding/DashScopeEmbeddingOptions.java +++ b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/embedding/DashScopeEmbeddingOptions.java @@ -23,6 +23,9 @@ /** * @author nuocheng.lxm + * @author why_ohh + * @author yuluo + * @author why_ohh * @date 2024/8/1 11:14 */ @JsonInclude(JsonInclude.Include.NON_NULL) diff --git a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/image/DashScopeImageModel.java b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/image/DashScopeImageModel.java index 61078b22..05ea9561 100644 --- a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/image/DashScopeImageModel.java +++ b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/image/DashScopeImageModel.java @@ -14,11 +14,12 @@ /** * @author nuocheng.lxm + * @author yuluo * @date 2024/8/16 11:29 */ public class DashScopeImageModel implements ImageModel { - private static Logger logger = LoggerFactory.getLogger(DashScopeImageModel.class); + private static final Logger logger = LoggerFactory.getLogger(DashScopeImageModel.class); /** * Low-level access to the DashScope Image API. @@ -126,7 +127,7 @@ private ImageResponse toImageResponse( DashScopeImageApi.DashScopeImageAsyncReponse.DashScopeImageAsyncReponseOutput output) { List genImageList = output .results(); - if (genImageList == null || genImageList.size() == 0) { + if (genImageList == null || genImageList.isEmpty()) { return new ImageResponse(List.of()); } List imageGenerationList = genImageList.stream() diff --git a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/image/DashScopeImageOptions.java b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/image/DashScopeImageOptions.java index 116f0d03..562e2318 100644 --- a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/image/DashScopeImageOptions.java +++ b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/image/DashScopeImageOptions.java @@ -23,6 +23,7 @@ /** * @author nuocheng.lxm + * @author yuluo * @date 2024/8/16 11:29 */ @JsonInclude(JsonInclude.Include.NON_NULL) diff --git a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/metadata/DashScopeAiUsage.java b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/metadata/DashScopeAiUsage.java index 80cf643f..4d1f267f 100644 --- a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/metadata/DashScopeAiUsage.java +++ b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/metadata/DashScopeAiUsage.java @@ -15,7 +15,6 @@ */ package com.alibaba.cloud.ai.dashscope.metadata; -import com.alibaba.cloud.ai.dashscope.api.DashScopeApi; import com.alibaba.cloud.ai.dashscope.api.DashScopeApi.TokenUsage; import org.springframework.ai.chat.metadata.Usage; import org.springframework.util.Assert; diff --git a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/metadata/audio/DashScopeAudioSpeechResponseMetadata.java b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/metadata/audio/DashScopeAudioSpeechResponseMetadata.java index 6afa4dc0..719e84dc 100644 --- a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/metadata/audio/DashScopeAudioSpeechResponseMetadata.java +++ b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/metadata/audio/DashScopeAudioSpeechResponseMetadata.java @@ -16,8 +16,6 @@ package com.alibaba.cloud.ai.dashscope.metadata.audio; -import java.util.HashMap; - import com.alibaba.dashscope.audio.tts.SpeechSynthesisResult; import com.alibaba.dashscope.audio.tts.SpeechSynthesisUsage; import com.alibaba.dashscope.audio.tts.timestamp.Sentence; @@ -25,7 +23,6 @@ import org.springframework.ai.chat.metadata.EmptyRateLimit; import org.springframework.ai.chat.metadata.RateLimit; import org.springframework.ai.model.MutableResponseMetadata; -import org.springframework.ai.model.ResponseMetadata; import org.springframework.lang.Nullable; import org.springframework.util.Assert; diff --git a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/metadata/audio/DashScopeAudioTranscriptionResponseMetadata.java b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/metadata/audio/DashScopeAudioTranscriptionResponseMetadata.java index d1d9e616..7cdf401a 100644 --- a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/metadata/audio/DashScopeAudioTranscriptionResponseMetadata.java +++ b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/metadata/audio/DashScopeAudioTranscriptionResponseMetadata.java @@ -16,15 +16,12 @@ package com.alibaba.cloud.ai.dashscope.metadata.audio; -import java.util.HashMap; - import com.alibaba.dashscope.audio.asr.transcription.TranscriptionResult; import com.google.gson.JsonObject; import org.springframework.ai.chat.metadata.EmptyRateLimit; import org.springframework.ai.chat.metadata.RateLimit; import org.springframework.ai.model.MutableResponseMetadata; -import org.springframework.ai.model.ResponseMetadata; import org.springframework.lang.Nullable; import org.springframework.util.Assert; diff --git a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/rag/DashScopeCloudStore.java b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/rag/DashScopeCloudStore.java index 3a6952ad..c1bf6e12 100644 --- a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/rag/DashScopeCloudStore.java +++ b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/rag/DashScopeCloudStore.java @@ -37,8 +37,6 @@ */ public class DashScopeCloudStore implements VectorStore { - private static final Logger logger = LoggerFactory.getLogger(DashScopeCloudStore.class); - private final DashScopeStoreOptions options; private final DashScopeApi dashScopeApi; @@ -64,7 +62,7 @@ public void add(List documents) { .filter(e -> e.getId() != null) .map(Document::getId) .collect(Collectors.toList()); - if (documentIdList == null || documentIdList.size() == 0) { + if (documentIdList == null || documentIdList.isEmpty()) { throw new DashScopeException("document's id must not be null"); } dashScopeApi.upsertPipeline(documents, options); @@ -97,8 +95,7 @@ public List similaritySearch(SearchRequest request) { searchOption = new DashScopeDocumentRetrieverOptions(); } searchOption.setRerankTopN(request.getTopK()); - List documentList = dashScopeApi.retriever(pipelineId, request.query, searchOption); - return documentList; + return dashScopeApi.retriever(pipelineId, request.query, searchOption); } } diff --git a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/rag/DashScopeDocumentCloudReader.java b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/rag/DashScopeDocumentCloudReader.java index 5a8e037e..cfaefffa 100644 --- a/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/rag/DashScopeDocumentCloudReader.java +++ b/spring-ai-alibaba-core/src/main/java/com/alibaba/cloud/ai/dashscope/rag/DashScopeDocumentCloudReader.java @@ -65,7 +65,7 @@ public DashScopeDocumentCloudReader(String filePath, DashScopeApi dashScopeApi, @Override public List get() { - String fileMD5 = null; + String fileMD5; FileInputStream fileInputStream; try { fileInputStream = new FileInputStream(file); @@ -73,9 +73,9 @@ public List get() { DashScopeApi.UploadRequest uploadRequest = new DashScopeApi.UploadRequest(readerConfig.getCategoryId(), file.getName(), file.length(), fileMD5); String fileId = dashScopeApi.upload(file, uploadRequest); - // 轮询获取结果 + // Polling for results int tryCount = 0; - while (true && tryCount < MAX_TRY_COUNT) { + while (tryCount < MAX_TRY_COUNT) { ResponseEntity> response = dashScopeApi .queryFileInfo(readerConfig.getCategoryId(), new DashScopeApi.UploadRequest.QueryFileRequest(fileId)); @@ -83,7 +83,7 @@ public List get() { DashScopeApi.QueryFileResponseData queryFileResponseData = response.getBody().data(); String fileStatus = queryFileResponseData.status(); if ("PARSE_SUCCESS".equals(fileStatus)) { - // 下载文件 + // downloadn files String parseResult = dashScopeApi.getFileParseResult(readerConfig.getCategoryId(), new DashScopeApi.UploadRequest.QueryFileRequest(fileId)); return List.of(toDocument(fileId, parseResult)); @@ -95,7 +95,7 @@ else if ("PARSE_FAILED".equals(fileStatus)) { } } tryCount++; - Thread.sleep(30000l); + Thread.sleep(30000L); } return null; } @@ -108,8 +108,7 @@ else if ("PARSE_FAILED".equals(fileStatus)) { private Document toDocument(String fileId, String parseResultText) { Map metaData = new HashMap<>(); metaData.put("parse_fmt_type", "DASHSCOPE_DOCMIND"); - Document document = new Document(fileId, parseResultText, metaData); - return document; + return new Document(fileId, parseResultText, metaData); } } diff --git a/spring-ai-alibaba-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-ai-alibaba-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 5a5a96d4..1a89e69f 100755 --- a/spring-ai-alibaba-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/spring-ai-alibaba-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1 +1 @@ -com.alibaba.cloud.ai.autoconfigure.dashscope.DashScopeAutoConfiguration \ No newline at end of file +com.alibaba.cloud.ai.autoconfigure.dashscope.DashScopeAutoConfiguration diff --git a/spring-ai-alibaba-examples/function-calling/mvnw b/spring-ai-alibaba-examples/function-calling/mvnw old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/helloworld/mvnw b/spring-ai-alibaba-examples/helloworld/mvnw old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/models/mvnw b/spring-ai-alibaba-examples/models/mvnw old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/outputparser/mvnw b/spring-ai-alibaba-examples/outputparser/mvnw old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/outputparser/src/main/java/com/alibaba/cloud/ai/example/outparser/ActorsFilms.java b/spring-ai-alibaba-examples/outputparser/src/main/java/com/alibaba/cloud/ai/example/outparser/ActorsFilms.java old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/outputparser/src/main/java/com/alibaba/cloud/ai/example/outparser/OutputParserController.java b/spring-ai-alibaba-examples/outputparser/src/main/java/com/alibaba/cloud/ai/example/outparser/OutputParserController.java old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/playground-flight-booking/mvnw b/spring-ai-alibaba-examples/playground-flight-booking/mvnw old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/prompt/mvnw b/spring-ai-alibaba-examples/prompt/mvnw old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/prompt/src/main/java/com/alibaba/cloud/ai/example/prompt/PromptTemplateController.java b/spring-ai-alibaba-examples/prompt/src/main/java/com/alibaba/cloud/ai/example/prompt/PromptTemplateController.java old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/prompt/src/main/java/com/alibaba/cloud/ai/example/prompt/roles/Completion.java b/spring-ai-alibaba-examples/prompt/src/main/java/com/alibaba/cloud/ai/example/prompt/roles/Completion.java old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/prompt/src/main/java/com/alibaba/cloud/ai/example/prompt/roles/RoleController.java b/spring-ai-alibaba-examples/prompt/src/main/java/com/alibaba/cloud/ai/example/prompt/roles/RoleController.java old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/prompt/src/main/java/com/alibaba/cloud/ai/example/prompt/stuff/Completion.java b/spring-ai-alibaba-examples/prompt/src/main/java/com/alibaba/cloud/ai/example/prompt/stuff/Completion.java old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/prompt/src/main/java/com/alibaba/cloud/ai/example/prompt/stuff/StuffController.java b/spring-ai-alibaba-examples/prompt/src/main/java/com/alibaba/cloud/ai/example/prompt/stuff/StuffController.java old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/prompt/src/main/resources/data/bikes.json b/spring-ai-alibaba-examples/prompt/src/main/resources/data/bikes.json old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/prompt/src/main/resources/docs/wikipedia-curling.md b/spring-ai-alibaba-examples/prompt/src/main/resources/docs/wikipedia-curling.md old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/prompt/src/main/resources/prompts/joke-prompt.st b/spring-ai-alibaba-examples/prompt/src/main/resources/prompts/joke-prompt.st old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/prompt/src/main/resources/prompts/qa-prompt.st b/spring-ai-alibaba-examples/prompt/src/main/resources/prompts/qa-prompt.st old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/prompt/src/main/resources/prompts/system-message.st b/spring-ai-alibaba-examples/prompt/src/main/resources/prompts/system-message.st old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/prompt/src/main/resources/prompts/system-qa.st b/spring-ai-alibaba-examples/prompt/src/main/resources/prompts/system-qa.st old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/rag/mvnw b/spring-ai-alibaba-examples/rag/mvnw old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/rag/src/main/java/com/alibaba/cloud/ai/example/rag/local/RagController.java b/spring-ai-alibaba-examples/rag/src/main/java/com/alibaba/cloud/ai/example/rag/local/RagController.java old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/rag/src/main/java/com/alibaba/cloud/ai/example/rag/local/RagService.java b/spring-ai-alibaba-examples/rag/src/main/java/com/alibaba/cloud/ai/example/rag/local/RagService.java old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/rag/src/main/java/com/alibaba/cloud/ai/example/rag/local/config/RagConfiguration.java b/spring-ai-alibaba-examples/rag/src/main/java/com/alibaba/cloud/ai/example/rag/local/config/RagConfiguration.java old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/rag/src/main/resources/data/bikes.json b/spring-ai-alibaba-examples/rag/src/main/resources/data/bikes.json old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/rag/src/main/resources/docs/wikipedia-curling.md b/spring-ai-alibaba-examples/rag/src/main/resources/docs/wikipedia-curling.md old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/rag/src/main/resources/prompts/joke-prompt.st b/spring-ai-alibaba-examples/rag/src/main/resources/prompts/joke-prompt.st old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/rag/src/main/resources/prompts/qa-prompt.st b/spring-ai-alibaba-examples/rag/src/main/resources/prompts/qa-prompt.st old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/rag/src/main/resources/prompts/system-message.st b/spring-ai-alibaba-examples/rag/src/main/resources/prompts/system-message.st old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-examples/rag/src/main/resources/prompts/system-qa.st b/spring-ai-alibaba-examples/rag/src/main/resources/prompts/system-qa.st old mode 100755 new mode 100644 diff --git a/spring-ai-alibaba-starter/pom.xml b/spring-ai-alibaba-starter/pom.xml index ad0320ea..1f83acbc 100644 --- a/spring-ai-alibaba-starter/pom.xml +++ b/spring-ai-alibaba-starter/pom.xml @@ -45,4 +45,4 @@ - \ No newline at end of file +