SpringAI Alibaba 集成与简单使用
一、基础环境配置
注册阿里百炼平台
前往 https://bailian.console.aliyun.com/?tab=model#/model-market?provider=aliyun
新建API-KEY
二、SpringBoot 集成
1、pom文件
<dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-bom</artifactId><version>1.0.0.2</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-starter-dashscope</artifactId></dependency></dependencies>
2、简单聊天机器人
private final ChatClient chatClient;public HelloworldController(ChatClient.Builder builder) {this.chatClient = builder.build();}
直接返回结果:
@GetMapping(value = "/chat")public CommonResult<String> chat(@RequestParam(value = "input") String input) {String content = this.chatClient.prompt().user(input).call().content();return CommonResult.successData(content);}
流式返回结果:
@GetMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)public ResponseEntity<Flux<String>> stream(String input) {Flux<String> stream = this.chatClient.prompt().user(input).stream().content();return ResponseEntity.ok().contentType(MediaType.parseMediaType("text/event-stream;charset=UTF-8")).body(stream);}
返回实体类型:
@GetMapping("/address")public CompanyAddress movies(@RequestParam(value = "input") String input) {return this.chatClient.prompt().user(input).call().entity(CompanyAddress.class);}@Data
public class CompanyAddress implements Serializable {@Schema(description = "名称")private String name;@Schema(description = "电影")private String films;@Schema(description = "公司名称")private String company;@Schema(description = "地址")private String address;@Schema(description = "日期")private String[] dates;}
设定消息角色:
public HelloworldController(ChatClient.Builder builder) {this.chatClient = builder.defaultSystem("你是全宇宙最好的智能AI平台,用周星驰的语气回答问题").build();}
设定消息角色时指定动态参数:
public HelloworldController(ChatClient.Builder builder) {this.chatClient = builder.defaultSystem("你是一个智能AI平台,用{person}的语气回答问题").build();}@GetMapping(value = "/chatPerson")public CommonResult<String> chatPerson(@RequestParam(value = "input") String input,String person) {String content = this.chatClient.prompt().system(sp->sp.param("person",person)).user(input).call().content();return CommonResult.successData(content);}