All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.alibaba.dashscope.aigc.conversation.ConversationResult Maven / Gradle / Ivy

// Copyright (c) Alibaba, Inc. and its affiliates.
package com.alibaba.dashscope.aigc.conversation;

import static com.alibaba.dashscope.utils.ApiKeywords.TEXT;

import com.alibaba.dashscope.common.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.protocol.Response;
import com.alibaba.dashscope.utils.JsonUtils;
import com.google.common.collect.Maps;
import lombok.Data;
import lombok.EqualsAndHashCode;

@Data
@EqualsAndHashCode(callSuper = true)
public class ConversationResult extends Result {

  /** The chat message structure. */
  private ChatMessage message;

  /**
   * Load data from the server output.
   *
   * @param protocol The protocol, can be 'http' or 'websocket'.
   * @param response The server Response.
   * @throws ApiException if the input is invalid.
   */
  @Override
  public void fromResponse(Protocol protocol, Response response) throws ApiException {
    ConversationMessagePayload payload =
        JsonUtils.fromJson(response.getMessage(), ConversationMessagePayload.class);
    this.setUsage(payload.getUsage());
    this.setMessage(
        payload.getOutput() != null
            ? ChatMessage.builder()
                .role(Role.BOT.getValue())
                .payload(
                    payload.getOutput().get(TEXT) == null
                        ? null
                        : payload.getOutput().get(TEXT).getAsString())
                .build()
            : null);
    this.setHeaders(response.getHeaders() == null ? Maps.newHashMap() : response.getHeaders());
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy