content: package org.ruoyi.common.chat.entity.edits;
  
  import com.fasterxml.jackson.annotation.JsonProperty;
  import lombok.*;
  import lombok.extern.slf4j.Slf4j;
  
  import java.io.Serializable;
  
  /**
   *  
   *
   * @author https:www.unfbx.com
   *  2023-02-15
   */
  @Getter
  @Builder
  @Slf4j
  @NoArgsConstructor
  @AllArgsConstructor
  public class Edit implements Serializable {
      /**
       * 编辑模型，目前支持两种
       */
      @NonNull
      private String model;
  
      @NonNull
      private String input;
      /**
       * 提示说明。告知模型如何修改。
       */
      @NonNull
      private String instruction;
  
  
      /**
       * 使用什么取样温度，0到2之间。较高的值(如0.8)将使输出更加随机，而较低的值(如0.2)将使输出更加集中和确定。
       *
       * We generally recommend altering this or but not both.top_p
       */
      @Builder.Default
      private double temperature = 0;
  
      /**
       * 使用温度采样的替代方法称为核心采样，其中模型考虑具有top_p概率质量的令牌的结果。因此，0.1 意味着只考虑包含前 10% 概率质量的代币。
       *
       * 我们通常建议更改此设置，但不要同时更改两者。temperature
       */
      @JsonProperty("top_p")
      @Builder.Default
      private Double topP = 1d;
  
      /**
       * 为每个提示生成的完成次数。
       */
      @Builder.Default
      private Integer n = 1;
  
      public void setModel(Model model) {
          this.model = model.getName();
      }
  
      public void setTemperature(double temperature) {
          if (temperature > 2 || temperature < 0) {
              log.error("temperature参数异常，temperature属于[0,2]");
              this.temperature = 2;
              return;
          }
          if (temperature < 0) {
              log.error("temperature参数异常，temperature属于[0,2]");
              this.temperature = 0;
              return;
          }
          this.temperature = temperature;
      }
  
  
      public void setTopP(Double topP) {
          this.topP = topP;
      }
  
      public void setN(Integer n) {
          this.n = n;
      }
  
      public void setInput(String input) {
          this.input = input;
      }
  
      public void setInstruction(String instruction) {
          this.instruction = instruction;
      }
      @Getter
      @AllArgsConstructor
      public enum Model {
          TEXT_DAVINCI_EDIT_001("text-davinci-edit-001"),
          CODE_DAVINCI_EDIT_001("code-davinci-edit-001"),
          ;
          private String name;
      }
  }
  
  
  
  