Spring - OpenAI 生成圖像

ChatGPT 是由 OpenAI 開發的強大語言模型,可以用於生成類似人類的文本。OpenAI API 允許開發人員訪問該模型並在其自己的應用程序中使用。在本文中,我們將討論如何使用 Java Spring Framework 與 OpenAI API 生成圖像。

在開始之前,您需要在 OpenAI 網站 "https://beta.openai.com/account/api-keys" 上註冊 API 密鑰。一旦擁有了 API 密鑰,就可以開始向 API 發送請求。

要使用 Java Spring Framework 與 OpenAI API,請使用可以處理 HTTP 請求的庫。這方面比較常用的庫是 Spring RestTemplate 庫。RestTemplate 是一種強大而靈活的庫,可以輕鬆地發送 HTTP 請求並處理響應。

首先,需要將 Spring RestTemplate 庫添加到項目中。可以將以下依賴項添加到 build.gradle 文件:

plugins {
 id 'java'
 id 'org.springframework.boot' version '3.0.1'
 id 'io.spring.dependency-management' version '1.1.0'
}
group = 'com.openai'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
repositories {
 mavenCentral()
}
dependencies {
 implementation 'org.springframework.boot:spring-boot-starter-web'
 testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
 useJUnitPlatform()
}

接下來,創建一個處理 API 調用的類。可以使用下面的示例:

@Component
public class OpenAi {
    private static final String OPENAI_URL = "https://api.openai.com/v1/images/generations";
    private final String apiKey = "<your-api-key";
    private final RestTemplate restTemplate = new RestTemplate();
    public String generateImages(String prompt, float temperature, int maxTokens, String stop, final int logprobs, final boolean echo) {
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        headers.set("Authorization", "Bearer " + apiKey);
        // We are including only some of the parameters to the json request
        String requestJson = "{\"prompt\":\"" + prompt + "\",\"n\":" + n + "}";
        HttpEntity < String > request = new HttpEntity < > (requestJson, headers);
        ResponseEntity < String > response = restTemplate.postForEntity(OPENAI_URL, request, String.class);
        return response.getBody();
    }
}

這個類使用 Spring RestTemplate 庫向 OpenAI API 的生成圖像端點發送 POST 請求,包含給定的提示詞和想要接收的圖像數量。如果需要,還可以增加一些其他可選參數,可以在下面的鏈接中檢查:https://beta.openai.com/docs/api-reference/images/create。

API 密鑰已添加到請求頭中,並以 JSON 的形式發送請求。然後解析響應以返回生成的圖像 URL。

現在,可以在代碼中使用此類來使用 ChatGPT 生成圖像。以下是如何在 Spring 控制器中使用 generateImages 方法的示例。

@RestController
public class OpenAiController {
    @Autowired
    private final OpenAi openAi;
    public OpenAiController(OpenAi openAi) {
        this.openAi = openAi;
    }
    @PostMapping("/generateImages")
    public String generateImages(@RequestBody GenerateImagesRequest request) {
        return openAi.generateImages(request.getPrompt(), request.getTemperature(), request.getMaxTokens(), request.getStop(),
            request.getLogprobs(), request.isEcho(), request.getN());
    }
}

上面的代碼是 Spring REST 控制器的示例,它使用請求正文中傳遞的參數調用 OpenAi 類中的 generateImages 方法。它將 POST 請求映射到 /generateImages 終點,並將生成的圖像作爲響應返回。

還可以爲請求正文定義一個 POJO 類,例如:

public class GenerateImagesRequest {
    private String prompt;
    private float temperature;
    private int maxTokens;
    private String stop;
    private int logprobs;
    private boolean echo;
    private int n;
    // getters and setters
}

值得注意的是,生成的圖像可能不完美,可能需要進一步審查和調整。我們已向模型添加了許多參數,但在向服務器發送 post 請求時,OpenAI 實用程序類中並未使用它們。這是因爲這些參數大多是可選的,有些甚至對於生成圖像的端點(endpoint)無效。但是,對於其他端點,如 “文本完成” 等,這些是有效的。

測試 API 的時間到了

現在,我們已經準備好端點,可以啓動服務器並使用以下 URL 從 Postman 或任何其他 API 測試工具發出 POST 請求。

http://localhost:8080/generateImages

這是我的 API 測試截圖和響應:

可以看到具有 prompt 和 n 值的 Json 請求正文。n=3 表示我們將收到 5 張生成的圖像作爲響應。我們確實收到與剛剛發送的提示文本相關的 3 個圖像 URL。

現在可以複製這些 URL 並將它們粘貼到瀏覽器中以查看實際圖像。

圖像生成使用 DALL·E 模型。有許多其他模型可供使用,根據要求進行選擇。不僅可以生成圖像,還可以操縱它們。可以都嘗試一下,看看哪個最合心意。使用下面的鏈接獲取所有可用模型:https://api.openai.com/v1/models(將你的 API 密鑰作爲 Bearer 令牌添加)。

本文提供了有關如何使用 Java Spring Framework 與 OpenAI API 生成 ChatGPT 圖像的詳細步驟。希望本指南有助於在基於 Spring 的項目中使用 ChatGPT 的強大功能,使開發變得更輕鬆!

轉自:Manpreet Singh,

鏈接:manpreetsinghdor.medium.com

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/G00hR6kJbea3qyWbzyGfeg