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 f8096fa..e20163a 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 45876ce..6c50e40 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 61078b2..05ea956 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 116f0d0..562e231 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 80cf643..4d1f267 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 6afa4dc..719e84d 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 d1d9e61..7cdf401 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 3a6952a..7aeecfa 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 5a8e037..6d81d31 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 5a5a96d..1a89e69 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/chatmodel-example/src/main/java/com/alibaba/cloud/ai/example/model/AudioModelController.java b/spring-ai-alibaba-examples/chatmodel-example/src/main/java/com/alibaba/cloud/ai/example/model/AudioModelController.java
index a8d77d9..7085cab 100644
--- a/spring-ai-alibaba-examples/chatmodel-example/src/main/java/com/alibaba/cloud/ai/example/model/AudioModelController.java
+++ b/spring-ai-alibaba-examples/chatmodel-example/src/main/java/com/alibaba/cloud/ai/example/model/AudioModelController.java
@@ -17,4 +17,5 @@
package com.alibaba.cloud.ai.example.model;
public class AudioModelController {
+
}
diff --git a/spring-ai-alibaba-examples/chatmodel-example/src/main/java/com/alibaba/cloud/ai/example/model/ChatModelController.java b/spring-ai-alibaba-examples/chatmodel-example/src/main/java/com/alibaba/cloud/ai/example/model/ChatModelController.java
index 8d15e3b..2bd16e3 100644
--- a/spring-ai-alibaba-examples/chatmodel-example/src/main/java/com/alibaba/cloud/ai/example/model/ChatModelController.java
+++ b/spring-ai-alibaba-examples/chatmodel-example/src/main/java/com/alibaba/cloud/ai/example/model/ChatModelController.java
@@ -37,4 +37,5 @@ public String chat(String input) {
ChatResponse response = chatModel.call(new Prompt(input));
return response.getResult().getOutput().getContent();
}
+
}
diff --git a/spring-ai-alibaba-examples/chatmodel-example/src/main/java/com/alibaba/cloud/ai/example/model/ImageModelController.java b/spring-ai-alibaba-examples/chatmodel-example/src/main/java/com/alibaba/cloud/ai/example/model/ImageModelController.java
index b07e254..0cd6190 100644
--- a/spring-ai-alibaba-examples/chatmodel-example/src/main/java/com/alibaba/cloud/ai/example/model/ImageModelController.java
+++ b/spring-ai-alibaba-examples/chatmodel-example/src/main/java/com/alibaba/cloud/ai/example/model/ImageModelController.java
@@ -26,6 +26,7 @@
@RestController
public class ImageModelController {
+
private final ImageModel imageModel;
ImageModelController(ImageModel imageModel) {
@@ -34,9 +35,7 @@ public class ImageModelController {
@RequestMapping("/image")
public String image(String input) {
- ImageOptions options = ImageOptionsBuilder.builder()
- .withModel("wanx-v1")
- .build();
+ ImageOptions options = ImageOptionsBuilder.builder().withModel("wanx-v1").build();
ImagePrompt imagePrompt = new ImagePrompt(input, options);
@@ -46,4 +45,5 @@ public String image(String input) {
return "redirect:" + imageUrl;
}
+
}
diff --git a/spring-ai-alibaba-examples/function-calling-example/src/main/java/com/alibaba/cloud/ai/example/functioncalling/FunctionCallingController.java b/spring-ai-alibaba-examples/function-calling-example/src/main/java/com/alibaba/cloud/ai/example/functioncalling/FunctionCallingController.java
index e25b016..9eb7452 100644
--- a/spring-ai-alibaba-examples/function-calling-example/src/main/java/com/alibaba/cloud/ai/example/functioncalling/FunctionCallingController.java
+++ b/spring-ai-alibaba-examples/function-calling-example/src/main/java/com/alibaba/cloud/ai/example/functioncalling/FunctionCallingController.java
@@ -36,18 +36,19 @@ public FunctionCallingController(ChatClient.Builder chatClientBuilder) {
@GetMapping("/weather-service")
public String weatherService(String subject) {
return chatClient.prompt()
- .function("getWeather", "根据城市查询天气", new MockWeatherService())
- .user(subject)
- .call()
- .content();
+ .function("getWeather", "根据城市查询天气", new MockWeatherService())
+ .user(subject)
+ .call()
+ .content();
}
@GetMapping("/order-detail")
public String orderDetail() {
return chatClient.prompt()
- .functions("getOrderFunction")
- .user("帮我查询一下订单, 用户编号为1001, 订单编号为2001")
- .call()
- .content();
+ .functions("getOrderFunction")
+ .user("帮我查询一下订单, 用户编号为1001, 订单编号为2001")
+ .call()
+ .content();
}
+
}
diff --git a/spring-ai-alibaba-examples/helloworld-example/src/main/java/com/alibaba/cloud/ai/example/helloworld/ChatController.java b/spring-ai-alibaba-examples/helloworld-example/src/main/java/com/alibaba/cloud/ai/example/helloworld/ChatController.java
index b66ff7c..1474b00 100644
--- a/spring-ai-alibaba-examples/helloworld-example/src/main/java/com/alibaba/cloud/ai/example/helloworld/ChatController.java
+++ b/spring-ai-alibaba-examples/helloworld-example/src/main/java/com/alibaba/cloud/ai/example/helloworld/ChatController.java
@@ -31,9 +31,7 @@ public ChatController(ChatClient.Builder builder) {
@GetMapping("/chat")
public String chat(String input) {
- return this.chatClient.prompt()
- .user(input)
- .call()
- .content();
+ return this.chatClient.prompt().user(input).call().content();
}
+
}
diff --git a/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/Application.java b/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/Application.java
index 43573e9..f67d911 100644
--- a/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/Application.java
+++ b/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/Application.java
@@ -32,15 +32,12 @@ public static void main(String[] args) {
// In the real world, ingesting documents would often happen separately, on a CI
// server or similar.
@Bean
- CommandLineRunner ingestTermOfServiceToVectorStore(
- EmbeddingModel embeddingModel, VectorStore vectorStore,
+ CommandLineRunner ingestTermOfServiceToVectorStore(EmbeddingModel embeddingModel, VectorStore vectorStore,
@Value("classpath:rag/terms-of-service.txt") Resource termsOfServiceDocs) {
return args -> {
// Ingest the document into the vector store
- vectorStore.write(
- new TokenTextSplitter().transform(
- new TextReader(termsOfServiceDocs).read()));
+ vectorStore.write(new TokenTextSplitter().transform(new TextReader(termsOfServiceDocs).read()));
vectorStore.similaritySearch("Cancelling Bookings").forEach(doc -> {
logger.info("Similar Document: {}", doc.getContent());
@@ -57,4 +54,5 @@ public VectorStore vectorStore(EmbeddingModel embeddingModel) {
public ChatMemory chatMemory() {
return new InMemoryChatMemory();
}
+
}
diff --git a/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/client/AssistantService.java b/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/client/AssistantService.java
index 9a75f25..2aea461 100644
--- a/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/client/AssistantService.java
+++ b/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/client/AssistantService.java
@@ -10,13 +10,14 @@
@AnonymousAllowed
public class AssistantService {
- private final CustomerSupportAssistant agent;
+ private final CustomerSupportAssistant agent;
- public AssistantService(CustomerSupportAssistant agent) {
- this.agent = agent;
- }
+ public AssistantService(CustomerSupportAssistant agent) {
+ this.agent = agent;
+ }
+
+ public Flux chat(String chatId, String userMessage) {
+ return agent.chat(chatId, userMessage);
+ }
- public Flux chat(String chatId, String userMessage) {
- return agent.chat(chatId, userMessage);
- }
}
diff --git a/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/client/BookingService.java b/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/client/BookingService.java
index d07652d..7d9d431 100644
--- a/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/client/BookingService.java
+++ b/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/client/BookingService.java
@@ -11,13 +11,15 @@
@BrowserCallable
@AnonymousAllowed
public class BookingService {
- private final FlightBookingService flightBookingService;
- public BookingService(FlightBookingService flightBookingService) {
- this.flightBookingService = flightBookingService;
- }
+ private final FlightBookingService flightBookingService;
+
+ public BookingService(FlightBookingService flightBookingService) {
+ this.flightBookingService = flightBookingService;
+ }
+
+ public List getBookings() {
+ return flightBookingService.getBookings();
+ }
- public List getBookings() {
- return flightBookingService.getBookings();
- }
}
diff --git a/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/data/Booking.java b/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/data/Booking.java
index a9c1d48..be2f452 100644
--- a/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/data/Booking.java
+++ b/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/data/Booking.java
@@ -4,87 +4,95 @@
public class Booking {
- private String bookingNumber;
- private LocalDate date;
- private LocalDate bookingTo;
- private Customer customer;
- private String from;
- private String to;
- private BookingStatus bookingStatus;
- private BookingClass bookingClass;
-
- public Booking(String bookingNumber, LocalDate date, Customer customer, BookingStatus bookingStatus, String from, String to, BookingClass bookingClass) {
- this.bookingNumber = bookingNumber;
- this.date = date;
- this.customer = customer;
- this.bookingStatus = bookingStatus;
- this.from = from;
- this.to = to;
- this.bookingClass = bookingClass;
- }
-
-
- public String getBookingNumber() {
- return bookingNumber;
- }
-
- public void setBookingNumber(String bookingNumber) {
- this.bookingNumber = bookingNumber;
- }
-
- public LocalDate getDate() {
- return date;
- }
-
- public void setDate(LocalDate date) {
- this.date = date;
- }
-
- public LocalDate getBookingTo() {
- return bookingTo;
- }
-
- public void setBookingTo(LocalDate bookingTo) {
- this.bookingTo = bookingTo;
- }
-
- public Customer getCustomer() {
- return customer;
- }
-
- public void setCustomer(Customer customer) {
- this.customer = customer;
- }
-
- public BookingStatus getBookingStatus() {
- return bookingStatus;
- }
-
- public void setBookingStatus(BookingStatus bookingStatus) {
- this.bookingStatus = bookingStatus;
- }
-
- public String getFrom() {
- return from;
- }
-
- public void setFrom(String from) {
- this.from = from;
- }
-
- public String getTo() {
- return to;
- }
-
- public void setTo(String to) {
- this.to = to;
- }
-
- public BookingClass getBookingClass() {
- return bookingClass;
- }
-
- public void setBookingClass(BookingClass bookingClass) {
- this.bookingClass = bookingClass;
- }
+ private String bookingNumber;
+
+ private LocalDate date;
+
+ private LocalDate bookingTo;
+
+ private Customer customer;
+
+ private String from;
+
+ private String to;
+
+ private BookingStatus bookingStatus;
+
+ private BookingClass bookingClass;
+
+ public Booking(String bookingNumber, LocalDate date, Customer customer, BookingStatus bookingStatus, String from,
+ String to, BookingClass bookingClass) {
+ this.bookingNumber = bookingNumber;
+ this.date = date;
+ this.customer = customer;
+ this.bookingStatus = bookingStatus;
+ this.from = from;
+ this.to = to;
+ this.bookingClass = bookingClass;
+ }
+
+ public String getBookingNumber() {
+ return bookingNumber;
+ }
+
+ public void setBookingNumber(String bookingNumber) {
+ this.bookingNumber = bookingNumber;
+ }
+
+ public LocalDate getDate() {
+ return date;
+ }
+
+ public void setDate(LocalDate date) {
+ this.date = date;
+ }
+
+ public LocalDate getBookingTo() {
+ return bookingTo;
+ }
+
+ public void setBookingTo(LocalDate bookingTo) {
+ this.bookingTo = bookingTo;
+ }
+
+ public Customer getCustomer() {
+ return customer;
+ }
+
+ public void setCustomer(Customer customer) {
+ this.customer = customer;
+ }
+
+ public BookingStatus getBookingStatus() {
+ return bookingStatus;
+ }
+
+ public void setBookingStatus(BookingStatus bookingStatus) {
+ this.bookingStatus = bookingStatus;
+ }
+
+ public String getFrom() {
+ return from;
+ }
+
+ public void setFrom(String from) {
+ this.from = from;
+ }
+
+ public String getTo() {
+ return to;
+ }
+
+ public void setTo(String to) {
+ this.to = to;
+ }
+
+ public BookingClass getBookingClass() {
+ return bookingClass;
+ }
+
+ public void setBookingClass(BookingClass bookingClass) {
+ this.bookingClass = bookingClass;
+ }
+
}
\ No newline at end of file
diff --git a/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/data/BookingClass.java b/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/data/BookingClass.java
index 4d29110..e50c394 100644
--- a/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/data/BookingClass.java
+++ b/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/data/BookingClass.java
@@ -1,5 +1,7 @@
package ai.spring.demo.ai.playground.data;
public enum BookingClass {
- ECONOMY, PREMIUM_ECONOMY, BUSINESS
+
+ ECONOMY, PREMIUM_ECONOMY, BUSINESS
+
}
diff --git a/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/data/BookingData.java b/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/data/BookingData.java
index 588c09a..8da6775 100644
--- a/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/data/BookingData.java
+++ b/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/data/BookingData.java
@@ -5,23 +5,24 @@
public class BookingData {
- private List customers = new ArrayList<>();
- private List bookings = new ArrayList<>();
+ private List customers = new ArrayList<>();
+ private List bookings = new ArrayList<>();
- public List getCustomers() {
- return customers;
- }
+ public List getCustomers() {
+ return customers;
+ }
- public void setCustomers(List customers) {
- this.customers = customers;
- }
+ public void setCustomers(List customers) {
+ this.customers = customers;
+ }
- public List getBookings() {
- return bookings;
- }
+ public List getBookings() {
+ return bookings;
+ }
+
+ public void setBookings(List bookings) {
+ this.bookings = bookings;
+ }
- public void setBookings(List bookings) {
- this.bookings = bookings;
- }
}
diff --git a/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/data/BookingStatus.java b/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/data/BookingStatus.java
index 19346a2..8f88c66 100644
--- a/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/data/BookingStatus.java
+++ b/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/data/BookingStatus.java
@@ -1,5 +1,7 @@
package ai.spring.demo.ai.playground.data;
public enum BookingStatus {
- CONFIRMED, COMPLETED, CANCELLED
+
+ CONFIRMED, COMPLETED, CANCELLED
+
}
diff --git a/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/data/Customer.java b/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/data/Customer.java
index 1643c96..3acaf48 100644
--- a/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/data/Customer.java
+++ b/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/data/Customer.java
@@ -5,30 +5,31 @@
public class Customer {
- private String name;
+ private String name;
- private List bookings = new ArrayList<>();
+ private List bookings = new ArrayList<>();
- public Customer() {
- }
+ public Customer() {
+ }
- public Customer(String name) {
- this.name = name;
- }
+ public Customer(String name) {
+ this.name = name;
+ }
- public String getName() {
- return name;
- }
+ public String getName() {
+ return name;
+ }
- public void setName(String name) {
- this.name = name;
- }
+ public void setName(String name) {
+ this.name = name;
+ }
- public List getBookings() {
- return bookings;
- }
+ public List getBookings() {
+ return bookings;
+ }
+
+ public void setBookings(List bookings) {
+ this.bookings = bookings;
+ }
- public void setBookings(List bookings) {
- this.bookings = bookings;
- }
}
\ No newline at end of file
diff --git a/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/services/BookingTools.java b/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/services/BookingTools.java
index be2b249..bd74f44 100644
--- a/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/services/BookingTools.java
+++ b/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/services/BookingTools.java
@@ -18,62 +18,56 @@
@Configuration
public class BookingTools {
- private static final Logger logger = LoggerFactory.getLogger(BookingTools.class);
+ private static final Logger logger = LoggerFactory.getLogger(BookingTools.class);
- @Autowired
- private FlightBookingService flightBookingService;
+ @Autowired
+ private FlightBookingService flightBookingService;
- public record BookingDetailsRequest(String bookingNumber, String name) {
- }
+ public record BookingDetailsRequest(String bookingNumber, String name) {
+ }
- public record ChangeBookingDatesRequest(String bookingNumber, String name, String date,
- String from, String to) {
- }
+ public record ChangeBookingDatesRequest(String bookingNumber, String name, String date, String from, String to) {
+ }
- public record CancelBookingRequest(String bookingNumber, String name) {
- }
+ public record CancelBookingRequest(String bookingNumber, String name) {
+ }
- @JsonInclude(Include.NON_NULL)
- public record BookingDetails(String bookingNumber,
- String name,
- LocalDate date,
- BookingStatus bookingStatus,
- String from,
- String to,
- String bookingClass) {
- }
+ @JsonInclude(Include.NON_NULL)
+ public record BookingDetails(String bookingNumber, String name, LocalDate date, BookingStatus bookingStatus,
+ String from, String to, String bookingClass) {
+ }
- @Bean
- @Description("获取机票预定详细信息")
- public Function getBookingDetails() {
- return request -> {
- try {
- return flightBookingService.getBookingDetails(request.bookingNumber(), request.name());
- }
- catch (Exception e) {
- logger.warn("Booking details: {}", NestedExceptionUtils.getMostSpecificCause(e).getMessage());
- return new BookingDetails(request.bookingNumber(), request.name(),
- null, null, null, null, null);
- }
- };
- }
+ @Bean
+ @Description("获取机票预定详细信息")
+ public Function getBookingDetails() {
+ return request -> {
+ try {
+ return flightBookingService.getBookingDetails(request.bookingNumber(), request.name());
+ }
+ catch (Exception e) {
+ logger.warn("Booking details: {}", NestedExceptionUtils.getMostSpecificCause(e).getMessage());
+ return new BookingDetails(request.bookingNumber(), request.name(), null, null, null, null, null);
+ }
+ };
+ }
- @Bean
- @Description("修改机票预定日期")
- public Function changeBooking() {
- return request -> {
- flightBookingService.changeBooking(request.bookingNumber(), request.name(),
- request.date(), request.from(), request.to());
- return "";
- };
- }
+ @Bean
+ @Description("修改机票预定日期")
+ public Function changeBooking() {
+ return request -> {
+ flightBookingService.changeBooking(request.bookingNumber(), request.name(), request.date(), request.from(),
+ request.to());
+ return "";
+ };
+ }
+
+ @Bean
+ @Description("取消机票预定")
+ public Function cancelBooking() {
+ return request -> {
+ flightBookingService.cancelBooking(request.bookingNumber(), request.name());
+ return "";
+ };
+ }
- @Bean
- @Description("取消机票预定")
- public Function cancelBooking() {
- return request -> {
- flightBookingService.cancelBooking(request.bookingNumber(), request.name());
- return "";
- };
- }
}
diff --git a/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/services/CustomerSupportAssistant.java b/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/services/CustomerSupportAssistant.java
index 52894df..94583c4 100644
--- a/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/services/CustomerSupportAssistant.java
+++ b/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/services/CustomerSupportAssistant.java
@@ -75,11 +75,11 @@ public CustomerSupportAssistant(ChatClient.Builder modelBuilder, VectorStore vec
public Flux chat(String chatId, String userMessageContent) {
return this.chatClient.prompt()
- .system(s -> s.param("current_date", LocalDate.now().toString()))
- .user(userMessageContent)
- .advisors(a -> a
- .param(CHAT_MEMORY_CONVERSATION_ID_KEY, chatId)
- .param(CHAT_MEMORY_RETRIEVE_SIZE_KEY, 100))
- .stream().content();
+ .system(s -> s.param("current_date", LocalDate.now().toString()))
+ .user(userMessageContent)
+ .advisors(a -> a.param(CHAT_MEMORY_CONVERSATION_ID_KEY, chatId).param(CHAT_MEMORY_RETRIEVE_SIZE_KEY, 100))
+ .stream()
+ .content();
}
+
}
\ No newline at end of file
diff --git a/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/services/FlightBookingService.java b/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/services/FlightBookingService.java
index a4f0553..bd00205 100644
--- a/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/services/FlightBookingService.java
+++ b/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/services/FlightBookingService.java
@@ -13,88 +13,85 @@
@Service
public class FlightBookingService {
- private final BookingData db;
-
- public FlightBookingService() {
- db = new BookingData();
-
- initDemoData();
- }
-
- private void initDemoData() {
- List names = List.of("云小宝", "李千问", "张百炼", "王通义", "刘魔搭");
- List airportCodes = List.of("北京", "上海", "广州", "深圳", "杭州", "南京", "青岛", "成都", "武汉", "西安", "重庆", "大连", "天津");
- Random random = new Random();
-
- var customers = new ArrayList();
- var bookings = new ArrayList();
-
- for (int i = 0; i < 5; i++) {
- String name = names.get(i);
- String from = airportCodes.get(random.nextInt(airportCodes.size()));
- String to = airportCodes.get(random.nextInt(airportCodes.size()));
- BookingClass bookingClass = BookingClass.values()[random.nextInt(BookingClass.values().length)];
- Customer customer = new Customer();
- customer.setName(name);
-
- LocalDate date = LocalDate.now().plusDays(2*(i+1));
-
- Booking booking = new Booking("10" + (i + 1), date, customer, BookingStatus.CONFIRMED, from, to, bookingClass);
- customer.getBookings().add(booking);
-
- customers.add(customer);
- bookings.add(booking);
- }
-
- // Reset the database on each start
- db.setCustomers(customers);
- db.setBookings(bookings);
- }
-
- public List getBookings() {
- return db.getBookings().stream().map(this::toBookingDetails).toList();
- }
-
- private Booking findBooking(String bookingNumber, String name) {
- return db.getBookings().stream()
- .filter(b -> b.getBookingNumber().equalsIgnoreCase(bookingNumber))
- .filter(b -> b.getCustomer().getName().equalsIgnoreCase(name))
- .findFirst()
- .orElseThrow(() -> new IllegalArgumentException("Booking not found"));
- }
-
- public BookingDetails getBookingDetails(String bookingNumber, String name) {
- var booking = findBooking(bookingNumber, name);
- return toBookingDetails(booking);
- }
-
- public void changeBooking(String bookingNumber, String name, String newDate, String from, String to) {
- var booking = findBooking(bookingNumber, name);
- if(booking.getDate().isBefore(LocalDate.now().plusDays(1))){
- throw new IllegalArgumentException("Booking cannot be changed within 24 hours of the start date.");
- }
- booking.setDate(LocalDate.parse(newDate));
- booking.setFrom(from);
- booking.setTo(to);
- }
-
- public void cancelBooking(String bookingNumber, String name) {
- var booking = findBooking(bookingNumber, name);
- if (booking.getDate().isBefore(LocalDate.now().plusDays(2))) {
- throw new IllegalArgumentException("Booking cannot be cancelled within 48 hours of the start date.");
- }
- booking.setBookingStatus(BookingStatus.CANCELLED);
- }
-
- private BookingDetails toBookingDetails(Booking booking){
- return new BookingDetails(
- booking.getBookingNumber(),
- booking.getCustomer().getName(),
- booking.getDate(),
- booking.getBookingStatus(),
- booking.getFrom(),
- booking.getTo(),
- booking.getBookingClass().toString()
- );
- }
+ private final BookingData db;
+
+ public FlightBookingService() {
+ db = new BookingData();
+
+ initDemoData();
+ }
+
+ private void initDemoData() {
+ List names = List.of("云小宝", "李千问", "张百炼", "王通义", "刘魔搭");
+ List airportCodes = List.of("北京", "上海", "广州", "深圳", "杭州", "南京", "青岛", "成都", "武汉", "西安", "重庆", "大连",
+ "天津");
+ Random random = new Random();
+
+ var customers = new ArrayList();
+ var bookings = new ArrayList();
+
+ for (int i = 0; i < 5; i++) {
+ String name = names.get(i);
+ String from = airportCodes.get(random.nextInt(airportCodes.size()));
+ String to = airportCodes.get(random.nextInt(airportCodes.size()));
+ BookingClass bookingClass = BookingClass.values()[random.nextInt(BookingClass.values().length)];
+ Customer customer = new Customer();
+ customer.setName(name);
+
+ LocalDate date = LocalDate.now().plusDays(2 * (i + 1));
+
+ Booking booking = new Booking("10" + (i + 1), date, customer, BookingStatus.CONFIRMED, from, to,
+ bookingClass);
+ customer.getBookings().add(booking);
+
+ customers.add(customer);
+ bookings.add(booking);
+ }
+
+ // Reset the database on each start
+ db.setCustomers(customers);
+ db.setBookings(bookings);
+ }
+
+ public List getBookings() {
+ return db.getBookings().stream().map(this::toBookingDetails).toList();
+ }
+
+ private Booking findBooking(String bookingNumber, String name) {
+ return db.getBookings()
+ .stream()
+ .filter(b -> b.getBookingNumber().equalsIgnoreCase(bookingNumber))
+ .filter(b -> b.getCustomer().getName().equalsIgnoreCase(name))
+ .findFirst()
+ .orElseThrow(() -> new IllegalArgumentException("Booking not found"));
+ }
+
+ public BookingDetails getBookingDetails(String bookingNumber, String name) {
+ var booking = findBooking(bookingNumber, name);
+ return toBookingDetails(booking);
+ }
+
+ public void changeBooking(String bookingNumber, String name, String newDate, String from, String to) {
+ var booking = findBooking(bookingNumber, name);
+ if (booking.getDate().isBefore(LocalDate.now().plusDays(1))) {
+ throw new IllegalArgumentException("Booking cannot be changed within 24 hours of the start date.");
+ }
+ booking.setDate(LocalDate.parse(newDate));
+ booking.setFrom(from);
+ booking.setTo(to);
+ }
+
+ public void cancelBooking(String bookingNumber, String name) {
+ var booking = findBooking(bookingNumber, name);
+ if (booking.getDate().isBefore(LocalDate.now().plusDays(2))) {
+ throw new IllegalArgumentException("Booking cannot be cancelled within 48 hours of the start date.");
+ }
+ booking.setBookingStatus(BookingStatus.CANCELLED);
+ }
+
+ private BookingDetails toBookingDetails(Booking booking) {
+ return new BookingDetails(booking.getBookingNumber(), booking.getCustomer().getName(), booking.getDate(),
+ booking.getBookingStatus(), booking.getFrom(), booking.getTo(), booking.getBookingClass().toString());
+ }
+
}
diff --git a/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/services/LoggingAdvisor.java b/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/services/LoggingAdvisor.java
index 9591eb4..8b5152c 100644
--- a/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/services/LoggingAdvisor.java
+++ b/spring-ai-alibaba-examples/playground-flight-booking/src/main/java/ai/spring/demo/ai/playground/services/LoggingAdvisor.java
@@ -12,4 +12,5 @@ public AdvisedRequest adviseRequest(AdvisedRequest request, Map
System.out.println("Request: " + request);
return request;
}
+
}
\ No newline at end of file
diff --git a/spring-ai-alibaba-examples/prompt-example/src/main/java/com/alibaba/cloud/ai/example/prompt/stuff/StuffController.java b/spring-ai-alibaba-examples/prompt-example/src/main/java/com/alibaba/cloud/ai/example/prompt/stuff/StuffController.java
index 21107a6..7dc20b1 100644
--- a/spring-ai-alibaba-examples/prompt-example/src/main/java/com/alibaba/cloud/ai/example/prompt/stuff/StuffController.java
+++ b/spring-ai-alibaba-examples/prompt-example/src/main/java/com/alibaba/cloud/ai/example/prompt/stuff/StuffController.java
@@ -28,6 +28,7 @@ public class StuffController {
public StuffController(ChatClient.Builder builder) {
this.chatClient = builder.build();
}
+
@GetMapping("/ai/stuff")
public Completion completion(@RequestParam(value = "message",
defaultValue = "Which athletes won the mixed doubles gold medal in curling at the 2022 Winter Olympics?'") String message,
@@ -37,7 +38,8 @@ public Completion completion(@RequestParam(value = "message",
map.put("question", message);
if (stuffit) {
map.put("context", docsToStuffResource);
- } else {
+ }
+ else {
map.put("context", "");
}
Prompt prompt = promptTemplate.create(map);
diff --git a/spring-ai-alibaba-examples/rag-example/src/main/java/org/springframework/ai/reader/JsonReader.java b/spring-ai-alibaba-examples/rag-example/src/main/java/org/springframework/ai/reader/JsonReader.java
index 4fde76a..0fa857f 100644
--- a/spring-ai-alibaba-examples/rag-example/src/main/java/org/springframework/ai/reader/JsonReader.java
+++ b/spring-ai-alibaba-examples/rag-example/src/main/java/org/springframework/ai/reader/JsonReader.java
@@ -77,8 +77,8 @@ public List get() {
if (rootNode.isArray()) {
return StreamSupport.stream(rootNode.spliterator(), true)
- .map(jsonNode -> parseJsonNode(jsonNode, objectMapper))
- .toList();
+ .map(jsonNode -> parseJsonNode(jsonNode, objectMapper))
+ .toList();
}
else {
return Collections.singletonList(parseJsonNode(rootNode, objectMapper));
diff --git a/spring-ai-alibaba-starter/pom.xml b/spring-ai-alibaba-starter/pom.xml
index ad0320e..1f83acb 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
+