概要
我们可以让ai回答我们的一些固定的答案,这样ai就可以完成一些接口调用,我这里不展示接口调用,比较废钱,比较我还是一个学生哭死
整体架构流程
以下链接都是双向,ai回答的问题会从我们的设置内容中拿到匹配的,加上大模型进行回答

技术名词解释
我这里使用的是
model: Qwen/QwQ-32B模型
实现过程如下:
第一步:
去阿里云官网找百炼大模型,第一次的话要申请api-key,里面有教程我就不啰嗦了
第二步:
在spring项目中引入这个依赖,我使用的是Maven:

版本是:<ai.albaba.version>1.0.0-M5.1</ai.albaba.version>
第三步:
编写配置类:
@Bean
public SimpleVectorStore vectorStore(@Qualifier("dashscopeEmbeddingModel") EmbeddingModel embeddingModel)
{
return SimpleVectorStore.builder(embeddingModel)
.build();
}
上面代码是向量存储的一个实现类,大家是不是好奇为什么用ai弄什么向量存储,原因就是ai是机器,他不能识别,只能把一句话切成一个个小的粒度,然后根据神经网络的一些算法去模拟人的思考
@Bean
public CommandLineRunner commandLineRunner(SimpleVectorStore vectorStoreBuilder ,@Value("classpath:xiaoguang.txt") Resource resourceReader) {
return args -> {
vectorStoreBuilder
.add(new TokenTextSplitter().transform(new TextReader(resourceReader).read()));
};
}
这一个是将我们的要求,从文本中存入向量存储,从而给嵌入式模型
@Bean
public ChatClient ChatClient(ChatClient.Builder chatClient, SimpleVectorStore SimpleVectorStore,ChatMemory chatMemory) {
return chatClient
.defaultSystem(
"""
你非常会追女孩,是一个情场高手,
当问你如何追女孩,你会从,饮食,娱乐
,游戏,聊天方式进行分析,而且最后会说
今天是 {data}.如果开头说了,就不说了,
游戏你会推荐玩王者荣耀
"""
)
.defaultAdvisors(new QuestionAnswerAdvisor(SimpleVectorStore,SearchRequest.builder().build())
// new PromptChatMemoryAdvisor(chatMemory)
)
.build();
}
这个就是构建聊天客户端,就是把我们的向量模型,跟聊天模型结合起来
@PostMapping("/chat")
public Flux<String> chat(@RequestBody promptEntity prompt) {
return chatClient
.prompt()
.user(prompt.getPrompt())
.system(s->s.param("data", LocalDate.now()))
.stream()
.content();
}
这个是控制器

这个是我文本中存的任务
结果展示
