diff --git a/agents-flex-image/agents-flex-image-qianfan/src/main/java/com/agentsflex/image/qianfan/QianfanImageModel.java b/agents-flex-image/agents-flex-image-qianfan/src/main/java/com/agentsflex/image/qianfan/QianfanImageModel.java new file mode 100644 index 0000000..709e191 --- /dev/null +++ b/agents-flex-image/agents-flex-image-qianfan/src/main/java/com/agentsflex/image/qianfan/QianfanImageModel.java @@ -0,0 +1,88 @@ +package com.agentsflex.image.qianfan; + +import com.agentsflex.core.image.*; +import com.agentsflex.core.llm.client.HttpClient; +import com.agentsflex.core.util.Maps; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import okhttp3.*; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.TimeUnit; + + +public class QianfanImageModel implements ImageModel { + static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder() + .connectTimeout(30, TimeUnit.SECONDS) + .readTimeout(60, TimeUnit.SECONDS) + .writeTimeout(10, TimeUnit.SECONDS) + .build(); + + private QianfanImageModelConfig config; + + public QianfanImageModel(QianfanImageModelConfig config) { + this.config = config; + } + + @Override + public ImageResponse generate(GenerateImageRequest request) { + ImageResponse responseImage = new ImageResponse(); + try { + request.setModel(config.getModels()); + String payload = promptToPayload(request); + + RequestBody body = RequestBody.create(MediaType.parse("application/json"), payload); + Request requestQianfan = new Request.Builder() + .url(config.getEndpoint() + config.getEndpointGenerations()) + .post(body) + .addHeader("Content-Type", "application/json") + .addHeader("Authorization", "Bearer " + config.getApiKey()) + .build(); + + Response response = HTTP_CLIENT.newCall(requestQianfan).execute(); + if (!response.isSuccessful()) { + throw new IOException("Unexpected code " + response); + } + + JSONObject jsonObject = JSON.parseObject(response.body().string()); + JSONArray dataArray = jsonObject.getJSONArray("data"); + for (int i = 0; i < dataArray.size(); i++) { + responseImage.addImage(dataArray.getJSONObject(i).getString("url")); + } + + return responseImage; + } catch (IOException e) { + ImageResponse.error(e.getMessage()); + e.printStackTrace(); + return responseImage; + } catch (Exception e) { + ImageResponse.error(e.getMessage()); + e.printStackTrace(); + return responseImage; + } + } + + public static String promptToPayload(GenerateImageRequest request) { + return Maps.of("Prompt", request.getPrompt()) + .setIfNotEmpty("model", request.getModel()) + .toJSON(); + } + + @Override + public ImageResponse img2imggenerate(GenerateImageRequest request) { + return null; + } + + @Override + public ImageResponse edit(EditImageRequest request) { + return null; + } + + @Override + public ImageResponse vary(VaryImageRequest request) { + return null; + } +}