package com.sonic.cow.client;

import com.sonic.cow.client.request.InputRequest;
import com.sonic.cow.client.request.Text;
import com.sonic.cow.client.request.Tools;
import com.sonic.cow.client.response.ResponseChatResponse;

import java.util.List;

/**
 * 上下文聊天
 */
public interface ResponseChatClient {

    /**
     * 上下文 + 文本 + 图片 + 工具 聊天
     * @param responseId
     * @param instructions
     * @param inputRequests
     * @param tools
     * @return
     */
    ResponseChatResponse responseStructuredChat(String responseId, String instructions, List<InputRequest> inputRequests, List<Tools> tools, String functionParam, Float temperature, Float topp);


    /**
     * 上下文 + 文本 + 图片 + 工具 聊天
     * @param responseId
     * @param instructions
     * @param inputRequests
     * @param tools
     * @return
     */
    ResponseChatResponse responseStructuredChat(String responseId, String instructions, List<InputRequest> inputRequests, List<Tools> tools, boolean caching);

    /**
     * 上下文 + 文本 + 图片 + 工具 聊天
     * @param responseId
     * @param instructions
     * @param inputRequests
     * @param tools
     * @param text
     * @param caching
     * @return
     */
    ResponseChatResponse responseChat(String responseId, String instructions, List<InputRequest> inputRequests, List<Tools> tools, Text text, boolean caching);

    /**
     * 上下文 + 文本 + 图片 + 工具 聊天
     * @param responseId
     * @param instructions
     * @param inputRequests
     * @param tools
     * @param text
     * @param caching
     * @return
     */
    ResponseChatResponse responseChatV2(String responseId, String instructions, List<InputRequest> inputRequests, List<Tools> tools, Text text, boolean caching, String functionParam, Float temperature, Float topp);

}
