iT邦幫忙

2024 iThome 鐵人賽

DAY 29
0
Software Development

Spring boot 從零到寫出ChatGPT系列 第 29

Spring boot 從零開始 (29) - Spring AI 使用方式 & 實現OpenAI API

  • 分享至 

  • xImage
  •  

前一篇介紹到如何使用application.properties設定連線,這一篇跟大家介紹pom.xml直接引用的方式~

pom.xml新增dependency

    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
        <version>0.8.1-SNAPSHOT</version>
    </dependency>

新增環境變數OPENAI_API_KEY

https://ithelp.ithome.com.tw/upload/images/20241013/2011211830EyqPDYIg.png

application.properties

spring.ai.openai.api-key=${OPENAI_API_KEY}

Config

這邊就不用再帶key囉!

import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class ChatGPTConfig {
    @Bean
    @Qualifier("openaiRestTemplate")
    RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

Controller

這裡我們就可以非常簡單的直接使用ChatClient來做溝通

@RestController
@RequestMapping("api/v1")
@Slf4j
public class ChatAPIController {
    @Autowired
    private ChatClient chatClient;

    @GetMapping("chat")
    public String chat(@RequestParam("prompt") String prompt) {
        return chatClient.call(prompt);
    }
}

從ChatClient可以得知Default的Model是用哪一個

https://ithelp.ithome.com.tw/upload/images/20241013/20112118YS6hGtCfAD.png

可以得到相同結果哦

https://ithelp.ithome.com.tw/upload/images/20241013/20112118OYq83UxpKM.png

再試試一個AI圖片生成

改使用ImageClient,大家也可以進去看看ImageClient的程式會更了解哦/images/emoticon/emoticon37.gif

@RestController
@RequestMapping("api/v1")
@Slf4j
public class ChatAPIController {
    @Qualifier("openaiRestTemplate")
    @Autowired
    private RestTemplate restTemplate;

    @Autowired
    private ImageClient imageClient;

    @GetMapping(value = "image", produces = MediaType.IMAGE_JPEG_VALUE)
    @ResponseBody
    public byte[] getImage(@RequestParam("prompt") String prompt) throws URISyntaxException, IOException {
        Image image = imageClient.call(new ImagePrompt(prompt)).getResult().getOutput();
        URI uri = new URI(image.getUrl());
        ResponseEntity<byte[]> responseEntity = restTemplate.getForEntity(uri, byte[].class);
        return responseEntity.getBody();
    }
}

因為是生成圖片,所以改用Chrome來call api

https://ithelp.ithome.com.tw/upload/images/20241013/20112118hSWCrLALvu.png

結論

不論使用哪種方式,大家都可以去看看相關的Library,就可以用得更熟能生巧!


上一篇
Spring boot 從零開始 (28) - Spring boot 使用OpenAI ChatGPT API
下一篇
Spring boot 從零開始 (30) - Spring AI 自訂OpenAI Model & 總結
系列文
Spring boot 從零到寫出ChatGPT30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言