Add File
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user