{"record":{"id":"daf90f608df1932b","repo":"microsoft/semantic-kernel","slug":"maximumtokens","errorCode":null,"errorMessage":"MaximumTokens","messagePattern":"MaximumTokens","errorType":"validation","errorClass":"ArgumentOutOfRangeException","httpStatus":null,"severity":"error","filePath":"dotnet/src/Connectors/Connectors.Onnx/BertOnnxOptions.cs","lineNumber":29,"sourceCode":"    private int _maximumTokens = 512;\n    private string _clsToken = \"[CLS]\";\n    private string _unknownToken = \"[UNK]\";\n    private string _sepToken = \"[SEP]\";\n    private string _padToken = \"[PAD]\";\n    private EmbeddingPoolingMode _poolingMode = EmbeddingPoolingMode.Mean;\n\n    /// <summary>Gets or sets whether the vocabulary employed by the model is case-sensitive.</summary>\n    public bool CaseSensitive { get; init; } = false;\n\n    /// <summary>Gets or sets the maximum number of tokens to encode. Defaults to 512.</summary>\n    public int MaximumTokens\n    {\n        get => this._maximumTokens;\n        init\n        {\n            if (value < 1)\n            {\n                throw new ArgumentOutOfRangeException(nameof(this.MaximumTokens));\n            }\n\n            this._maximumTokens = value;\n        }\n    }\n\n    /// <summary>Gets or sets the cls token. Defaults to \"[CLS]\".</summary>\n    public string ClsToken\n    {\n        get => this._clsToken;\n        init\n        {\n            Verify.NotNullOrWhiteSpace(value);\n            this._clsToken = value;\n        }\n    }\n\n    /// <summary>Gets or sets the unknown token. Defaults to \"[UNK]\".</summary>","sourceCodeStart":11,"sourceCodeEnd":47,"githubUrl":"https://github.com/microsoft/semantic-kernel/blob/c028a0c7dc4f0814cdcbaba9d998f187a41197bf/dotnet/src/Connectors/Connectors.Onnx/BertOnnxOptions.cs#L11-L47","documentation":"Thrown as an ArgumentOutOfRangeException during BertOnnxOptions initialization when the MaximumTokens property is set to a value less than 1. BERT models require at least one token to encode; zero or negative values are meaningless. The property uses an init-only setter that validates on construction.","triggerScenarios":"Setting BertOnnxOptions.MaximumTokens to 0 or a negative value, or loading a configuration that deserializes to 0 (e.g., a missing or empty config key that defaults to 0).","commonSituations":"Configuration file with a missing or blank MaximumTokens value that parses to 0; dynamically computing token limits from a ratio that rounds down to 0; copy-paste error from a template.","solutions":["Set MaximumTokens to a positive integer (the default is 512).","Validate configuration values before assigning them to BertOnnxOptions.","If computing dynamically, clamp to a minimum of 1: Math.Max(1, computedValue)."],"exampleFix":"// before\nvar options = new BertOnnxOptions { MaximumTokens = 0 };\n\n// after\nvar options = new BertOnnxOptions { MaximumTokens = 512 };","handlingStrategy":"validation","validationCode":"int maxTokens = config.GetValue<int>(\"Bert:MaximumTokens\");\nif (maxTokens < 1) maxTokens = 512; // safe default","typeGuard":"static bool IsValidMaxTokens(int value) => value >= 1;","tryCatchPattern":null,"preventionTips":["Validate configuration values before assigning to options.","Clamp computed values: Math.Max(1, computed).","Use sensible defaults in config files."],"tags":["onnx","bert","configuration","argument-out-of-range"],"backgroundTag":null,"analyzedSha":"c028a0c7dc4f0814cdcbaba9d998f187a41197bf","analyzedAt":"2026-08-13T13:48:05.040Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}