def create_model(base_model_id:, forced_glossary: nil, parallel_corpus: nil, name: nil)
      raise ArgumentError.new("base_model_id must be provided") if base_model_id.nil?

      headers = {
      }
      sdk_headers = Common.new.get_sdk_headers("language_translator", "V3", "create_model")
      headers.merge!(sdk_headers)

      params = {
        "version" => @version,
        "base_model_id" => base_model_id,
        "name" => name
      }

      form_data = {}

      unless forced_glossary.nil?
        unless forced_glossary.instance_of?(StringIO) || forced_glossary.instance_of?(File)
          forced_glossary = forced_glossary.respond_to?(:to_json) ? StringIO.new(forced_glossary.to_json) : StringIO.new(forced_glossary)
        end
        form_data[:forced_glossary] = HTTP::FormData::File.new(forced_glossary, content_type: "application/octet-stream", filename: forced_glossary.respond_to?(:path) ? forced_glossary.path : nil)
      end

      unless parallel_corpus.nil?
        unless parallel_corpus.instance_of?(StringIO) || parallel_corpus.instance_of?(File)
          parallel_corpus = parallel_corpus.respond_to?(:to_json) ? StringIO.new(parallel_corpus.to_json) : StringIO.new(parallel_corpus)
        end
        form_data[:parallel_corpus] = HTTP::FormData::File.new(parallel_corpus, content_type: "application/octet-stream", filename: parallel_corpus.respond_to?(:path) ? parallel_corpus.path : nil)
      end

      method_url = "/v3/models"

      response = request(
        method: "POST",
        url: method_url,
        headers: headers,
        params: params,
        form: form_data,
        accept_json: true
      )
      response
    end
def create_model(base_model_id:, forced_glossary: nil, parallel_corpus: nil, name: nil)
      raise ArgumentError.new("base_model_id must be provided") if base_model_id.nil?

      headers = {
      }
      sdk_headers = Common.new.get_sdk_headers("language_translator", "V3", "create_model")
      headers.merge!(sdk_headers)

      params = {
        "version" => @version,
        "base_model_id" => base_model_id,
        "name" => name
      }

      form_data = {}

      unless forced_glossary.nil?
        unless forced_glossary.instance_of?(StringIO) || forced_glossary.instance_of?(File)
          forced_glossary = forced_glossary.respond_to?(:to_json) ? StringIO.new(forced_glossary.to_json) : StringIO.new(forced_glossary)
        end
        form_data[:forced_glossary] = HTTP::FormData::File.new(forced_glossary, content_type: "application/octet-stream", filename: forced_glossary.respond_to?(:path) ? forced_glossary.path : nil)
      end

      unless parallel_corpus.nil?
        unless parallel_corpus.instance_of?(StringIO) || parallel_corpus.instance_of?(File)
          parallel_corpus = parallel_corpus.respond_to?(:to_json) ? StringIO.new(parallel_corpus.to_json) : StringIO.new(parallel_corpus)
        end
        form_data[:parallel_corpus] = HTTP::FormData::File.new(parallel_corpus, content_type: "application/octet-stream", filename: parallel_corpus.respond_to?(:path) ? parallel_corpus.path : nil)
      end

      method_url = "/v3/models"

      response = request(
        method: "POST",
        url: method_url,
        headers: headers,
        params: params,
        form: form_data,
        accept_json: true
      )
      response
    end
Models


 @!method create_model(base_model_id:, forced_glossary: nil, parallel_corpus: nil, name: nil)
 Create model.
 Uploads Translation Memory eXchange (TMX) files to customize a translation model.

   You can either customize a model with a forced glossary or with a corpus that
   contains parallel sentences. To create a model that is customized with a parallel
   corpus <b>and</b> a forced glossary, proceed in two steps: customize with a
   parallel corpus first and then customize the resulting model with a glossary.
   Depending on the type of customization and the size of the uploaded corpora,
   training can range from minutes for a glossary to several hours for a large
   parallel corpus. You can upload a single forced glossary file and this file must
   be less than <b>10 MB</b>. You can upload multiple parallel corpora tmx files. The
   cumulative file size of all uploaded files is limited to <b>250 MB</b>. To
   successfully train with a parallel corpus you must have at least <b>5,000 parallel
   sentences</b> in your corpus.

   You can have a <b>maxium of 10 custom models per language pair</b>.
 @param base_model_id [String] The model ID of the model to use as the base for customization. To see available
   models, use the `List models` method. Usually all IBM provided models are
   customizable. In addition, all your models that have been created via parallel
   corpus customization, can be further customized with a forced glossary.
 @param forced_glossary [File] A TMX file with your customizations. The customizations in the file completely
   overwrite the domain translaton data, including high frequency or high confidence
   phrase translations. You can upload only one glossary with a file size less than
   10 MB per call. A forced glossary should contain single words or short phrases.
 @param parallel_corpus [File] A TMX file with parallel sentences for source and target language. You can upload
   multiple parallel_corpus files in one request. All uploaded parallel_corpus files
   combined, your parallel corpus must contain at least 5,000 parallel sentences to
   train successfully.
 @param name [String] An optional model name that you can use to identify the model. Valid characters
   are letters, numbers, dashes, underscores, spaces and apostrophes. The maximum
   length is 32 characters.
 @return [IBMCloudSdkCore::DetailedResponse] A `IBMCloudSdkCore::DetailedResponse` object representing the response.