要在Spring Boot项目中整合文心一言(Baidu's AI Platform),你需要按照以下步骤操作:
- 在Spring Boot项目中添加文心一言服务的依赖。
- 获取文心一言的API Key。
- 使用RestTemplate或者WebClient来调用文心一言的API。
以下是一个简单的例子,展示如何使用Spring Boot整合文心一言:
步骤1:添加依赖
确保你的pom.xml
包含以下依赖(请根据实际情况使用最新版本):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>你的版本号</version>
<scope>compile</scope>
</dependency>
步骤2:获取API Key
前往百度AI开放平台获取文心一言的API Key。
步骤3:配置文心一言服务的URL和API Key
在application.properties
或application.yml
中配置文心一言服务的URL和API Key:
ai.baidu.url=https://aip.baidubce.com/rpc/2.0/ai_custom
ai.baidu.apiKey=你的API_Key
ai.baidu.secretKey=你的SECRET_Key
步骤4:创建配置类
创建配置类来读取配置文件中的信息:
@Configuration
@ConfigurationProperties(prefix = "ai.baidu")
@Data
public class AiBaiduConfig {
private String url;
private String apiKey;
private String secretKey;
}
步骤5:创建服务类
创建服务类来调用文心一言的API:
@Service
public class AiBaiduService {
private final AiBaiduConfig aiBaiduConfig;
private final RestTemplate restTemplate;
public AiBaiduService(AiBaiduConfig aiBaiduConfig, RestTemplate restTemplate) {
this.aiBaiduConfig = aiBaiduConfig;
this.restTemplate = restTemplate;
}
public String getResponse(String text) {
// 构建请求体
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
params.add("text", text);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(params, headers);
// 发起POST请求
ResponseEntity<String> response = restTemplate.postForEntity(aiBaiduConfig.getUrl(), requestEntity, String.class);
return response.getBody();
}
}
步骤6:使用服务
在你的Controller中使用AiBaiduService
:
@RestController
public class AiController {
private final AiBaiduService aiBaiduService;
public AiController(AiBaiduService aiBaiduService) {
this.aiBaiduService = aiBaiduService;
}
@PostMapping("/ask")
public String ask(@RequestParam String text) {
return aiBaiduService.getResponse(text);
}