ChatMessage.java 1.36 KB
package com.hjx.parent.api;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

public class ChatMessage {
    public ChatMessage() {
    }
    public ChatMessage(String role, Object content) {
        this.role = role;
        this.content = content;
    }

    public String role;
    public Object content;

    public static ChatMessage fromImage(String role, String text, String... urls) {
        List<ContentItem> items = new ArrayList<>();
        if (text != null && !text.isEmpty()) {
            items.add(new ContentItem(ContentItem.TYPE_TEXT, text));
        }
        for (String it: urls) {
            ContentItem.ContentImage image = new ContentItem.ContentImage(it);
            items.add(new ContentItem(ContentItem.TYPE_IMAGE, image));
        }
        return new ChatMessage(role, items);
    }

    public String getTextContent() {
        if (content == null) return null;
        if (content instanceof String) return (String) content;
        ContentItem item = firstText();
        return item == null ? null : item.text;
    }

    private ContentItem firstText() {
        if (!(content instanceof List<?>)) return null;
        List<?> anyList = (List<?>) content;
        return anyList.stream()
                .map(ContentItem::reSerialize)
                .filter(Objects::nonNull)
                .findFirst().orElse(null);
    }
}