Skip to content

Commit 9d12744

Browse files
authored
Merge pull request #59 from springaialibaba/0228-yuluo/add-more-chatclient
feat: add image api prompt support
2 parents acff16e + 9ddfb37 commit 9d12744

File tree

5 files changed

+34
-17
lines changed

5 files changed

+34
-17
lines changed

spring-ai-alibaba-integration-example/backend/src/main/java/com/alibaba/cloud/ai/application/controller/SAAAudioController.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import com.alibaba.cloud.ai.application.utils.ValidText;
2424
import io.swagger.v3.oas.annotations.Operation;
2525
import io.swagger.v3.oas.annotations.tags.Tag;
26-
import jakarta.annotation.Resource;
2726
import reactor.core.publisher.Flux;
2827

2928
import org.springframework.web.bind.annotation.GetMapping;
@@ -44,8 +43,11 @@
4443
@RequestMapping("/api/v1/")
4544
public class SAAAudioController {
4645

47-
@Resource
48-
private SAAAudioService audioService;
46+
private final SAAAudioService audioService;
47+
48+
public SAAAudioController(SAAAudioService audioService) {
49+
this.audioService = audioService;
50+
}
4951

5052
/**
5153
* audio2text

spring-ai-alibaba-integration-example/backend/src/main/java/com/alibaba/cloud/ai/application/controller/SAAFunctionController.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import com.alibaba.cloud.ai.application.service.SAAFunctionService;
2121
import io.swagger.v3.oas.annotations.tags.Tag;
22-
import jakarta.annotation.Resource;
2322

2423
import org.springframework.web.bind.annotation.RequestMapping;
2524
import org.springframework.web.bind.annotation.RestController;
@@ -34,7 +33,10 @@
3433
@RequestMapping("/api/v1/")
3534
public class SAAFunctionController {
3635

37-
@Resource
38-
private SAAFunctionService functionService;
36+
private final SAAFunctionService functionService;
37+
38+
public SAAFunctionController(SAAFunctionService functionService) {
39+
this.functionService = functionService;
40+
}
3941

4042
}

spring-ai-alibaba-integration-example/backend/src/main/java/com/alibaba/cloud/ai/application/controller/SAAImageController.java

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,11 @@
2323
import com.alibaba.cloud.ai.application.utils.ValidText;
2424
import io.swagger.v3.oas.annotations.Operation;
2525
import io.swagger.v3.oas.annotations.tags.Tag;
26-
import jakarta.annotation.Resource;
2726
import jakarta.servlet.http.HttpServletResponse;
2827
import reactor.core.publisher.Flux;
2928

29+
import org.springframework.util.StringUtils;
3030
import org.springframework.web.bind.annotation.GetMapping;
31-
import org.springframework.web.bind.annotation.PathVariable;
3231
import org.springframework.web.bind.annotation.PostMapping;
3332
import org.springframework.web.bind.annotation.RequestMapping;
3433
import org.springframework.web.bind.annotation.RequestParam;
@@ -45,26 +44,40 @@
4544
@RequestMapping("/api/v1/")
4645
public class SAAImageController {
4746

48-
@Resource
49-
private SAAImageService imageService;
47+
private final SAAImageService imageService;
5048

49+
public SAAImageController(SAAImageService imageService) {
50+
this.imageService = imageService;
51+
}
52+
53+
/**
54+
* Image Recognition
55+
* prompt 可以为空
56+
*/
5157
@UserIp
5258
@PostMapping("/image2text")
5359
@Operation(summary = "DashScope Image Recognition")
54-
public Flux<Result<String>> image2text(@RequestParam("image") MultipartFile image) {
60+
public Flux<Result<String>> image2text(
61+
@RequestParam("prompt") String prompt,
62+
@RequestParam("image") MultipartFile image
63+
) {
5564

5665
if (image.isEmpty()) {
5766
return Flux.just(Result.failed("No image file provided"));
5867
}
5968

60-
return imageService.image2Text(image).map(Result::success);
69+
if (!StringUtils.hasText(prompt)) {
70+
prompt = "请你用一句话描述这张图片";
71+
}
72+
73+
return imageService.image2Text(prompt, image).map(Result::success);
6174
}
6275

6376
@UserIp
64-
@GetMapping("/text2Image/{prompt}")
77+
@GetMapping("/text2Image")
6578
@Operation(summary = "DashScope Image Generation")
6679
public Result<Void> text2Image(
67-
@PathVariable("prompt") String prompt,
80+
@RequestParam("prompt") String prompt,
6881
HttpServletResponse response
6982
) {
7083

spring-ai-alibaba-integration-example/backend/src/main/java/com/alibaba/cloud/ai/application/service/SAAChatService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public SAAChatService(ChatModel chatModel) {
4949
When you receive a question from a user, you should answer the user's question in a friendly\s
5050
and polite manner. Be careful not to answer the wrong message. If there is a question\s
5151
that you can't answer, guide users to the official website of Spring Ai Alibaba to check it.\s
52-
The web address is https:java2ai.com.
52+
The web address is https://java2ai.com.
5353
""")
5454
.defaultAdvisors(
5555
new MessageChatMemoryAdvisor(new InMemoryChatMemory()),

spring-ai-alibaba-integration-example/backend/src/main/java/com/alibaba/cloud/ai/application/service/SAAImageService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,10 @@ public SAAImageService(ImageModel imageModel, ChatModel chatModel) {
6464
.build();
6565
}
6666

67-
public Flux<String> image2Text(MultipartFile file) {
67+
public Flux<String> image2Text(String prompt, MultipartFile file) {
6868

6969
UserMessage message = new UserMessage(
70-
"解释图片中的内容",
70+
prompt,
7171
new Media(
7272
MimeTypeUtils.IMAGE_PNG,
7373
new FileSystemResource(Objects.requireNonNull(file.getOriginalFilename()))

0 commit comments

Comments
 (0)