Browse Source

基础调用

master
周开红 8 months ago
parent
commit
7b69e544ca
  1. 8
      pom.xml
  2. 2
      src/main/java/com/xs/ai/SpringAiDemoApplication.java
  3. 8
      src/main/java/com/xs/ai/controller/OpenAiController.java
  4. 9
      src/main/java/com/xs/ai/services/CustomerSupportAssistant.java
  5. 5
      src/main/resources/application.properties
  6. 2
      src/main/resources/rag/terms-of-service.txt

8
pom.xml

@ -27,12 +27,12 @@
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--
通义
通义-->
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-starter</artifactId>
<version>1.0.0-M3.3</version>
</dependency>-->
</dependency>
<!--
openAI
@ -49,12 +49,12 @@
</dependency>-->
<!--ollama-->
<!--ollama
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
</dependency>
</dependency>  -->
<dependency>
<groupId>org.springframework.boot</groupId>

2
src/main/java/com/xs/ai/SpringAiDemoApplication.java

@ -29,7 +29,7 @@ public class SpringAiDemoApplication {
// 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(VectorStore vectorStore,
@Value("classpath:rag/terms-of-service.txt") Resource termsOfServiceDocs) {
return args -> {

8
src/main/java/com/xs/ai/controller/OpenAiController.java

@ -46,14 +46,17 @@ public class OpenAiController {
""")
.defaultAdvisors(
new PromptChatMemoryAdvisor(chatMemory),
new QuestionAnswerAdvisor(vectorStore, SearchRequest.query("预定航班")), // RAG
//new QuestionAnswerAdvisor(vectorStore, SearchRequest.query("预定航班")), // RAG
//每一次对话拦截后搜索附加上后再给大模型
//new QuestionAnswerAdvisor(vectorStore, SearchRequest.defaults()), // RAG
new LoggingAdvisor())
.defaultFunctions("getBookingDetails", "changeBooking", "cancelBooking") // FUNCTION CALLING
.build();
}
@Autowired
VectorStore vectorStore;
@CrossOrigin
@GetMapping(value = "/ai/generateStreamAsString", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
@ -62,6 +65,7 @@ public class OpenAiController {
//return chatClient.stream(prompt);
Flux<String> content = chatClient.prompt()
.system(s -> s.param("current_date", LocalDate.now().toString()))
.advisors(new QuestionAnswerAdvisor(vectorStore, SearchRequest.query(message)))
//.advisors(a -> a.param(CHAT_MEMORY_CONVERSATION_ID_KEY, chatId).param(CHAT_MEMORY_RETRIEVE_SIZE_KEY, 100))
.advisors(a -> a.param(CHAT_MEMORY_RETRIEVE_SIZE_KEY, 100))
.user(message)

9
src/main/java/com/xs/ai/services/CustomerSupportAssistant.java

@ -12,7 +12,8 @@
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
*//*
package com.xs.ai.services;
@ -30,9 +31,11 @@ import java.time.LocalDate;
import static org.springframework.ai.chat.client.advisor.AbstractChatMemoryAdvisor.CHAT_MEMORY_CONVERSATION_ID_KEY;
import static org.springframework.ai.chat.client.advisor.AbstractChatMemoryAdvisor.CHAT_MEMORY_RETRIEVE_SIZE_KEY;
*/
/**
* * @author Christian Tzolov
*/
*//*
@Service
public class CustomerSupportAssistant {
@ -81,4 +84,4 @@ public class CustomerSupportAssistant {
.content();
}
}
}*/

5
src/main/resources/application.properties

@ -1,4 +1,5 @@
spring.ai.dashscope.api-key= ${ALI_AI_KEY}
spring.ai.dashscope.chat.options.model=deepseek-v3
spring.ai.dashscope.api-key=sk-6f67708d074d4d3fbdea96071209b60f
#spring.ai.dashscope.chat.options.model=deepseek-r1
spring.ai.dashscope.chat.options.model=qwen-max

2
src/main/resources/rag/terms-of-service.txt

@ -11,3 +11,5 @@
- 最晚在航班起飞前 48 小时取消。
- 取消费用:经济舱 75 美元,豪华经济舱 50 美元,商务舱 25 美元。
- 退款将在 7 个工作日内处理。
4. 查询航班
- 航班最早是7点,最晚是22点,请注意出行时间
Loading…
Cancel
Save