SpringAI之helloworld入门篇(AI这么火,入个门吧)
·
一、创建应用(直接jdk17创建)

二、 开发代码
本文由于使用免费的通义模型,但是SpringAI原生不支持通义模型,所以就需要做适配了,如果不想适配,那么可以选择使用SpringAI Alibaba(做了封装和适配)
pom配置如下(这是核心配置,没有之一):
直接上核心代码,这里的ChatClient是一个高层抽象,底层会调用对应模型(通义)的SDK:
import org.springframework.ai.chat.ChatClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class TongyiApp implements CommandLineRunner {
@Autowired
private ChatClient chatClient;
public static void main(String[] args) {
SpringApplication.run(TongyiApp.class, args);
}
@Override
public void run(String... args) {
String question = "杨汉森是谁?";
String response = chatClient.call(question);
System.out.println("通义回答:" + response);
}
}
这是底层通义SDK的代码逻辑,也是封装和适配逻辑:
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import org.springframework.ai.chat.ChatClient;
import org.springframework.ai.chat.ChatResponse;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Arrays;
import java.util.stream.Collectors;
@Configuration
public class TongyiConfig {
@Value("${spring.ai.dashscope.api-key}")
private String apiKey;
@Bean
public ChatClient chatClient() {
return new ChatClient() {
@Override
public ChatResponse call(Prompt prompt) {
try {
// 使用完整类名
com.alibaba.dashscope.aigc.generation.Generation gen =
new com.alibaba.dashscope.aigc.generation.Generation();
String userContent = prompt.getInstructions().stream()
.map(msg -> msg.getContent())
.collect(Collectors.joining(" "));
Message systemMsg = Message.builder()
.role("system")
.content("You are a helpful assistant.")
.build();
Message userMsg = Message.builder()
.role("user")
.content(userContent)
.build();
GenerationParam param = GenerationParam.builder()
.apiKey(apiKey)
.model("qwen-turbo")
.messages(Arrays.asList(systemMsg, userMsg))
.resultFormat(GenerationParam.ResultFormat.MESSAGE)
.build();
GenerationResult result = gen.call(param);
String content = result.getOutput().getChoices().get(0).getMessage().getContent();
// 使用 Spring AI 的 Generation 类
org.springframework.ai.chat.Generation springGeneration =
new org.springframework.ai.chat.Generation(content);
return new ChatResponse(Arrays.asList(springGeneration));
} catch (Exception e) {
org.springframework.ai.chat.Generation errorGeneration =
new org.springframework.ai.chat.Generation("调用失败: " + e.getMessage());
return new ChatResponse(Arrays.asList(errorGeneration));
}
}
};
}
}
代码都有了,接下来需要配置下api-key就可以直接和大模型对话了
spring.ai.dashscope.api-key=********
spring.ai.dashscope.model=qwen-turbo
三、配置API-KEY
按照指示处配置即可,easy,然后配置到代码配置中,直接跑代码就可运行

四、入门总结

如果你看到这样的信息,或者类似这样的信息,恭喜你入门了!!!
更多推荐



所有评论(0)