springboot集成通义千问
时间: 2024-12-30 18:11:50 浏览: 22
### 如何在Spring Boot应用中集成通义千问API
#### 创建Spring Boot项目
为了开始,在本地环境中创建一个新的Spring Boot项目。这可以通过Spring Initializr完成,确保选择了Java 11或以上版本作为编译器,并添加`Spring Web`依赖以便于后续操作[^3]。
```java
// pom.xml 中的部分配置示例
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
```
#### 获取API Key
在此之前,需拥有阿里云账户并开通通义千问服务以获得相应的API-Key用于身份验证和请求授权[^1]。
#### 添加依赖到pom.xml文件
为了让应用程序可以调用通义千问的服务接口,还需要引入HTTP客户端库(如OkHttp或者Apache HttpClient),这里推荐使用更轻量级的RestTemplate来进行网络通信:
```xml
<!-- pom.xml -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>aliyun-qwen-spring-boot-starter</artifactId>
<version>${qwen.version}</version>
</dependency>
```
注意`${qwen.version}`应替换为实际支持的最新版本号。
#### 编写控制器类
接下来定义一个RESTful风格的Controller来接收前端传来的消息并向通义千问发送查询请求;同时返回处理后的响应给用户界面展示。
```java
@RestController
@RequestMapping("/chatbot")
public class ChatBotController {
@Value("${qwen.api.key}")
private String apiKey;
@PostMapping("/ask")
public ResponseEntity<String> askQuestion(@RequestBody Map<String, String> body) {
try {
// 构建URL参数
String question = URLEncoder.encode(body.get("question"), "UTF-8");
// 发送GET/POST请求至通义千问服务器
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", "Bearer " + apiKey);
HttpEntity<String> entity = new HttpEntity<>("parameters", headers);
ResponseEntity<String> response = restTemplate.exchange(
"https://api.qwen.aliyun.com/v1/chat/completions?prompt=" + question,
HttpMethod.GET,
entity,
String.class
);
return ResponseEntity.ok(response.getBody());
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
}
}
}
```
此段代码实现了向通义千问发起询问的功能,并将得到的结果封装成JSON格式回传给客户端显示。
#### 应用程序属性设置
最后一步是在application.properties文件里加入API密钥和其他必要配置项:
```properties
# application.properties
server.port=8080
qwen.api.key=<Your_API_Key_Here>
```
请记得把占位符 `<Your_API_Key_Here>` 替换成真实的API key字符串。
阅读全文