# frozen_string_literal: true

module OpenAI
  module Models
    module FineTuning
      class FineTuningJobWandbIntegration < OpenAI::Internal::Type::BaseModel
        # @!attribute project
        #   The name of the project that the new run will be created under.
        #
        #   @return [String]
        required :project, String

        # @!attribute entity
        #   The entity to use for the run. This allows you to set the team or username of
        #   the WandB user that you would like associated with the run. If not set, the
        #   default entity for the registered WandB API key is used.
        #
        #   @return [String, nil]
        optional :entity, String, nil?: true

        # @!attribute name
        #   A display name to set for the run. If not set, we will use the Job ID as the
        #   name.
        #
        #   @return [String, nil]
        optional :name, String, nil?: true

        # @!attribute tags
        #   A list of tags to be attached to the newly created run. These tags are passed
        #   through directly to WandB. Some default tags are generated by OpenAI:
        #   "openai/finetune", "openai/{base-model}", "openai/{ftjob-abcdef}".
        #
        #   @return [Array<String>, nil]
        optional :tags, OpenAI::Internal::Type::ArrayOf[String]

        # @!method initialize(project:, entity: nil, name: nil, tags: nil)
        #   Some parameter documentations has been truncated, see
        #   {OpenAI::Models::FineTuning::FineTuningJobWandbIntegration} for more details.
        #
        #   The settings for your integration with Weights and Biases. This payload
        #   specifies the project that metrics will be sent to. Optionally, you can set an
        #   explicit display name for your run, add tags to your run, and set a default
        #   entity (team, username, etc) to be associated with your run.
        #
        #   @param project [String] The name of the project that the new run will be created under.
        #
        #   @param entity [String, nil] The entity to use for the run. This allows you to set the team or username of th
        #
        #   @param name [String, nil] A display name to set for the run. If not set, we will use the Job ID as the nam
        #
        #   @param tags [Array<String>] A list of tags to be attached to the newly created run. These tags are passed th
      end
    end

    FineTuningJobWandbIntegration = FineTuning::FineTuningJobWandbIntegration
  end
end
