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

com.volcengine.ark.runtime.model.completion.chat.ChatCompletionRequest Maven / Gradle / Ivy

There is a newer version: 0.1.144
Show newest version
package com.volcengine.ark.runtime.model.completion.chat;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.JsonNode;
import com.volcengine.ark.runtime.model.bot.completion.chat.BotChatCompletionRequest;
import com.volcengine.ark.runtime.utils.JacksonUtil;

import java.util.List;
import java.util.Map;

public class ChatCompletionRequest {

    /**
     * ID of the model to use.
     */
    String model;

    /**
     * The messages to generate chat completions.
     * see {@link ChatMessage}
     */
    List messages;

    /**
     * What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower
     * values like 0.2 will make it more focused and deterministic.
     * We generally recommend altering this or top_p but not both.
     */
    Double temperature;

    /**
     * An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens
     * with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered.
* We generally recommend altering this or temperature but not both. */ @JsonProperty("top_p") Double topP; /** * If set, partial message deltas will be sent, like in ChatGPT. Tokens will be sent as data-only * as they become available, with the stream terminated by a data: [DONE] message. */ Boolean stream; /** * Options for streaming response. Only set this when you set stream: true. */ @JsonProperty("stream_options") ChatCompletionRequestStreamOptions streamOptions; /** * Up to 4 sequences where the API will stop generating further tokens. */ List stop; /** * The maximum number of tokens allowed for the generated answer. */ @JsonProperty("max_tokens") Integer maxTokens; /** * Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far, * increasing the model's likelihood to talk about new topics. */ @JsonProperty("presence_penalty") Double presencePenalty; /** * Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, * decreasing the model's likelihood to repeat the same line verbatim. */ @JsonProperty("frequency_penalty") Double frequencyPenalty; /** * Accepts a json object that maps tokens (specified by their token ID in the tokenizer) to an associated bias value from -100 * to 100. Mathematically, the bias is added to the logits generated by the model prior to sampling. The exact effect will * vary per model, but values between -1 and 1 should decrease or increase likelihood of selection; values like -100 or 100 * should result in a ban or exclusive selection of the relevant token. */ @JsonProperty("logit_bias") Map logitBias; /** * A unique identifier representing your end-user, which will help to monitor and detect abuse. */ String user; /** * A list of the available tools. */ List tools; /** * Controls how the model responds to function calls. */ @JsonProperty("function_call") ChatCompletionRequestFunctionCall functionCall; /** * Whether to return log probabilities of the output tokens or not. * If true, returns the log probabilities of each output token returned in the content of message. */ Boolean logprobs; /** * An integer between 0 and 20 specifying the number of most likely tokens to return at each token position, * each with an associated log probability. logprobs must be set to true if this parameter is used. */ @JsonProperty("top_logprobs") Integer topLogprobs; @JsonProperty("repetition_penalty") Double repetitionPenalty; /** * How many chat completion chatCompletionChoices to generate for each input message. */ Integer n; @JsonProperty("tool_choice") Object toolChoice; /** * `type` must be one of `text` or `json_object`. * If the request only specifies type=`json_object` and no schema is specified, refer to the openai behavior, * the model outputs an arbitrary json object (depending on the user's instruction in the user prompt/system prompt) * * Even if the schema is specified, still need to specify the expected json format in user prompt/system prompt */ @JsonProperty("response_format") ChatCompletionRequestResponseFormat responseFormat; public String getModel() { return model; } public void setModel(String model) { this.model = model; } public List getMessages() { return messages; } public void setMessages(List messages) { this.messages = messages; } public Double getTemperature() { return temperature; } public void setTemperature(Double temperature) { this.temperature = temperature; } public Double getTopP() { return topP; } public void setTopP(Double topP) { this.topP = topP; } public Boolean getStream() { return stream; } public void setStream(Boolean stream) { this.stream = stream; } public ChatCompletionRequestStreamOptions getStreamOptions() { return streamOptions; } public void setStreamOptions(ChatCompletionRequestStreamOptions streamOptions) { this.streamOptions = streamOptions; } public List getStop() { return stop; } public void setStop(List stop) { this.stop = stop; } public Integer getMaxTokens() { return maxTokens; } public void setMaxTokens(Integer maxTokens) { this.maxTokens = maxTokens; } public Double getPresencePenalty() { return presencePenalty; } public void setPresencePenalty(Double presencePenalty) { this.presencePenalty = presencePenalty; } public Double getFrequencyPenalty() { return frequencyPenalty; } public void setFrequencyPenalty(Double frequencyPenalty) { this.frequencyPenalty = frequencyPenalty; } public Map getLogitBias() { return logitBias; } public void setLogitBias(Map logitBias) { this.logitBias = logitBias; } public String getUser() { return user; } public void setUser(String user) { this.user = user; } public List getTools() { return tools; } public void setTools(List tools) { this.tools = tools; } public ChatCompletionRequestFunctionCall getFunctionCall() { return functionCall; } public void setFunctionCall(ChatCompletionRequestFunctionCall functionCall) { this.functionCall = functionCall; } public Boolean getLogprobs() { return logprobs; } public void setLogprobs(Boolean logprobs) { this.logprobs = logprobs; } public Integer getTopLogprobs() { return topLogprobs; } public void setTopLogprobs(Integer topLogprobs) { this.topLogprobs = topLogprobs; } public Double getRepetitionPenalty() { return repetitionPenalty; } public void setRepetitionPenalty(Double repetitionPenalty) { this.repetitionPenalty = repetitionPenalty; } public Integer getN() { return n; } public void setN(Integer n) { this.n = n; } public Object getToolChoice() { return toolChoice; } public void setToolChoice(Object toolChoice) { this.toolChoice = toolChoice; } public ChatCompletionRequestResponseFormat getResponseFormat() { return responseFormat; } public void setResponseFormat(ChatCompletionRequestResponseFormat responseFormat) { this.responseFormat = responseFormat; } @Override public String toString() { return "ChatCompletionRequest{" + "model='" + model + '\'' + ", messages=" + messages + ", temperature=" + temperature + ", topP=" + topP + ", stream=" + stream + ", streamOptions=" + streamOptions + ", stop=" + stop + ", maxTokens=" + maxTokens + ", presencePenalty=" + presencePenalty + ", frequencyPenalty=" + frequencyPenalty + ", logitBias=" + logitBias + ", user='" + user + '\'' + ", tools=" + tools + ", functionCall=" + functionCall + ", logprobs=" + logprobs + ", topLogprobs=" + topLogprobs + ", repetitionPenalty=" + repetitionPenalty + ", n=" + n + ", toolChoice=" + toolChoice + ", responseFormat=" + responseFormat + '}'; } public static class ChatCompletionRequestFunctionCall { String name; public ChatCompletionRequestFunctionCall(String name) { this.name = name; } public static ChatCompletionRequestFunctionCall of(String name) { return new ChatCompletionRequestFunctionCall(name); } public String getName() { return name; } public void setName(String name) { this.name = name; } } public static class ChatCompletionRequestStreamOptions { @JsonProperty("include_usage") Boolean includeUsage; public ChatCompletionRequestStreamOptions(Boolean includeUsage) { this.includeUsage = includeUsage; } public static ChatCompletionRequestStreamOptions of(Boolean includeUsage) { return new ChatCompletionRequestStreamOptions(includeUsage); } public Boolean getIncludeUsage() { return includeUsage; } public void setIncludeUsage(Boolean includeUsage) { this.includeUsage = includeUsage; } } public static class ChatCompletionRequestResponseFormat { String type; JsonNode schema; public ChatCompletionRequestResponseFormat(String type) { this.type = type; } public ChatCompletionRequestResponseFormat(String type, Object schema) { this.type = type; this.schema = JacksonUtil.clsToJsonNode(schema); } public String getType() { return type; } public void setType(String type) { this.type = type; } public JsonNode getSchema() { return schema; } public void setSchema(JsonNode schema) { this.schema = schema; } } public static class ChatCompletionRequestToolChoice { String type; ChatCompletionRequestToolChoiceFunction function; public String getType() { return type; } public void setType(String type) { this.type = type; } public ChatCompletionRequestToolChoiceFunction getFunction() { return function; } public void setFunction(ChatCompletionRequestToolChoiceFunction function) { this.function = function; } public ChatCompletionRequestToolChoice(String type, ChatCompletionRequestToolChoiceFunction function) { this.type = type; this.function = function; } } public static class ChatCompletionRequestToolChoiceFunction { String name; public ChatCompletionRequestToolChoiceFunction(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } } public static ChatCompletionRequest.Builder builder() { return new ChatCompletionRequest.Builder(); } public static class Builder { private String model; private List messages; private Double temperature; private Double topP; private Boolean stream; private ChatCompletionRequestStreamOptions streamOptions; private List stop; private Integer maxTokens; private Double presencePenalty; private Double frequencyPenalty; private Map logitBias; private String user; private List tools; private ChatCompletionRequestFunctionCall functionCall; private Boolean logprobs; private Integer topLogprobs; private Double repetitionPenalty; private Integer n; private Object toolChoice; private ChatCompletionRequestResponseFormat responseFormat; public ChatCompletionRequest.Builder model(String model) { this.model = model; return this; } public ChatCompletionRequest.Builder messages(List messages) { this.messages = messages; return this; } public ChatCompletionRequest.Builder temperature(Double temperature) { this.temperature = temperature; return this; } public ChatCompletionRequest.Builder topP(Double topP) { this.topP = topP; return this; } public ChatCompletionRequest.Builder stream(Boolean stream) { this.stream = stream; return this; } public ChatCompletionRequest.Builder streamOptions(ChatCompletionRequestStreamOptions streamOptions) { this.streamOptions = streamOptions; return this; } public ChatCompletionRequest.Builder stop(List stop) { this.stop = stop; return this; } public ChatCompletionRequest.Builder maxTokens(Integer maxTokens) { this.maxTokens = maxTokens; return this; } public ChatCompletionRequest.Builder presencePenalty(Double presencePenalty) { this.presencePenalty = presencePenalty; return this; } public ChatCompletionRequest.Builder frequencyPenalty(Double frequencyPenalty) { this.frequencyPenalty = frequencyPenalty; return this; } public ChatCompletionRequest.Builder logitBias(Map logitBias) { this.logitBias = logitBias; return this; } public ChatCompletionRequest.Builder user(String user) { this.user = user; return this; } public ChatCompletionRequest.Builder tools(List tools) { this.tools = tools; return this; } public ChatCompletionRequest.Builder functionCall(ChatCompletionRequestFunctionCall functionCall) { this.functionCall = functionCall; return this; } public ChatCompletionRequest.Builder logprobs(Boolean logprobs) { this.logprobs = logprobs; return this; } public ChatCompletionRequest.Builder topLogprobs(Integer topLogprobs) { this.topLogprobs = topLogprobs; return this; } public ChatCompletionRequest.Builder repetitionPenalty(Double repetitionPenalty) { this.repetitionPenalty = repetitionPenalty; return this; } public ChatCompletionRequest.Builder n(Integer n) { this.n = n; return this; } public ChatCompletionRequest.Builder toolChoice(String toolChoice) { this.toolChoice = toolChoice; return this; } public ChatCompletionRequest.Builder toolChoice(ChatCompletionRequestToolChoice toolChoice) { this.toolChoice = toolChoice; return this; } public ChatCompletionRequest.Builder responseFormat(ChatCompletionRequestResponseFormat responseFormat) { this.responseFormat = responseFormat; return this; } public ChatCompletionRequest build() { ChatCompletionRequest chatCompletionRequest = new ChatCompletionRequest(); chatCompletionRequest.setModel(model); chatCompletionRequest.setMessages(messages); chatCompletionRequest.setTemperature(temperature); chatCompletionRequest.setTopP(topP); chatCompletionRequest.setStream(stream); chatCompletionRequest.setStreamOptions(streamOptions); chatCompletionRequest.setStop(stop); chatCompletionRequest.setMaxTokens(maxTokens); chatCompletionRequest.setPresencePenalty(presencePenalty); chatCompletionRequest.setFrequencyPenalty(frequencyPenalty); chatCompletionRequest.setLogitBias(logitBias); chatCompletionRequest.setUser(user); chatCompletionRequest.setTools(tools); chatCompletionRequest.setFunctionCall(functionCall); chatCompletionRequest.setLogprobs(logprobs); chatCompletionRequest.setTopLogprobs(topLogprobs); chatCompletionRequest.setRepetitionPenalty(repetitionPenalty); chatCompletionRequest.setN(n); chatCompletionRequest.setToolChoice(toolChoice); chatCompletionRequest.setResponseFormat(responseFormat); return chatCompletionRequest; } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy