feat: add image ai

This commit is contained in:
Michael Yang 2024-06-22 18:15:20 +08:00
parent a09eaa12f8
commit bf059939f8
7 changed files with 309 additions and 0 deletions

View File

@ -0,0 +1,64 @@
/*
* Copyright (c) 2023-2025, Agents-Flex (fuhai999@gmail.com).
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.agentsflex.llm.image;
public class BaseImageRequest {
private String model;
private Integer n;
private String responseFormat;
private String size;
private String user;
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public Integer getN() {
return n;
}
public void setN(Integer n) {
this.n = n;
}
public String getResponseFormat() {
return responseFormat;
}
public void setResponseFormat(String responseFormat) {
this.responseFormat = responseFormat;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
}

View File

@ -0,0 +1,38 @@
/*
* Copyright (c) 2023-2025, Agents-Flex (fuhai999@gmail.com).
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.agentsflex.llm.image;
public class EditImageRequest extends GenerateImageRequest {
private Image image;
private Image mask;
public Image getImage() {
return image;
}
public void setImage(Image image) {
this.image = image;
}
public Image getMask() {
return mask;
}
public void setMask(Image mask) {
this.mask = mask;
}
}

View File

@ -0,0 +1,47 @@
/*
* Copyright (c) 2023-2025, Agents-Flex (fuhai999@gmail.com).
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.agentsflex.llm.image;
public class GenerateImageRequest extends BaseImageRequest {
private String prompt;
private String quality;
private String style;
public String getPrompt() {
return prompt;
}
public void setPrompt(String prompt) {
this.prompt = prompt;
}
public String getQuality() {
return quality;
}
public void setQuality(String quality) {
this.quality = quality;
}
public String getStyle() {
return style;
}
public void setStyle(String style) {
this.style = style;
}
}

View File

@ -0,0 +1,73 @@
/*
* Copyright (c) 2023-2025, Agents-Flex (fuhai999@gmail.com).
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.agentsflex.llm.image;
import java.util.Arrays;
public class Image {
/**
* The base64-encoded JSON of the generated image
*/
private String b64Json;
/**
* The URL of the generated image
*/
private String url;
/**
* The data of image
*/
private byte[] bytes;
public String getB64Json() {
return b64Json;
}
public void setB64Json(String b64Json) {
this.b64Json = b64Json;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public byte[] getBytes() {
return bytes;
}
public void setBytes(byte[] bytes) {
this.bytes = bytes;
}
public byte[] readBytes() {
return bytes;
}
@Override
public String toString() {
return "Image{" +
"b64Json='" + b64Json + '\'' +
", url='" + url + '\'' +
", bytes=" + Arrays.toString(bytes) +
'}';
}
}

View File

@ -0,0 +1,26 @@
/*
* Copyright (c) 2023-2025, Agents-Flex (fuhai999@gmail.com).
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.agentsflex.llm.image;
public interface ImageModel {
ImageResponse generate(GenerateImageRequest options);
ImageResponse edit(EditImageRequest options);
ImageResponse vary(VaryImageRequest options);
}

View File

@ -0,0 +1,32 @@
/*
* Copyright (c) 2023-2025, Agents-Flex (fuhai999@gmail.com).
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.agentsflex.llm.image;
import com.agentsflex.util.Metadata;
import java.util.List;
public class ImageResponse extends Metadata {
private List<Image> images;
public List<Image> getImages() {
return images;
}
public void setImages(List<Image> images) {
this.images = images;
}
}

View File

@ -0,0 +1,29 @@
/*
* Copyright (c) 2023-2025, Agents-Flex (fuhai999@gmail.com).
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.agentsflex.llm.image;
public class VaryImageRequest extends BaseImageRequest {
private Image image;
public Image getImage() {
return image;
}
public void setImage(Image image) {
this.image = image;
}
}