<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Documentation – Sampler parameters</title>
    <link>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/</link>
    <description>Recent content in Sampler parameters on Documentation</description>
    <generator>Hugo -- gohugo.io</generator>
    <lastBuildDate>Thu, 23 Apr 2026 00:00:00 +0000</lastBuildDate>
    
	  <atom:link href="https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Net: Temperature</title>
      <link>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/temperature/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/temperature/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;Temperature&lt;/code&gt; scales the model&amp;rsquo;s logits (unnormalized probabilities) before sampling. Lower temperature sharpens the distribution toward the most likely token; higher temperature flattens it, making rare tokens more competitive.&lt;/p&gt;
&lt;h2 id=&#34;quick-reference&#34;&gt;Quick reference&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;float&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.7&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Range&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.0&lt;/code&gt; and above (typical &lt;code&gt;0.0&lt;/code&gt; – &lt;code&gt;1.5&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Core sampling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Field on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SamplerParameters.Temperature&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;what-it-does&#34;&gt;What it does&lt;/h2&gt;
&lt;p&gt;Each generation step produces a vector of logits — one value per vocabulary token. The engine divides every logit by &lt;code&gt;Temperature&lt;/code&gt; before applying softmax:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;At &lt;code&gt;Temperature = 1.0&lt;/code&gt;, the softmax is unchanged; the model samples from its native distribution.&lt;/li&gt;
&lt;li&gt;Below &lt;code&gt;1.0&lt;/code&gt;, differences between logits are magnified. The top tokens become more likely; rare tokens are suppressed. At the limit &lt;code&gt;Temperature = 0.0&lt;/code&gt;, the engine picks the single highest-logit token every step (greedy decoding).&lt;/li&gt;
&lt;li&gt;Above &lt;code&gt;1.0&lt;/code&gt;, logits flatten. The top token&amp;rsquo;s advantage shrinks; tail tokens gain relative probability. At high temperatures, output becomes increasingly random.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Temperature&lt;/code&gt; runs before all downstream filters (&lt;code&gt;TopP&lt;/code&gt;, &lt;code&gt;TopK&lt;/code&gt;, &lt;code&gt;MinP&lt;/code&gt;). A combination of low temperature and tight &lt;code&gt;TopP&lt;/code&gt; produces very deterministic output; high temperature with wide filters produces creative, unpredictable output.&lt;/p&gt;
&lt;h2 id=&#34;when-to-change-it&#34;&gt;When to change it&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Fully deterministic, reproducible output&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.0&lt;/code&gt; (greedy; &lt;code&gt;Seed&lt;/code&gt; becomes irrelevant)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Precise tasks — code, structured data, classification&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.1&lt;/code&gt; – &lt;code&gt;0.3&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;General-purpose chat (default balance)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.7&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Creative writing, brainstorming&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.8&lt;/code&gt; – &lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maximum variety, risk of incoherence&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;gt; 1.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Temperature trades accuracy for variety. On factual questions, high temperature increases hallucination rate. On creative tasks, low temperature produces dull, repetitive output.&lt;/p&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;Aspose.LLM&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;Aspose.LLM.Abstractions.Parameters.Presets&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;

&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Qwen25Preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Temperature&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.2f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// precise, low-variety output
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AsposeLLMApi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SendMessageAsync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;List three primes under 20.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;Console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;// Output: 2, 3, 5.
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For a fully reproducible run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Temperature&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.0f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Seed&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;42&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// seed is ignored when Temperature == 0
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;interactions&#34;&gt;Interactions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-p/&#34;&gt;&lt;code&gt;TopP&lt;/code&gt;&lt;/a&gt; — applies after temperature to trim the tail.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-k/&#34;&gt;&lt;code&gt;TopK&lt;/code&gt;&lt;/a&gt; — hard cap on candidate count after temperature.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/min-p/&#34;&gt;&lt;code&gt;MinP&lt;/code&gt;&lt;/a&gt; — minimum relative probability after temperature.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/seed/&#34;&gt;&lt;code&gt;Seed&lt;/code&gt;&lt;/a&gt; — irrelevant when &lt;code&gt;Temperature = 0&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat/&#34;&gt;&lt;code&gt;Mirostat&lt;/code&gt;&lt;/a&gt; — when active, adaptively adjusts entropy and bypasses &lt;code&gt;Temperature&lt;/code&gt; tuning.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dynatemp-range/&#34;&gt;&lt;code&gt;DynatempRange&lt;/code&gt;&lt;/a&gt; — dynamically varies &lt;code&gt;Temperature&lt;/code&gt; per step based on entropy.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/&#34;&gt;Sampler parameters hub&lt;/a&gt; — all sampler knobs at a glance.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/how-to/tune-for-speed-vs-quality/&#34;&gt;Tune for speed vs quality&lt;/a&gt; — where &lt;code&gt;Temperature&lt;/code&gt; sits in the trade-off.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/troubleshooting/garbled-output/&#34;&gt;Garbled output troubleshooting&lt;/a&gt; — when high temperature causes incoherence.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Net: TopP</title>
      <link>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-p/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-p/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;TopP&lt;/code&gt; implements &lt;strong&gt;nucleus sampling&lt;/strong&gt;. At each generation step, tokens are sorted by probability and the engine keeps only the smallest set whose cumulative probability is at least &lt;code&gt;TopP&lt;/code&gt;. Tokens outside that nucleus are discarded before sampling.&lt;/p&gt;
&lt;h2 id=&#34;quick-reference&#34;&gt;Quick reference&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;float&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.9&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Range&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.0&lt;/code&gt; – &lt;code&gt;1.0&lt;/code&gt; (values ≥ &lt;code&gt;1.0&lt;/code&gt; disable the filter)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Core sampling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Field on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SamplerParameters.TopP&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;what-it-does&#34;&gt;What it does&lt;/h2&gt;
&lt;p&gt;After &lt;code&gt;Temperature&lt;/code&gt; scales the distribution, sort tokens by probability descending. Walk the sorted list accumulating probability. Stop when the running sum reaches &lt;code&gt;TopP&lt;/code&gt;. Every token past that cutoff is removed; the remaining tokens are renormalized and sampled from.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;At &lt;code&gt;TopP = 1.0&lt;/code&gt;, no tokens are removed — the filter is effectively off.&lt;/li&gt;
&lt;li&gt;At &lt;code&gt;TopP = 0.9&lt;/code&gt; (default), the engine keeps ~90 % of the probability mass. On a peaked distribution this is 2-5 tokens; on a flat distribution it can be 50+.&lt;/li&gt;
&lt;li&gt;At &lt;code&gt;TopP = 0.5&lt;/code&gt;, only the dominant half of the mass survives — tighter, more deterministic output.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;TopP&lt;/code&gt; is probability-aware: on a confident step (one token at 0.95 probability) it keeps only that one token; on an uncertain step (many comparable tokens) it keeps a larger set.&lt;/p&gt;
&lt;h2 id=&#34;when-to-change-it&#34;&gt;When to change it&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Disabled (rely on &lt;code&gt;TopK&lt;/code&gt; + &lt;code&gt;MinP&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Creative output with some variety&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.95&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Balanced general-purpose chat (default)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.9&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Conservative, precise output&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.7&lt;/code&gt; – &lt;code&gt;0.8&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Very tight, near-greedy&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.5&lt;/code&gt; – &lt;code&gt;0.6&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Lower &lt;code&gt;TopP&lt;/code&gt; excludes more of the tail — output is more predictable but less varied. The default &lt;code&gt;0.9&lt;/code&gt; is a broadly accepted balance.&lt;/p&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Qwen25Preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TopP&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.95f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// keep a bit more of the tail for creativity
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AsposeLLMApi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SendMessageAsync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Suggest a name for a coffee shop.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;Console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For precision work:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Temperature&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.2f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TopP&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.8f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;// Narrow both dimensions — precise and deterministic.
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;interactions&#34;&gt;Interactions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/temperature/&#34;&gt;&lt;code&gt;Temperature&lt;/code&gt;&lt;/a&gt; — applied before &lt;code&gt;TopP&lt;/code&gt;. Very low &lt;code&gt;Temperature&lt;/code&gt; + loose &lt;code&gt;TopP&lt;/code&gt; still produces near-greedy output.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-k/&#34;&gt;&lt;code&gt;TopK&lt;/code&gt;&lt;/a&gt; — stacks with &lt;code&gt;TopP&lt;/code&gt;. The final candidate set is the intersection.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/min-p/&#34;&gt;&lt;code&gt;MinP&lt;/code&gt;&lt;/a&gt; — complements &lt;code&gt;TopP&lt;/code&gt; on the tail; both can be active.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/typical-p/&#34;&gt;&lt;code&gt;TypicalP&lt;/code&gt;&lt;/a&gt; — alternative to &lt;code&gt;TopP&lt;/code&gt; based on local typicality.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/min-keep/&#34;&gt;&lt;code&gt;MinKeep&lt;/code&gt;&lt;/a&gt; — floor on candidate count; &lt;code&gt;TopP&lt;/code&gt; never cuts below &lt;code&gt;MinKeep&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat/&#34;&gt;&lt;code&gt;Mirostat&lt;/code&gt;&lt;/a&gt; — bypasses &lt;code&gt;TopP&lt;/code&gt; when active.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/&#34;&gt;Sampler parameters hub&lt;/a&gt; — all sampler knobs at a glance.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/temperature/&#34;&gt;Temperature&lt;/a&gt; — the partner knob that runs before &lt;code&gt;TopP&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/min-p/&#34;&gt;MinP&lt;/a&gt; — another probability-relative cutoff.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Net: TopK</title>
      <link>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-k/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-k/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;TopK&lt;/code&gt; caps the number of candidate tokens the sampler considers at each step. After &lt;code&gt;Temperature&lt;/code&gt;, the engine sorts tokens by probability and keeps only the top &lt;code&gt;TopK&lt;/code&gt; entries.&lt;/p&gt;
&lt;h2 id=&#34;quick-reference&#34;&gt;Quick reference&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;int&lt;/code&gt; (documented as &lt;code&gt;float&lt;/code&gt; in the SDK class, but used as integer count)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;40&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Range&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0&lt;/code&gt; disables; &lt;code&gt;1&lt;/code&gt; = greedy; typical &lt;code&gt;10&lt;/code&gt; – &lt;code&gt;100&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Core sampling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Field on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SamplerParameters.TopK&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;what-it-does&#34;&gt;What it does&lt;/h2&gt;
&lt;p&gt;Sort the distribution by probability descending. Take the first &lt;code&gt;TopK&lt;/code&gt; tokens. Discard everything else. The remaining tokens are renormalized and passed downstream.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;TopK = 0&lt;/code&gt; — filter is disabled (or interpreted as unlimited by &lt;code&gt;llama.cpp&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TopK = 1&lt;/code&gt; — greedy. Only the single highest-probability token survives regardless of distribution shape.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TopK = 40&lt;/code&gt; (default) — a cap that leaves room for diversity while excluding the long tail.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Unlike &lt;code&gt;TopP&lt;/code&gt;, &lt;code&gt;TopK&lt;/code&gt; is probability-blind — it always keeps exactly &lt;code&gt;TopK&lt;/code&gt; tokens, even if the distribution is tightly peaked on one token and 39 runner-ups are all nearly zero.&lt;/p&gt;
&lt;h2 id=&#34;when-to-change-it&#34;&gt;When to change it&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Disabled (rely on &lt;code&gt;TopP&lt;/code&gt; + &lt;code&gt;MinP&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0&lt;/code&gt; (or set very large, e.g., &lt;code&gt;100000&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Greedy-like, single candidate&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Very conservative&lt;/td&gt;
&lt;td&gt;&lt;code&gt;10&lt;/code&gt; – &lt;code&gt;20&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Balanced default&lt;/td&gt;
&lt;td&gt;&lt;code&gt;40&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Creative, wide pool&lt;/td&gt;
&lt;td&gt;&lt;code&gt;80&lt;/code&gt; – &lt;code&gt;100&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Most users leave &lt;code&gt;TopK = 40&lt;/code&gt; and tune &lt;code&gt;TopP&lt;/code&gt; instead. &lt;code&gt;TopK&lt;/code&gt; is a safety net that prevents the sampler from ever considering extremely rare tokens.&lt;/p&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Qwen25Preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TopK&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// conservative candidate pool
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AsposeLLMApi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SendMessageAsync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Write one short haiku about rain.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;Console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Combining with &lt;code&gt;TopP&lt;/code&gt; for fine control:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TopK&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;40&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TopP&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.9f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;// Final candidate set is the intersection — whichever is stricter per step.
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;interactions&#34;&gt;Interactions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/temperature/&#34;&gt;&lt;code&gt;Temperature&lt;/code&gt;&lt;/a&gt; — applied before &lt;code&gt;TopK&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-p/&#34;&gt;&lt;code&gt;TopP&lt;/code&gt;&lt;/a&gt; — both active filters stack; sampling happens over the intersection.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/min-p/&#34;&gt;&lt;code&gt;MinP&lt;/code&gt;&lt;/a&gt; — can further thin the candidate pool.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/min-keep/&#34;&gt;&lt;code&gt;MinKeep&lt;/code&gt;&lt;/a&gt; — floor; &lt;code&gt;TopK&lt;/code&gt; never cuts below &lt;code&gt;MinKeep&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat/&#34;&gt;&lt;code&gt;Mirostat&lt;/code&gt;&lt;/a&gt; — bypasses &lt;code&gt;TopK&lt;/code&gt; when active.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/&#34;&gt;Sampler parameters hub&lt;/a&gt; — all sampler knobs at a glance.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-p/&#34;&gt;TopP&lt;/a&gt; — the probability-aware counterpart.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/min-p/&#34;&gt;MinP&lt;/a&gt; — another truncation strategy.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Net: MinP</title>
      <link>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/min-p/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/min-p/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;MinP&lt;/code&gt; defines a minimum probability threshold &lt;strong&gt;relative to the top token&lt;/strong&gt;. Any candidate whose probability is below &lt;code&gt;MinP × p(top)&lt;/code&gt; is discarded.&lt;/p&gt;
&lt;h2 id=&#34;quick-reference&#34;&gt;Quick reference&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;float&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.05&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Range&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.0&lt;/code&gt; – &lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Core sampling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Field on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SamplerParameters.MinP&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;what-it-does&#34;&gt;What it does&lt;/h2&gt;
&lt;p&gt;After the other filters run, compute the top candidate&amp;rsquo;s probability &lt;code&gt;p_max&lt;/code&gt;. For every remaining token, check if its probability is at least &lt;code&gt;MinP × p_max&lt;/code&gt;. If not, discard.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;MinP = 0.0&lt;/code&gt; — filter disabled.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MinP = 0.05&lt;/code&gt; (default) — keep tokens at 5 % of the top token&amp;rsquo;s probability or higher.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MinP = 0.1&lt;/code&gt; — keep tokens at 10 % or higher (stricter).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Unlike &lt;code&gt;TopP&lt;/code&gt; (which is cumulative-mass aware) and &lt;code&gt;TopK&lt;/code&gt; (which is count aware), &lt;code&gt;MinP&lt;/code&gt; is relative-to-top aware. It adapts to distribution shape differently: on a peaked distribution it keeps fewer tokens; on a flat distribution it keeps more.&lt;/p&gt;
&lt;h2 id=&#34;when-to-change-it&#34;&gt;When to change it&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Disabled&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Loose tail retention&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.02&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Default balance&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.05&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Conservative, drops more tail&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.1&lt;/code&gt; – &lt;code&gt;0.15&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Some users recommend &lt;code&gt;MinP&lt;/code&gt; as a replacement for &lt;code&gt;TopP&lt;/code&gt; — simpler to reason about, less sensitive to vocabulary size. The default &lt;code&gt;0.05&lt;/code&gt; is a conservative, broadly safe value.&lt;/p&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Qwen25Preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MinP&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.1f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// stricter tail cutoff
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AsposeLLMApi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SendMessageAsync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Describe today&amp;#39;s weather in three words.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;Console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Creative writing with wider tail:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MinP&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.02f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Temperature&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.9f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;// More diverse sampling, still filtered against very-low-probability tokens.
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;interactions&#34;&gt;Interactions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/temperature/&#34;&gt;&lt;code&gt;Temperature&lt;/code&gt;&lt;/a&gt; — applied before &lt;code&gt;MinP&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-p/&#34;&gt;&lt;code&gt;TopP&lt;/code&gt;&lt;/a&gt; — can coexist; final candidate set respects both.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-k/&#34;&gt;&lt;code&gt;TopK&lt;/code&gt;&lt;/a&gt; — count-based cap; stacks with &lt;code&gt;MinP&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/min-keep/&#34;&gt;&lt;code&gt;MinKeep&lt;/code&gt;&lt;/a&gt; — floor; &lt;code&gt;MinP&lt;/code&gt; never cuts below &lt;code&gt;MinKeep&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat/&#34;&gt;&lt;code&gt;Mirostat&lt;/code&gt;&lt;/a&gt; — bypasses &lt;code&gt;MinP&lt;/code&gt; when active.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/&#34;&gt;Sampler parameters hub&lt;/a&gt; — all sampler knobs at a glance.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-p/&#34;&gt;TopP&lt;/a&gt; — cumulative-mass cousin of &lt;code&gt;MinP&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-k/&#34;&gt;TopK&lt;/a&gt; — count-based cap.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Net: Seed</title>
      <link>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/seed/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/seed/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;Seed&lt;/code&gt; controls the random number generator used for stochastic sampling. A fixed integer makes generation reproducible — the same prompt with the same model and the same parameters produces the same output. The default sentinel maps to a time-based seed, giving non-deterministic output on every run.&lt;/p&gt;
&lt;h2 id=&#34;quick-reference&#34;&gt;Quick reference&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0xFFFFFFFF&lt;/code&gt; (sentinel — time-based seed inside llama.cpp)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Range&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Any &lt;code&gt;int&lt;/code&gt; value; default sentinel is a signed-int reinterpretation of &lt;code&gt;0xFFFFFFFF&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Core sampling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Field on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SamplerParameters.Seed&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;what-it-does&#34;&gt;What it does&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Seed&lt;/code&gt; initializes the sampler&amp;rsquo;s pseudo-random number generator. The RNG drives every stochastic choice — which token to pick from the candidate pool when multiple tokens survive filtering.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A specific integer (&lt;code&gt;42&lt;/code&gt;, &lt;code&gt;12345&lt;/code&gt;, etc.) — deterministic. Two runs with the same seed and identical parameters produce identical token sequences.&lt;/li&gt;
&lt;li&gt;The default sentinel &lt;code&gt;0xFFFFFFFF&lt;/code&gt; — &lt;code&gt;llama.cpp&lt;/code&gt; substitutes a time-based seed. Output varies per run.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Seed&lt;/code&gt; only matters when sampling is actually stochastic. At &lt;code&gt;Temperature = 0&lt;/code&gt; the sampler is greedy (always picks the top token), and &lt;code&gt;Seed&lt;/code&gt; has no effect.&lt;/p&gt;
&lt;h2 id=&#34;when-to-change-it&#34;&gt;When to change it&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Default non-deterministic behavior&lt;/td&gt;
&lt;td&gt;&lt;code&gt;unchecked((int)0xFFFFFFFF)&lt;/code&gt; (default)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reproducible tests and benchmarks&lt;/td&gt;
&lt;td&gt;A fixed &lt;code&gt;int&lt;/code&gt;, e.g., &lt;code&gt;42&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Per-request seeding (rotate value per request)&lt;/td&gt;
&lt;td&gt;Pass a computed &lt;code&gt;int&lt;/code&gt; from your caller&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Set &lt;code&gt;Seed&lt;/code&gt; when writing tests that assert on specific output, or when building regression suites that catch sampling drift across SDK versions.&lt;/p&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Qwen25Preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Temperature&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.7f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Seed&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;42&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;

&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AsposeLLMApi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reply1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SendMessageAsync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Write one short sentence about rain.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reply2&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SendMessageAsync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Write one short sentence about rain.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;// reply1 and reply2 are identical because Seed is fixed and history is the same.
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For deterministic single-request output:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Temperature&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.0f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;// Temperature 0 = greedy; Seed becomes irrelevant.
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;interactions&#34;&gt;Interactions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/temperature/&#34;&gt;&lt;code&gt;Temperature&lt;/code&gt;&lt;/a&gt; — at &lt;code&gt;Temperature = 0&lt;/code&gt;, &lt;code&gt;Seed&lt;/code&gt; has no effect.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat/&#34;&gt;&lt;code&gt;Mirostat&lt;/code&gt;&lt;/a&gt; — uses its own adaptive process; &lt;code&gt;Seed&lt;/code&gt; still affects the underlying RNG but the entropy target dominates.&lt;/li&gt;
&lt;li&gt;Session history — a fixed &lt;code&gt;Seed&lt;/code&gt; only produces identical output when the entire preceding history is identical. A fresh session and a loaded session with the same history will both honor the seed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;notes&#34;&gt;Notes&lt;/h2&gt;
&lt;p&gt;Reproducibility is deterministic within the same SDK version and &lt;code&gt;BinaryManagerParameters.ReleaseTag&lt;/code&gt;. Upgrading the SDK or the llama.cpp release tag may shift token sequences slightly even with the same &lt;code&gt;Seed&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/&#34;&gt;Sampler parameters hub&lt;/a&gt; — all sampler knobs at a glance.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/temperature/&#34;&gt;Temperature&lt;/a&gt; — the primary randomness knob.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/session-persistence/portability/&#34;&gt;Session persistence portability&lt;/a&gt; — interaction between seeding and restored sessions.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Net: MinKeep</title>
      <link>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/min-keep/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/min-keep/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;MinKeep&lt;/code&gt; sets a floor on the number of candidate tokens that survive after every filter (&lt;code&gt;TopK&lt;/code&gt;, &lt;code&gt;TopP&lt;/code&gt;, &lt;code&gt;MinP&lt;/code&gt;, &lt;code&gt;TypicalP&lt;/code&gt;, etc.) runs. If filters would leave fewer than &lt;code&gt;MinKeep&lt;/code&gt; tokens, the engine widens them until at least &lt;code&gt;MinKeep&lt;/code&gt; tokens remain.&lt;/p&gt;
&lt;h2 id=&#34;quick-reference&#34;&gt;Quick reference&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Range&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1&lt;/code&gt; and above&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Safety / filter floor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Field on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SamplerParameters.MinKeep&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;what-it-does&#34;&gt;What it does&lt;/h2&gt;
&lt;p&gt;After all filters run, count the surviving candidates. If the count is below &lt;code&gt;MinKeep&lt;/code&gt;, the engine relaxes the filters to bring it back up to &lt;code&gt;MinKeep&lt;/code&gt; — typically by reverting the last applied filter or by keeping the top-&lt;code&gt;MinKeep&lt;/code&gt; candidates regardless of probability.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;MinKeep = 1&lt;/code&gt; (default) — guarantees at least one token survives. Safe default; prevents the pathological case where every filter combines to produce zero candidates.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MinKeep = 5&lt;/code&gt; — always keep at least five candidates. Adds variety floor at the cost of filter tightness.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;MinKeep&lt;/code&gt; is a backstop rather than a primary tuning knob. Most users leave it at the default.&lt;/p&gt;
&lt;h2 id=&#34;when-to-change-it&#34;&gt;When to change it&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Default safe floor&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Guarantee variety even under strict filters&lt;/td&gt;
&lt;td&gt;&lt;code&gt;3&lt;/code&gt; – &lt;code&gt;5&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Very aggressive tightness with unusual filter combos&lt;/td&gt;
&lt;td&gt;Keep at &lt;code&gt;1&lt;/code&gt; or lower&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Raising &lt;code&gt;MinKeep&lt;/code&gt; effectively weakens the other filters in corner cases where they combine too tightly. Lowering is not useful — &lt;code&gt;1&lt;/code&gt; is already the minimum meaningful value.&lt;/p&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Qwen25Preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TopK&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;       &lt;span class=&#34;c1&#34;&gt;// tight
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TopP&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.3f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;    &lt;span class=&#34;c1&#34;&gt;// tight
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MinP&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.2f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;    &lt;span class=&#34;c1&#34;&gt;// tight
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MinKeep&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;    &lt;span class=&#34;c1&#34;&gt;// but at least 3 candidates always survive
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AsposeLLMApi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;interactions&#34;&gt;Interactions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-k/&#34;&gt;&lt;code&gt;TopK&lt;/code&gt;&lt;/a&gt; — &lt;code&gt;MinKeep&lt;/code&gt; floors the candidate count regardless.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-p/&#34;&gt;&lt;code&gt;TopP&lt;/code&gt;&lt;/a&gt; — same — nucleus can&amp;rsquo;t cut below &lt;code&gt;MinKeep&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/min-p/&#34;&gt;&lt;code&gt;MinP&lt;/code&gt;&lt;/a&gt; — same.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/typical-p/&#34;&gt;&lt;code&gt;TypicalP&lt;/code&gt;&lt;/a&gt; — same.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat/&#34;&gt;&lt;code&gt;Mirostat&lt;/code&gt;&lt;/a&gt; — uses its own candidate-management algorithm; &lt;code&gt;MinKeep&lt;/code&gt; is not relevant when Mirostat is active.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/&#34;&gt;Sampler parameters hub&lt;/a&gt; — all sampler knobs at a glance.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-k/&#34;&gt;TopK&lt;/a&gt; — count-based filter that respects &lt;code&gt;MinKeep&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-p/&#34;&gt;TopP&lt;/a&gt; — cumulative-mass filter that respects &lt;code&gt;MinKeep&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Net: TypicalP</title>
      <link>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/typical-p/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/typical-p/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;TypicalP&lt;/code&gt; enables &lt;strong&gt;locally-typical sampling&lt;/strong&gt;. Instead of keeping the most likely tokens (&lt;code&gt;TopP&lt;/code&gt;) or the top count (&lt;code&gt;TopK&lt;/code&gt;), this filter keeps tokens whose log-probability is close to the expected entropy of the distribution at that step.&lt;/p&gt;
&lt;h2 id=&#34;quick-reference&#34;&gt;Quick reference&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;float&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-1.0&lt;/code&gt; (disabled)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Range&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.0&lt;/code&gt; – &lt;code&gt;1.0&lt;/code&gt; enables; &lt;code&gt;≤ 0&lt;/code&gt; disables&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Advanced filter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Field on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SamplerParameters.TypicalP&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;what-it-does&#34;&gt;What it does&lt;/h2&gt;
&lt;p&gt;Locally-typical sampling is an alternative tail-trimming strategy based on information theory. For each token, the engine computes how &amp;ldquo;typical&amp;rdquo; its log-probability is relative to the distribution&amp;rsquo;s expected entropy. Tokens whose log-probability deviates too far from the expectation — either too high or too low — are discarded, and the engine keeps tokens whose cumulative typicality reaches &lt;code&gt;TypicalP&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;TypicalP = -1&lt;/code&gt; (default) — disabled.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TypicalP = 0.95&lt;/code&gt; — keep tokens covering 95 % of the typical mass.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TypicalP = 0.5&lt;/code&gt; — keep only very-typical tokens; tighter than nucleus sampling at the same threshold.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Locally-typical sampling tends to produce output that &amp;ldquo;sounds like the training distribution&amp;rdquo; — less repetitive than greedy, less random than high-temperature sampling.&lt;/p&gt;
&lt;h2 id=&#34;when-to-change-it&#34;&gt;When to change it&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Default (disabled)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-1.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Alternative to &lt;code&gt;TopP&lt;/code&gt; for naturalness&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.95&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Experiment with information-theoretic sampling&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.5&lt;/code&gt; – &lt;code&gt;0.9&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Most production workloads use &lt;code&gt;TopP&lt;/code&gt; + &lt;code&gt;TopK&lt;/code&gt; + &lt;code&gt;MinP&lt;/code&gt;. &lt;code&gt;TypicalP&lt;/code&gt; is worth trying when standard filters produce repetitive output or when research / experimentation calls for it.&lt;/p&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Qwen25Preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TopP&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1.0f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;        &lt;span class=&#34;c1&#34;&gt;// disable nucleus
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TypicalP&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.95f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;   &lt;span class=&#34;c1&#34;&gt;// use locally-typical instead
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AsposeLLMApi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SendMessageAsync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Tell a short story.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;Console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;interactions&#34;&gt;Interactions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/temperature/&#34;&gt;&lt;code&gt;Temperature&lt;/code&gt;&lt;/a&gt; — applied before &lt;code&gt;TypicalP&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-p/&#34;&gt;&lt;code&gt;TopP&lt;/code&gt;&lt;/a&gt; — both can be active; most users pick one or the other.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-k/&#34;&gt;&lt;code&gt;TopK&lt;/code&gt;&lt;/a&gt; — compatible as a count cap.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/min-p/&#34;&gt;&lt;code&gt;MinP&lt;/code&gt;&lt;/a&gt; — compatible.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/min-keep/&#34;&gt;&lt;code&gt;MinKeep&lt;/code&gt;&lt;/a&gt; — floor applies.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat/&#34;&gt;&lt;code&gt;Mirostat&lt;/code&gt;&lt;/a&gt; — bypasses all standard filters including &lt;code&gt;TypicalP&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/&#34;&gt;Sampler parameters hub&lt;/a&gt; — all sampler knobs at a glance.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-p/&#34;&gt;TopP&lt;/a&gt; — the common alternative.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-n-sigma/&#34;&gt;TopNSigma&lt;/a&gt; — another experimental filter.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Net: TopNSigma</title>
      <link>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-n-sigma/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-n-sigma/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;TopNSigma&lt;/code&gt; is an experimental filter from recent &lt;code&gt;llama.cpp&lt;/code&gt; versions. It keeps only tokens whose logit is within &lt;code&gt;N&lt;/code&gt; standard deviations of the top logit, discarding the rest.&lt;/p&gt;
&lt;h2 id=&#34;quick-reference&#34;&gt;Quick reference&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;float&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-1.0&lt;/code&gt; (disabled)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Range&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;gt; 0&lt;/code&gt; enables (typical &lt;code&gt;1.0&lt;/code&gt; – &lt;code&gt;3.0&lt;/code&gt;); &lt;code&gt;≤ 0&lt;/code&gt; disables&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Advanced / experimental filter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Field on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SamplerParameters.TopNSigma&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;what-it-does&#34;&gt;What it does&lt;/h2&gt;
&lt;p&gt;Compute the standard deviation of the logit distribution at a generation step. Take the maximum logit (&lt;code&gt;logit_max&lt;/code&gt;). Keep only tokens whose logit is at least &lt;code&gt;logit_max - N × stddev&lt;/code&gt;. Discard the rest.&lt;/p&gt;
&lt;p&gt;This filter adapts automatically to distribution shape: on peaked distributions it keeps few tokens (the tail is far from the mean); on flat distributions it keeps many (the whole distribution fits within &lt;code&gt;N&lt;/code&gt; sigmas).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;TopNSigma = -1&lt;/code&gt; (default) — disabled.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TopNSigma = 1.0&lt;/code&gt; — tight; keeps only tokens very close to the top.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TopNSigma = 2.0&lt;/code&gt; — moderate; keeps tokens within two standard deviations.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TopNSigma = 3.0&lt;/code&gt; — wide; covers ~99.7 % of a normal distribution.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is a newer filter and interactions with other knobs are less well-studied than classic &lt;code&gt;TopP&lt;/code&gt; / &lt;code&gt;TopK&lt;/code&gt;. Reserve for experimentation.&lt;/p&gt;
&lt;h2 id=&#34;when-to-change-it&#34;&gt;When to change it&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Default (disabled)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-1.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Experimental usage&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1.5&lt;/code&gt; – &lt;code&gt;2.5&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Stick with &lt;code&gt;TopP&lt;/code&gt; + &lt;code&gt;TopK&lt;/code&gt; + &lt;code&gt;MinP&lt;/code&gt; for production unless you have a specific reason.&lt;/p&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Qwen25Preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TopP&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1.0f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;          &lt;span class=&#34;c1&#34;&gt;// disable nucleus
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TopK&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;             &lt;span class=&#34;c1&#34;&gt;// disable top-K
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TopNSigma&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;2.0f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;     &lt;span class=&#34;c1&#34;&gt;// use sigma-based filter instead
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AsposeLLMApi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;interactions&#34;&gt;Interactions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/temperature/&#34;&gt;&lt;code&gt;Temperature&lt;/code&gt;&lt;/a&gt; — applied before &lt;code&gt;TopNSigma&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-p/&#34;&gt;&lt;code&gt;TopP&lt;/code&gt;&lt;/a&gt; — can coexist; experimental combinations are not well-studied.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-k/&#34;&gt;&lt;code&gt;TopK&lt;/code&gt;&lt;/a&gt; — can coexist.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/min-p/&#34;&gt;&lt;code&gt;MinP&lt;/code&gt;&lt;/a&gt; — can coexist.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/min-keep/&#34;&gt;&lt;code&gt;MinKeep&lt;/code&gt;&lt;/a&gt; — floor applies.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat/&#34;&gt;&lt;code&gt;Mirostat&lt;/code&gt;&lt;/a&gt; — bypasses &lt;code&gt;TopNSigma&lt;/code&gt; when active.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/&#34;&gt;Sampler parameters hub&lt;/a&gt; — all sampler knobs at a glance.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/typical-p/&#34;&gt;TypicalP&lt;/a&gt; — another experimental filter.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-p/&#34;&gt;TopP&lt;/a&gt; — the standard alternative.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Net: PenaltyContextSize</title>
      <link>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/penalty-context-size/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/penalty-context-size/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;PenaltyContextSize&lt;/code&gt; sets the number of recent tokens considered when applying repetition, presence, and frequency penalties. Only the last &lt;code&gt;PenaltyContextSize&lt;/code&gt; tokens influence penalty calculations.&lt;/p&gt;
&lt;h2 id=&#34;quick-reference&#34;&gt;Quick reference&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-1&lt;/code&gt; (use the model&amp;rsquo;s full context size)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Range&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-1&lt;/code&gt; or positive integer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Penalty window&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Field on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SamplerParameters.PenaltyContextSize&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;what-it-does&#34;&gt;What it does&lt;/h2&gt;
&lt;p&gt;Before each sampling step, the three penalty knobs (&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/repetition-penalty/&#34;&gt;&lt;code&gt;RepetitionPenalty&lt;/code&gt;&lt;/a&gt;, &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/presence-penalty/&#34;&gt;&lt;code&gt;PresencePenalty&lt;/code&gt;&lt;/a&gt;, &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/frequency-penalty/&#34;&gt;&lt;code&gt;FrequencyPenalty&lt;/code&gt;&lt;/a&gt;) need to know which prior tokens to examine. &lt;code&gt;PenaltyContextSize&lt;/code&gt; defines that window.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;PenaltyContextSize = -1&lt;/code&gt; — use the full context (equivalent to &lt;code&gt;ContextParameters.ContextSize&lt;/code&gt;). Maximum recall; penalties apply across the entire conversation.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PenaltyContextSize = 256&lt;/code&gt; — only the last 256 tokens contribute. Penalties are local; the model can freely reuse words that appeared earlier than that.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PenaltyContextSize = 64&lt;/code&gt; — very local window; penalties essentially prevent immediate repetition only.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Narrow windows make penalties local (avoid recent verbatim repeats); wide windows make them global (avoid any mention of a token anywhere in history).&lt;/p&gt;
&lt;h2 id=&#34;when-to-change-it&#34;&gt;When to change it&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Default — penalize repetition across full context&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fresh-style writing that can revisit topics&lt;/td&gt;
&lt;td&gt;&lt;code&gt;256&lt;/code&gt; – &lt;code&gt;512&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Strict anti-repetition for short outputs&lt;/td&gt;
&lt;td&gt;&lt;code&gt;128&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Very local penalty (only consecutive repeats)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;64&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Longer conversations may benefit from a smaller penalty window so the model isn&amp;rsquo;t punished for reusing common words across a long dialogue. For short-form answers, the default &lt;code&gt;-1&lt;/code&gt; is usually fine.&lt;/p&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Qwen25Preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;PenaltyContextSize&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;256&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;RepetitionPenalty&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1.15f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;// Discourage repetition within the last 256 tokens; older history doesn&amp;#39;t trigger the penalty.
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AsposeLLMApi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;interactions&#34;&gt;Interactions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/repetition-penalty/&#34;&gt;&lt;code&gt;RepetitionPenalty&lt;/code&gt;&lt;/a&gt; — applied within this window.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/presence-penalty/&#34;&gt;&lt;code&gt;PresencePenalty&lt;/code&gt;&lt;/a&gt; — same window.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/frequency-penalty/&#34;&gt;&lt;code&gt;FrequencyPenalty&lt;/code&gt;&lt;/a&gt; — same window.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/context/context-size/&#34;&gt;&lt;code&gt;ContextParameters.ContextSize&lt;/code&gt;&lt;/a&gt; — upper bound; at &lt;code&gt;-1&lt;/code&gt;, &lt;code&gt;PenaltyContextSize&lt;/code&gt; equals this.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/&#34;&gt;Sampler parameters hub&lt;/a&gt; — all sampler knobs at a glance.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/repetition-penalty/&#34;&gt;RepetitionPenalty&lt;/a&gt; — the main penalty that uses this window.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/troubleshooting/garbled-output/&#34;&gt;Garbled output — repetition loops&lt;/a&gt; — when penalty tuning helps.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Net: RepetitionPenalty</title>
      <link>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/repetition-penalty/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/repetition-penalty/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;RepetitionPenalty&lt;/code&gt; divides the logit of any token that appeared in the recent window (see &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/penalty-context-size/&#34;&gt;&lt;code&gt;PenaltyContextSize&lt;/code&gt;&lt;/a&gt;) by the penalty value. Values above &lt;code&gt;1.0&lt;/code&gt; make recently-seen tokens less likely to be picked again.&lt;/p&gt;
&lt;h2 id=&#34;quick-reference&#34;&gt;Quick reference&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;float&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1.1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Range&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1.0&lt;/code&gt; = disabled, above &lt;code&gt;1.0&lt;/code&gt; = active&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Repetition penalty&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Field on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SamplerParameters.RepetitionPenalty&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;what-it-does&#34;&gt;What it does&lt;/h2&gt;
&lt;p&gt;For each token that appeared at least once in the penalty window, divide its logit by &lt;code&gt;RepetitionPenalty&lt;/code&gt; before sampling. The higher the penalty, the stronger the suppression.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;1.0&lt;/code&gt; — no penalty; behaves as if disabled.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;1.05&lt;/code&gt; – &lt;code&gt;1.15&lt;/code&gt; — gentle. Breaks common loop patterns without starving the sampler of basic words.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;1.2&lt;/code&gt; – &lt;code&gt;1.3&lt;/code&gt; — aggressive. Useful when the model loops persistently, but risks under-generating common words like &amp;ldquo;the&amp;rdquo; or &amp;ldquo;and&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;1.5+&lt;/code&gt; — very aggressive. The model will work hard to use different words; output quality usually drops.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;when-to-change-it&#34;&gt;When to change it&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Disabled&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Default (most chat)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1.1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Model loops occasionally&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1.15&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Model loops persistently&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1.2&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Do not change beyond 1.3 without reason&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;If raising &lt;code&gt;RepetitionPenalty&lt;/code&gt; past &lt;code&gt;1.2&lt;/code&gt; still does not solve looping, switch to &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-multiplier/&#34;&gt;&lt;code&gt;DryMultiplier&lt;/code&gt;&lt;/a&gt; (DRY) — it catches phrase-level repeats that token-level penalty misses.&lt;/p&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Qwen25Preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;RepetitionPenalty&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1.15f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;PenaltyContextSize&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;256&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;

&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AsposeLLMApi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SendMessageAsync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Describe spring in three sentences.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;Console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;interactions&#34;&gt;Interactions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/penalty-context-size/&#34;&gt;&lt;code&gt;PenaltyContextSize&lt;/code&gt;&lt;/a&gt; — window over which this penalty applies.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/presence-penalty/&#34;&gt;&lt;code&gt;PresencePenalty&lt;/code&gt;&lt;/a&gt; — alternative additive penalty; can combine.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/frequency-penalty/&#34;&gt;&lt;code&gt;FrequencyPenalty&lt;/code&gt;&lt;/a&gt; — scales with occurrence count; can combine.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-multiplier/&#34;&gt;&lt;code&gt;DryMultiplier&lt;/code&gt;&lt;/a&gt; — phrase-level anti-repetition; complementary to token-level.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat/&#34;&gt;&lt;code&gt;Mirostat&lt;/code&gt;&lt;/a&gt; — managing entropy adaptively may reduce the need for penalties.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/&#34;&gt;Sampler parameters hub&lt;/a&gt; — all sampler knobs at a glance.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/presence-penalty/&#34;&gt;PresencePenalty&lt;/a&gt; and &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/frequency-penalty/&#34;&gt;FrequencyPenalty&lt;/a&gt; — additive alternatives.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/troubleshooting/garbled-output/&#34;&gt;Garbled output troubleshooting&lt;/a&gt; — diagnosing repetition issues.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Net: PresencePenalty</title>
      <link>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/presence-penalty/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/presence-penalty/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;PresencePenalty&lt;/code&gt; is an additive penalty applied once to any token that appeared at least once in the penalty window. Unlike &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/repetition-penalty/&#34;&gt;&lt;code&gt;RepetitionPenalty&lt;/code&gt;&lt;/a&gt; (multiplicative) or &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/frequency-penalty/&#34;&gt;&lt;code&gt;FrequencyPenalty&lt;/code&gt;&lt;/a&gt; (scales with count), &lt;code&gt;PresencePenalty&lt;/code&gt; fires uniformly on first appearance.&lt;/p&gt;
&lt;h2 id=&#34;quick-reference&#34;&gt;Quick reference&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;float&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.0&lt;/code&gt; (disabled)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Range&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.0&lt;/code&gt; = disabled, typical &lt;code&gt;0.0&lt;/code&gt; – &lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Repetition penalty&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Field on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SamplerParameters.PresencePenalty&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;what-it-does&#34;&gt;What it does&lt;/h2&gt;
&lt;p&gt;For each token in the penalty window, subtract &lt;code&gt;PresencePenalty&lt;/code&gt; from its logit before sampling. The penalty is applied &lt;strong&gt;once per token&lt;/strong&gt; regardless of how often the token appeared.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;0.0&lt;/code&gt; (default) — disabled.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;0.3&lt;/code&gt; – &lt;code&gt;0.6&lt;/code&gt; — moderate push toward fresh tokens.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;0.8&lt;/code&gt; – &lt;code&gt;1.0&lt;/code&gt; — strong push; output lean heavily on new vocabulary.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;PresencePenalty&lt;/code&gt; encourages broader vocabulary without caring about repetition frequency. It pairs well with topical content that should stay within a subject but use varied terms.&lt;/p&gt;
&lt;h2 id=&#34;when-to-change-it&#34;&gt;When to change it&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Disabled&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.0&lt;/code&gt; (default)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Slightly broaden vocabulary&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.3&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Strongly encourage new words&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.6&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Push model to avoid any previously-seen vocabulary&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Unlike &lt;code&gt;RepetitionPenalty&lt;/code&gt;, &lt;code&gt;PresencePenalty&lt;/code&gt; does not care how many times a token has been used — only whether it has appeared. For volume-sensitive control, combine with &lt;code&gt;FrequencyPenalty&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Qwen25Preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;PresencePenalty&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.5f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;FrequencyPenalty&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.3f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;// Broader vocabulary; slight extra push against over-used tokens.
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AsposeLLMApi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;interactions&#34;&gt;Interactions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/penalty-context-size/&#34;&gt;&lt;code&gt;PenaltyContextSize&lt;/code&gt;&lt;/a&gt; — window over which this penalty applies.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/repetition-penalty/&#34;&gt;&lt;code&gt;RepetitionPenalty&lt;/code&gt;&lt;/a&gt; — multiplicative alternative.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/frequency-penalty/&#34;&gt;&lt;code&gt;FrequencyPenalty&lt;/code&gt;&lt;/a&gt; — scales with frequency; stacks with &lt;code&gt;PresencePenalty&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/&#34;&gt;Sampler parameters hub&lt;/a&gt; — all sampler knobs at a glance.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/frequency-penalty/&#34;&gt;FrequencyPenalty&lt;/a&gt; — companion count-based penalty.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/repetition-penalty/&#34;&gt;RepetitionPenalty&lt;/a&gt; — the multiplicative variant.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Net: FrequencyPenalty</title>
      <link>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/frequency-penalty/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/frequency-penalty/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;FrequencyPenalty&lt;/code&gt; is an additive penalty proportional to how many times each token has appeared in the penalty window. The more often a token appears, the larger the penalty.&lt;/p&gt;
&lt;h2 id=&#34;quick-reference&#34;&gt;Quick reference&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;float&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.0&lt;/code&gt; (disabled)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Range&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.0&lt;/code&gt; = disabled, typical &lt;code&gt;0.0&lt;/code&gt; – &lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Repetition penalty&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Field on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SamplerParameters.FrequencyPenalty&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;what-it-does&#34;&gt;What it does&lt;/h2&gt;
&lt;p&gt;For each token in the penalty window, compute &lt;code&gt;count × FrequencyPenalty&lt;/code&gt; and subtract that from the token&amp;rsquo;s logit. Tokens that appeared ten times get penalized ten times as hard as tokens that appeared once.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;0.0&lt;/code&gt; (default) — disabled.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;0.1&lt;/code&gt; – &lt;code&gt;0.3&lt;/code&gt; — moderate; common words stay usable but over-used ones get suppressed.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;0.5+&lt;/code&gt; — aggressive; breaks repetition but risks under-generating common function words (articles, prepositions).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;FrequencyPenalty&lt;/code&gt; is the finest-grained of the three penalties: &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/repetition-penalty/&#34;&gt;&lt;code&gt;RepetitionPenalty&lt;/code&gt;&lt;/a&gt; is binary-ish on the token, &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/presence-penalty/&#34;&gt;&lt;code&gt;PresencePenalty&lt;/code&gt;&lt;/a&gt; fires once per token, and &lt;code&gt;FrequencyPenalty&lt;/code&gt; scales with count.&lt;/p&gt;
&lt;h2 id=&#34;when-to-change-it&#34;&gt;When to change it&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Disabled&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.0&lt;/code&gt; (default)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Discourage over-used words&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.2&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Strong anti-repetition when other penalties do not suffice&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.5&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stacks with others; tune one penalty at a time&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;When experimenting, enable &lt;strong&gt;one&lt;/strong&gt; penalty at a time and raise until looping stops. Enabling all three at once with aggressive values produces awkward output.&lt;/p&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Qwen25Preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;FrequencyPenalty&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.3f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;// Over-used words get progressively suppressed.
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AsposeLLMApi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;interactions&#34;&gt;Interactions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/penalty-context-size/&#34;&gt;&lt;code&gt;PenaltyContextSize&lt;/code&gt;&lt;/a&gt; — window over which the count is measured.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/repetition-penalty/&#34;&gt;&lt;code&gt;RepetitionPenalty&lt;/code&gt;&lt;/a&gt; — multiplicative companion.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/presence-penalty/&#34;&gt;&lt;code&gt;PresencePenalty&lt;/code&gt;&lt;/a&gt; — uniform additive companion.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/&#34;&gt;Sampler parameters hub&lt;/a&gt; — all sampler knobs at a glance.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/presence-penalty/&#34;&gt;PresencePenalty&lt;/a&gt; — companion uniform penalty.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/repetition-penalty/&#34;&gt;RepetitionPenalty&lt;/a&gt; — multiplicative penalty.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Net: DynatempRange</title>
      <link>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dynatemp-range/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dynatemp-range/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;DynatempRange&lt;/code&gt; enables &lt;strong&gt;dynamic temperature&lt;/strong&gt; (dynatemp). Instead of a fixed &lt;code&gt;Temperature&lt;/code&gt;, the engine varies temperature per step based on how confident the model is at that step. Low-entropy (confident) steps drop the temperature; high-entropy (uncertain) steps raise it.&lt;/p&gt;
&lt;h2 id=&#34;quick-reference&#34;&gt;Quick reference&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;float&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.0&lt;/code&gt; (disabled)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Range&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.0&lt;/code&gt; = disabled, typical active values &lt;code&gt;0.1&lt;/code&gt; – &lt;code&gt;0.5&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Adaptive temperature&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Field on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SamplerParameters.DynatempRange&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;what-it-does&#34;&gt;What it does&lt;/h2&gt;
&lt;p&gt;At each step, &lt;code&gt;llama.cpp&lt;/code&gt; computes the Shannon entropy of the current token distribution. It then adjusts &lt;code&gt;Temperature&lt;/code&gt; within &lt;code&gt;[Temperature - DynatempRange/2, Temperature + DynatempRange/2]&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When entropy is low (model is confident about the next token), temperature drops toward the lower bound — preserves the confident choice.&lt;/li&gt;
&lt;li&gt;When entropy is high (many plausible tokens), temperature rises toward the upper bound — encourages variety where the model has no strong preference.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The exact shape of the entropy-to-temperature curve is controlled by &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dynatemp-exponent/&#34;&gt;&lt;code&gt;DynatempExponent&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DynatempRange = 0.0&lt;/code&gt; (default) — dynatemp disabled; &lt;code&gt;Temperature&lt;/code&gt; is used as-is.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DynatempRange = 0.3&lt;/code&gt; — moderate adaptive variation.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DynatempRange = 0.5&lt;/code&gt; — wide swing; near-greedy on confident steps, high variety on uncertain steps.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;when-to-change-it&#34;&gt;When to change it&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Default (disabled)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Slight adaptation&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.2&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Classical dynatemp recipe&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.3&lt;/code&gt; – &lt;code&gt;0.4&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aggressive adaptation&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.5&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Dynatemp shines on mixed-content generation (structured plus creative) where fixed &lt;code&gt;Temperature&lt;/code&gt; struggles. For pure factual tasks, leave disabled. For pure creative writing, fixed high &lt;code&gt;Temperature&lt;/code&gt; is simpler.&lt;/p&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Qwen25Preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Temperature&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.8f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;          &lt;span class=&#34;c1&#34;&gt;// mid-point
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DynatempRange&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.3f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;        &lt;span class=&#34;c1&#34;&gt;// effective range [0.65, 0.95]
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DynatempExponent&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1.0f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;     &lt;span class=&#34;c1&#34;&gt;// linear entropy-to-temperature curve
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AsposeLLMApi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;interactions&#34;&gt;Interactions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/temperature/&#34;&gt;&lt;code&gt;Temperature&lt;/code&gt;&lt;/a&gt; — the base / mid-point around which dynatemp varies.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dynatemp-exponent/&#34;&gt;&lt;code&gt;DynatempExponent&lt;/code&gt;&lt;/a&gt; — shapes the entropy-to-temperature curve.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat/&#34;&gt;&lt;code&gt;Mirostat&lt;/code&gt;&lt;/a&gt; — alternative entropy-aware sampler; do not combine.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dynatemp-exponent/&#34;&gt;DynatempExponent&lt;/a&gt; — the curve-shape knob.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/temperature/&#34;&gt;Temperature&lt;/a&gt; — the fixed baseline.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat/&#34;&gt;Mirostat&lt;/a&gt; — alternative adaptive sampler.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Net: DynatempExponent</title>
      <link>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dynatemp-exponent/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dynatemp-exponent/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;DynatempExponent&lt;/code&gt; controls the shape of the entropy-to-temperature mapping in dynamic temperature sampling. It only matters when &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dynatemp-range/&#34;&gt;&lt;code&gt;DynatempRange&lt;/code&gt;&lt;/a&gt; is enabled (non-zero).&lt;/p&gt;
&lt;h2 id=&#34;quick-reference&#34;&gt;Quick reference&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;float&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1.0&lt;/code&gt; (linear mapping)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Range&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;gt; 0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Adaptive temperature&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Field on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SamplerParameters.DynatempExponent&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;what-it-does&#34;&gt;What it does&lt;/h2&gt;
&lt;p&gt;Dynatemp maps the normalized entropy &lt;code&gt;e ∈ [0, 1]&lt;/code&gt; at each step to an offset within &lt;code&gt;DynatempRange&lt;/code&gt;. &lt;code&gt;DynatempExponent&lt;/code&gt; reshapes the mapping:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DynatempExponent = 1.0&lt;/code&gt; — linear mapping. Temperature scales proportionally with entropy.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DynatempExponent &amp;gt; 1.0&lt;/code&gt; — convex. Only very high entropy triggers significant temperature increases; medium entropy stays near the base.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DynatempExponent &amp;lt; 1.0&lt;/code&gt; — concave. Small entropy changes trigger larger temperature swings.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The exact formula from &lt;code&gt;llama.cpp&lt;/code&gt;: the step&amp;rsquo;s temperature is the base &lt;code&gt;Temperature&lt;/code&gt; adjusted by an offset proportional to &lt;code&gt;entropy^DynatempExponent&lt;/code&gt; over &lt;code&gt;DynatempRange&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;when-to-change-it&#34;&gt;When to change it&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Default linear mapping&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Only react to very uncertain steps&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1.5&lt;/code&gt; – &lt;code&gt;2.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;React to mild uncertainty&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.7&lt;/code&gt; – &lt;code&gt;0.9&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Most users leave &lt;code&gt;DynatempExponent = 1.0&lt;/code&gt;. Change only after experimenting with &lt;code&gt;DynatempRange&lt;/code&gt; alone and finding the linear mapping unsuitable for your workload.&lt;/p&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Qwen25Preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Temperature&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.7f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DynatempRange&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.3f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DynatempExponent&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1.5f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;// Temperature rises significantly only on high-entropy steps; low-to-medium
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// entropy stays close to 0.7.
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AsposeLLMApi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;interactions&#34;&gt;Interactions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dynatemp-range/&#34;&gt;&lt;code&gt;DynatempRange&lt;/code&gt;&lt;/a&gt; — must be non-zero for &lt;code&gt;DynatempExponent&lt;/code&gt; to have any effect.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/temperature/&#34;&gt;&lt;code&gt;Temperature&lt;/code&gt;&lt;/a&gt; — the base temperature dynatemp varies around.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dynatemp-range/&#34;&gt;DynatempRange&lt;/a&gt; — enables dynatemp.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/temperature/&#34;&gt;Temperature&lt;/a&gt; — the base.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/&#34;&gt;Sampler parameters hub&lt;/a&gt; — all sampler knobs.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Net: XtcProbability</title>
      <link>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/xtc-probability/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/xtc-probability/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;XtcProbability&lt;/code&gt; enables the &lt;strong&gt;XTC (eXclude Top Choices)&lt;/strong&gt; sampler. With probability &lt;code&gt;XtcProbability&lt;/code&gt; at each step, XTC removes the top candidate tokens, forcing the engine to sample from the tail. Useful for injecting diversity without raising temperature.&lt;/p&gt;
&lt;h2 id=&#34;quick-reference&#34;&gt;Quick reference&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;float&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-1.0&lt;/code&gt; (disabled)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Range&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.0&lt;/code&gt; – &lt;code&gt;1.0&lt;/code&gt;, or &lt;code&gt;-1.0&lt;/code&gt; to disable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Advanced / diversity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Field on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SamplerParameters.XtcProbability&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;what-it-does&#34;&gt;What it does&lt;/h2&gt;
&lt;p&gt;At each generation step, with probability &lt;code&gt;XtcProbability&lt;/code&gt;, XTC fires: the engine excludes all tokens whose probability is above &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/xtc-threshold/&#34;&gt;&lt;code&gt;XtcThreshold&lt;/code&gt;&lt;/a&gt;, and samples from whatever remains. This nudges the model into less-obvious paths without changing temperature.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-1.0&lt;/code&gt; (default) — disabled.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;0.1&lt;/code&gt; – &lt;code&gt;0.3&lt;/code&gt; — XTC fires on 10–30 % of steps. Mild diversity boost.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;0.5&lt;/code&gt; – &lt;code&gt;0.8&lt;/code&gt; — XTC fires often. Strong variety; risk of incoherence.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;when-to-change-it&#34;&gt;When to change it&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Default (disabled)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-1.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Light creativity boost&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.1&lt;/code&gt; – &lt;code&gt;0.2&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Alternative to high temperature&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.3&lt;/code&gt; – &lt;code&gt;0.5&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Experimental variety push&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.5+&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;XTC is a recent addition. Prefer conventional &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/temperature/&#34;&gt;&lt;code&gt;Temperature&lt;/code&gt;&lt;/a&gt; + &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-p/&#34;&gt;&lt;code&gt;TopP&lt;/code&gt;&lt;/a&gt; tuning first. Reach for XTC when you want variety specifically when the model is confident — standard sampling tightens those steps; XTC breaks them.&lt;/p&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Qwen25Preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;XtcProbability&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.2f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;XtcThreshold&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.1f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;// On ~20 % of steps, tokens above 0.1 probability are excluded.
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AsposeLLMApi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SendMessageAsync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Suggest three fictional startup names.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;Console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;interactions&#34;&gt;Interactions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/xtc-threshold/&#34;&gt;&lt;code&gt;XtcThreshold&lt;/code&gt;&lt;/a&gt; — minimum probability a token must have to be considered for exclusion.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/temperature/&#34;&gt;&lt;code&gt;Temperature&lt;/code&gt;&lt;/a&gt; — orthogonal. XTC works at any temperature.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-p/&#34;&gt;&lt;code&gt;TopP&lt;/code&gt;&lt;/a&gt; — still applied; XTC runs within what &lt;code&gt;TopP&lt;/code&gt; keeps.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/xtc-threshold/&#34;&gt;XtcThreshold&lt;/a&gt; — the probability cutoff companion.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/temperature/&#34;&gt;Temperature&lt;/a&gt; — conventional randomness knob.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/&#34;&gt;Sampler parameters hub&lt;/a&gt; — all sampler knobs.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Net: XtcThreshold</title>
      <link>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/xtc-threshold/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/xtc-threshold/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;XtcThreshold&lt;/code&gt; is the probability cutoff for XTC (eXclude Top Choices). Only tokens whose probability is &lt;strong&gt;above&lt;/strong&gt; &lt;code&gt;XtcThreshold&lt;/code&gt; are candidates for XTC exclusion. This field has no effect unless &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/xtc-probability/&#34;&gt;&lt;code&gt;XtcProbability&lt;/code&gt;&lt;/a&gt; is enabled.&lt;/p&gt;
&lt;h2 id=&#34;quick-reference&#34;&gt;Quick reference&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;float&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Range&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.0&lt;/code&gt; – &lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Advanced / diversity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Field on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SamplerParameters.XtcThreshold&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;what-it-does&#34;&gt;What it does&lt;/h2&gt;
&lt;p&gt;When XTC fires at a step, the engine excludes every token whose probability exceeds &lt;code&gt;XtcThreshold&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;XtcThreshold = 0.0&lt;/code&gt; — any token with non-zero probability can be excluded. Very aggressive.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;XtcThreshold = 0.1&lt;/code&gt; — only tokens above 10 % probability are exclusion candidates. Mild.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;XtcThreshold = 0.3&lt;/code&gt; — only dominant tokens (&amp;gt;30 % probability) get excluded. Very selective.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;XtcThreshold = 1.0&lt;/code&gt; — nothing can be excluded; XTC effectively does nothing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Raise &lt;code&gt;XtcThreshold&lt;/code&gt; when XTC is producing too much noise (excluding too many tokens); lower it for stronger diversity injection.&lt;/p&gt;
&lt;h2 id=&#34;when-to-change-it&#34;&gt;When to change it&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Default&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Target only dominant tokens&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.1&lt;/code&gt; – &lt;code&gt;0.2&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Target only near-certain tokens&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.3&lt;/code&gt; – &lt;code&gt;0.5&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Effectively disable (keep &lt;code&gt;XtcProbability&lt;/code&gt; for logging)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;code&gt;XtcThreshold&lt;/code&gt; tunes &amp;ldquo;which tokens XTC may touch&amp;rdquo;. &lt;code&gt;XtcProbability&lt;/code&gt; tunes &amp;ldquo;how often XTC runs at all&amp;rdquo;.&lt;/p&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Qwen25Preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;XtcProbability&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.3f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;XtcThreshold&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.2f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;// 30 % of steps, exclude tokens with probability &amp;gt; 20 %.
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AsposeLLMApi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;interactions&#34;&gt;Interactions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/xtc-probability/&#34;&gt;&lt;code&gt;XtcProbability&lt;/code&gt;&lt;/a&gt; — gate; &lt;code&gt;XtcThreshold&lt;/code&gt; only matters when XTC fires.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/temperature/&#34;&gt;&lt;code&gt;Temperature&lt;/code&gt;&lt;/a&gt;, &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-p/&#34;&gt;&lt;code&gt;TopP&lt;/code&gt;&lt;/a&gt;, &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-k/&#34;&gt;&lt;code&gt;TopK&lt;/code&gt;&lt;/a&gt; — apply before XTC.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/xtc-probability/&#34;&gt;XtcProbability&lt;/a&gt; — enables XTC.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/&#34;&gt;Sampler parameters hub&lt;/a&gt; — all sampler knobs.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Net: DryMultiplier</title>
      <link>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-multiplier/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-multiplier/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;DryMultiplier&lt;/code&gt; enables and scales the &lt;strong&gt;DRY (Don&amp;rsquo;t Repeat Yourself)&lt;/strong&gt; sampler. DRY detects when the model is about to produce a verbatim copy of a phrase it said earlier and applies an exponentially growing penalty to discourage the repeat.&lt;/p&gt;
&lt;h2 id=&#34;quick-reference&#34;&gt;Quick reference&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;float&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-1.0&lt;/code&gt; (disabled)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Range&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;gt; 0&lt;/code&gt; enables; typical &lt;code&gt;0.5&lt;/code&gt; – &lt;code&gt;1.5&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Phrase-level repetition penalty&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Field on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SamplerParameters.DryMultiplier&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;what-it-does&#34;&gt;What it does&lt;/h2&gt;
&lt;p&gt;DRY scans the generation window and detects consecutive-token sequences that match what the model generated earlier. When a match extends beyond &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-allowed-length/&#34;&gt;&lt;code&gt;DryAllowedLength&lt;/code&gt;&lt;/a&gt;, it applies a penalty that grows as &lt;code&gt;DryMultiplier × DryBase^(match_length - DryAllowedLength)&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DryMultiplier = -1&lt;/code&gt; (default) — disabled.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DryMultiplier = 0.8&lt;/code&gt; — classic strength recommended by the DRY paper.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DryMultiplier = 1.5+&lt;/code&gt; — aggressive; risks distorting natural common phrases.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;DRY is phrase-level, complementary to token-level &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/repetition-penalty/&#34;&gt;&lt;code&gt;RepetitionPenalty&lt;/code&gt;&lt;/a&gt;. Use it when output has entire paragraphs or sentences echoing earlier text — token-level penalties cannot catch that.&lt;/p&gt;
&lt;h2 id=&#34;when-to-change-it&#34;&gt;When to change it&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Default (disabled)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-1.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Creative writing, stop phrase repeats&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.8&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Persistent phrase loops&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1.2&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code generation&lt;/td&gt;
&lt;td&gt;Leave disabled (code naturally repeats syntax)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;DRY is often the right tool when &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/repetition-penalty/&#34;&gt;&lt;code&gt;RepetitionPenalty&lt;/code&gt;&lt;/a&gt; tuning up to &lt;code&gt;1.2&lt;/code&gt; doesn&amp;rsquo;t fix phrase-level loops. Enable DRY and tune &lt;code&gt;DryMultiplier&lt;/code&gt; + &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-allowed-length/&#34;&gt;&lt;code&gt;DryAllowedLength&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Qwen25Preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DryMultiplier&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.8f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DryBase&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1.75f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DryAllowedLength&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;

&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AsposeLLMApi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SendMessageAsync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Write an essay about patience.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;Console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;reply&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;interactions&#34;&gt;Interactions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-base/&#34;&gt;&lt;code&gt;DryBase&lt;/code&gt;&lt;/a&gt; — exponent base for growing penalty.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-allowed-length/&#34;&gt;&lt;code&gt;DryAllowedLength&lt;/code&gt;&lt;/a&gt; — minimum match length before penalty fires.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-penalty-last-n/&#34;&gt;&lt;code&gt;DryPenaltyLastN&lt;/code&gt;&lt;/a&gt; — how far back to look.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-sequence-breakers/&#34;&gt;&lt;code&gt;DrySequenceBreakers&lt;/code&gt;&lt;/a&gt; — tokens that reset the match detector.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/repetition-penalty/&#34;&gt;&lt;code&gt;RepetitionPenalty&lt;/code&gt;&lt;/a&gt; — token-level companion; both can be active.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-base/&#34;&gt;DryBase&lt;/a&gt;, &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-allowed-length/&#34;&gt;DryAllowedLength&lt;/a&gt; — the other DRY knobs.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/repetition-penalty/&#34;&gt;RepetitionPenalty&lt;/a&gt; — token-level alternative.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/troubleshooting/garbled-output/&#34;&gt;Garbled output troubleshooting&lt;/a&gt; — when to reach for DRY.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Net: DryBase</title>
      <link>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-base/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-base/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;DryBase&lt;/code&gt; is the exponent base of the DRY penalty growth formula. It determines how quickly the penalty ramps up as a repeated phrase extends. &lt;code&gt;DryBase&lt;/code&gt; only has effect when &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-multiplier/&#34;&gt;&lt;code&gt;DryMultiplier&lt;/code&gt;&lt;/a&gt; is enabled (positive).&lt;/p&gt;
&lt;h2 id=&#34;quick-reference&#34;&gt;Quick reference&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;float&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1.75&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Range&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;gt; 1.0&lt;/code&gt;; typical &lt;code&gt;1.5&lt;/code&gt; – &lt;code&gt;2.5&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Phrase-level repetition penalty&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Field on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SamplerParameters.DryBase&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;what-it-does&#34;&gt;What it does&lt;/h2&gt;
&lt;p&gt;The DRY penalty applied to a token that would extend a repeated match is:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;penalty = DryMultiplier × DryBase^(match_length - DryAllowedLength)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Larger &lt;code&gt;DryBase&lt;/code&gt; means the penalty grows faster. A 5-token match with &lt;code&gt;DryBase = 1.75&lt;/code&gt; produces &lt;code&gt;1.75^5 ≈ 16&lt;/code&gt; multiplied by &lt;code&gt;DryMultiplier&lt;/code&gt;; at &lt;code&gt;DryBase = 2.5&lt;/code&gt; the same match yields &lt;code&gt;2.5^5 ≈ 98&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DryBase = 1.5&lt;/code&gt; — gentle growth; long repeats punished but not extremely.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DryBase = 1.75&lt;/code&gt; (default) — balanced; the value recommended by the original DRY paper.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DryBase = 2.0+&lt;/code&gt; — rapid growth; even medium-length repeats are heavily penalized.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;when-to-change-it&#34;&gt;When to change it&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Default&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1.75&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gentle phrase anti-repetition&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1.5&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aggressive (model keeps finding ways to repeat)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;2.0&lt;/code&gt; – &lt;code&gt;2.5&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Most workloads leave &lt;code&gt;DryBase&lt;/code&gt; alone and tune &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-multiplier/&#34;&gt;&lt;code&gt;DryMultiplier&lt;/code&gt;&lt;/a&gt; and &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-allowed-length/&#34;&gt;&lt;code&gt;DryAllowedLength&lt;/code&gt;&lt;/a&gt;. Change &lt;code&gt;DryBase&lt;/code&gt; as a last resort if the standard combination does not stop repeats.&lt;/p&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Qwen25Preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DryMultiplier&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.8f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DryBase&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;2.0f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;    &lt;span class=&#34;c1&#34;&gt;// faster growth
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DryAllowedLength&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;

&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AsposeLLMApi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;interactions&#34;&gt;Interactions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-multiplier/&#34;&gt;&lt;code&gt;DryMultiplier&lt;/code&gt;&lt;/a&gt; — must be positive for &lt;code&gt;DryBase&lt;/code&gt; to matter.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-allowed-length/&#34;&gt;&lt;code&gt;DryAllowedLength&lt;/code&gt;&lt;/a&gt; — sets the exponent&amp;rsquo;s zero-point.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-penalty-last-n/&#34;&gt;&lt;code&gt;DryPenaltyLastN&lt;/code&gt;&lt;/a&gt; — window of history DRY scans.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-sequence-breakers/&#34;&gt;&lt;code&gt;DrySequenceBreakers&lt;/code&gt;&lt;/a&gt; — tokens that reset match detection.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-multiplier/&#34;&gt;DryMultiplier&lt;/a&gt; — enables DRY.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-allowed-length/&#34;&gt;DryAllowedLength&lt;/a&gt; — match-length threshold.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/&#34;&gt;Sampler parameters hub&lt;/a&gt; — all sampler knobs.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Net: DryAllowedLength</title>
      <link>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-allowed-length/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-allowed-length/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;DryAllowedLength&lt;/code&gt; is the minimum consecutive-token match length before the DRY penalty starts firing. Matches up to this length pass without penalty; longer matches get the exponentially growing DRY penalty.&lt;/p&gt;
&lt;h2 id=&#34;quick-reference&#34;&gt;Quick reference&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Range&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1&lt;/code&gt; and above&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Phrase-level repetition penalty&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Field on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SamplerParameters.DryAllowedLength&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;what-it-does&#34;&gt;What it does&lt;/h2&gt;
&lt;p&gt;DRY scans recent generation for consecutive-token sequences that match earlier content. Matches strictly longer than &lt;code&gt;DryAllowedLength&lt;/code&gt; trigger the penalty, which grows by &lt;code&gt;DryBase&lt;/code&gt; for each token beyond the threshold:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;penalty_factor = DryMultiplier × DryBase^(match_length - DryAllowedLength)
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DryAllowedLength = 2&lt;/code&gt; (default) — any 3+ token repeat gets penalized. Catches most phrase repeats while allowing natural short patterns.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DryAllowedLength = 3&lt;/code&gt; — allows short 3-token patterns to repeat unpenalized. Safer for code / formatted output.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DryAllowedLength = 5&lt;/code&gt; — only long repeats are penalized. Use when the default causes awkward word choices.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DryAllowedLength = 1&lt;/code&gt; — very aggressive; any 2-token match penalized.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;when-to-change-it&#34;&gt;When to change it&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Default&lt;/td&gt;
&lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code or formatted output with natural repeats&lt;/td&gt;
&lt;td&gt;&lt;code&gt;4&lt;/code&gt; – &lt;code&gt;6&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Model loops even on short phrases&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1&lt;/code&gt; – &lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Balanced creative writing&lt;/td&gt;
&lt;td&gt;&lt;code&gt;3&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;code&gt;DryAllowedLength&lt;/code&gt; is the best knob to tune when DRY starts producing strange word choices — raise it so DRY leaves short natural patterns alone.&lt;/p&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Qwen25Preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DryMultiplier&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.8f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DryAllowedLength&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;// allow short repeats
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AsposeLLMApi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;interactions&#34;&gt;Interactions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-multiplier/&#34;&gt;&lt;code&gt;DryMultiplier&lt;/code&gt;&lt;/a&gt; — must be positive for DRY to be active.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-base/&#34;&gt;&lt;code&gt;DryBase&lt;/code&gt;&lt;/a&gt; — sets how fast penalty grows beyond this length.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-sequence-breakers/&#34;&gt;&lt;code&gt;DrySequenceBreakers&lt;/code&gt;&lt;/a&gt; — tokens that reset the match counter.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-multiplier/&#34;&gt;DryMultiplier&lt;/a&gt; — enables DRY.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-base/&#34;&gt;DryBase&lt;/a&gt; — growth rate past this length.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/&#34;&gt;Sampler parameters hub&lt;/a&gt; — all sampler knobs.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Net: DryPenaltyLastN</title>
      <link>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-penalty-last-n/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-penalty-last-n/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;DryPenaltyLastN&lt;/code&gt; controls how far back DRY looks when scanning for phrase repetition. It determines the size of the generation window scanned for matches.&lt;/p&gt;
&lt;h2 id=&#34;quick-reference&#34;&gt;Quick reference&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0&lt;/code&gt; (scan all available context)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Range&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0&lt;/code&gt; = unlimited; &lt;code&gt;&amp;gt; 0&lt;/code&gt; = window size&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Phrase-level repetition penalty&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Field on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SamplerParameters.DryPenaltyLastN&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;what-it-does&#34;&gt;What it does&lt;/h2&gt;
&lt;p&gt;DRY scans the last &lt;code&gt;DryPenaltyLastN&lt;/code&gt; tokens of generation for consecutive-token sequences matching whatever the model is about to emit.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DryPenaltyLastN = 0&lt;/code&gt; (default) — scan all available tokens; no distance limit.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DryPenaltyLastN = 512&lt;/code&gt; — only the last 512 tokens are scanned for matches. Older content is ignored.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DryPenaltyLastN = 128&lt;/code&gt; — very local; catches only immediate phrase repeats.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Narrowing the window speeds up DRY scanning slightly and relaxes the constraint for long conversations where older repeats are benign.&lt;/p&gt;
&lt;h2 id=&#34;when-to-change-it&#34;&gt;When to change it&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Default (scan all)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Long conversations, focus DRY on recent output&lt;/td&gt;
&lt;td&gt;&lt;code&gt;512&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Very local enforcement&lt;/td&gt;
&lt;td&gt;&lt;code&gt;128&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Most deployments leave &lt;code&gt;DryPenaltyLastN = 0&lt;/code&gt;. Raise only if DRY is catching repeats from very old conversation history that are acceptable in your domain.&lt;/p&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Qwen25Preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DryMultiplier&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.8f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DryPenaltyLastN&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;512&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;// only scan last 512 tokens
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AsposeLLMApi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;interactions&#34;&gt;Interactions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-multiplier/&#34;&gt;&lt;code&gt;DryMultiplier&lt;/code&gt;&lt;/a&gt; — gate; &lt;code&gt;DryPenaltyLastN&lt;/code&gt; only matters when DRY is active.&lt;/li&gt;
&lt;li&gt;Other DRY knobs operate within this window.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-multiplier/&#34;&gt;DryMultiplier&lt;/a&gt; — enables DRY.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-sequence-breakers/&#34;&gt;DrySequenceBreakers&lt;/a&gt; — reset tokens.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/&#34;&gt;Sampler parameters hub&lt;/a&gt; — all sampler knobs.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Net: DrySequenceBreakers</title>
      <link>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-sequence-breakers/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-sequence-breakers/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;DrySequenceBreakers&lt;/code&gt; is the list of string tokens that reset DRY&amp;rsquo;s phrase-match detector. When DRY encounters one of these tokens, any partial match in progress is discarded.&lt;/p&gt;
&lt;h2 id=&#34;quick-reference&#34;&gt;Quick reference&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;List&amp;lt;string&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[&amp;quot;\n&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot;\&amp;quot;&amp;quot;, &amp;quot;*&amp;quot;]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Phrase-level repetition penalty&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Field on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SamplerParameters.DrySequenceBreakers&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;what-it-does&#34;&gt;What it does&lt;/h2&gt;
&lt;p&gt;DRY detects long matches by comparing the token stream against earlier tokens. When the detector encounters a &amp;ldquo;breaker&amp;rdquo; string — typically punctuation or structural markup — it treats that as the end of one phrase and the start of the next. This prevents DRY from penalizing tokens that naturally repeat across paragraph boundaries.&lt;/p&gt;
&lt;p&gt;Default breakers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;\n&amp;quot;&lt;/code&gt; — newline: paragraph boundary.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;:&amp;quot;&lt;/code&gt; — colon: list-item or header boundary.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;\&amp;quot;&amp;quot;&lt;/code&gt; — double quote: start/end of quoted text.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;*&amp;quot;&lt;/code&gt; — asterisk: markdown emphasis or list markers.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;when-to-change-it&#34;&gt;When to change it&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Default list&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[&amp;quot;\n&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot;\&amp;quot;&amp;quot;, &amp;quot;*&amp;quot;]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Markdown-heavy output&lt;/td&gt;
&lt;td&gt;Add &lt;code&gt;&amp;quot;#&amp;quot;&lt;/code&gt; for headings, &lt;code&gt;&amp;quot;-&amp;quot;&lt;/code&gt; for bullets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code generation&lt;/td&gt;
&lt;td&gt;Add &lt;code&gt;&amp;quot;{&amp;quot;&lt;/code&gt;, &lt;code&gt;&amp;quot;}&amp;quot;&lt;/code&gt;, &lt;code&gt;&amp;quot;;&amp;quot;&lt;/code&gt;, &lt;code&gt;&amp;quot;(&amp;quot;&lt;/code&gt;, &lt;code&gt;&amp;quot;)&amp;quot;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Minimal breakers — let DRY fire more aggressively across paragraphs&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[&amp;quot;\n&amp;quot;]&lt;/code&gt; or empty list&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Breakers shape what DRY considers a &amp;ldquo;phrase&amp;rdquo;. Narrowing the list makes DRY more global; widening it localizes enforcement.&lt;/p&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Qwen25Preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DryMultiplier&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.8f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DrySequenceBreakers&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;List&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
    &lt;span class=&#34;s&#34;&gt;&amp;#34;\n&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;:&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;\&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;*&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;#&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;-&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// markdown-heavy content
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;

&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AsposeLLMApi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;interactions&#34;&gt;Interactions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-multiplier/&#34;&gt;&lt;code&gt;DryMultiplier&lt;/code&gt;&lt;/a&gt; — DRY gate.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-allowed-length/&#34;&gt;&lt;code&gt;DryAllowedLength&lt;/code&gt;&lt;/a&gt; — match length threshold within a phrase boundary.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-multiplier/&#34;&gt;DryMultiplier&lt;/a&gt; — enables DRY.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dry-allowed-length/&#34;&gt;DryAllowedLength&lt;/a&gt; — length threshold.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/&#34;&gt;Sampler parameters hub&lt;/a&gt; — all sampler knobs.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Net: Mirostat</title>
      <link>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;Mirostat&lt;/code&gt; is an adaptive sampler that targets a specific output entropy (roughly perplexity) instead of relying on fixed temperature and nucleus filters. When enabled, it bypasses &lt;code&gt;Temperature&lt;/code&gt;, &lt;code&gt;TopP&lt;/code&gt;, &lt;code&gt;TopK&lt;/code&gt;, and &lt;code&gt;MinP&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;quick-reference&#34;&gt;Quick reference&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0&lt;/code&gt; (disabled)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Range&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0&lt;/code&gt; = disabled, &lt;code&gt;1&lt;/code&gt; = Mirostat 1.0, &lt;code&gt;2&lt;/code&gt; = Mirostat 2.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Adaptive sampler&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Field on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SamplerParameters.Mirostat&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;what-it-does&#34;&gt;What it does&lt;/h2&gt;
&lt;p&gt;Mirostat monitors the entropy of the output distribution and adjusts the sampling process to match a target entropy (&lt;code&gt;MirostatTau&lt;/code&gt;). Higher measured entropy → Mirostat tightens. Lower → Mirostat relaxes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Mirostat = 0&lt;/code&gt; (default) — disabled. Standard &lt;code&gt;Temperature&lt;/code&gt; + &lt;code&gt;TopP&lt;/code&gt; + &lt;code&gt;TopK&lt;/code&gt; + &lt;code&gt;MinP&lt;/code&gt; pipeline is used.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Mirostat = 1&lt;/code&gt; — Mirostat 1.0. Original algorithm from the paper.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Mirostat = 2&lt;/code&gt; — Mirostat 2.0. Simplified and usually preferred; faster convergence.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When Mirostat is enabled, the standard filters (&lt;code&gt;TopP&lt;/code&gt;, &lt;code&gt;TopK&lt;/code&gt;, &lt;code&gt;MinP&lt;/code&gt;, &lt;code&gt;TypicalP&lt;/code&gt;, &lt;code&gt;TopNSigma&lt;/code&gt;) are effectively bypassed. &lt;code&gt;Temperature&lt;/code&gt; tuning is ignored — Mirostat manages its own temperature-like adjustments internally.&lt;/p&gt;
&lt;h2 id=&#34;when-to-change-it&#34;&gt;When to change it&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Default — use standard filters&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Adaptive perplexity-targeting (preferred)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Older Mirostat 1.0 (rarely preferred)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Consider Mirostat when:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You want consistent perplexity across very long outputs.&lt;/li&gt;
&lt;li&gt;Fixed temperature produces output that is either too tight or too loose in different parts of the same generation.&lt;/li&gt;
&lt;li&gt;Research / experimentation with entropy-aware sampling.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Qwen25Preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Mirostat&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;           &lt;span class=&#34;c1&#34;&gt;// Mirostat 2.0
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MirostatTau&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;5.0f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;     &lt;span class=&#34;c1&#34;&gt;// target entropy
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MirostatEta&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.1f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;     &lt;span class=&#34;c1&#34;&gt;// learning rate
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AsposeLLMApi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;interactions&#34;&gt;Interactions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat-tau/&#34;&gt;&lt;code&gt;MirostatTau&lt;/code&gt;&lt;/a&gt; — target entropy.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat-eta/&#34;&gt;&lt;code&gt;MirostatEta&lt;/code&gt;&lt;/a&gt; — learning rate.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/temperature/&#34;&gt;&lt;code&gt;Temperature&lt;/code&gt;&lt;/a&gt;, &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-p/&#34;&gt;&lt;code&gt;TopP&lt;/code&gt;&lt;/a&gt;, &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-k/&#34;&gt;&lt;code&gt;TopK&lt;/code&gt;&lt;/a&gt;, &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/min-p/&#34;&gt;&lt;code&gt;MinP&lt;/code&gt;&lt;/a&gt;, &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/typical-p/&#34;&gt;&lt;code&gt;TypicalP&lt;/code&gt;&lt;/a&gt;, &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/top-n-sigma/&#34;&gt;&lt;code&gt;TopNSigma&lt;/code&gt;&lt;/a&gt; — all bypassed when Mirostat is active.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dynatemp-range/&#34;&gt;&lt;code&gt;DynatempRange&lt;/code&gt;&lt;/a&gt; — alternative entropy-aware sampler; do not combine.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/seed/&#34;&gt;&lt;code&gt;Seed&lt;/code&gt;&lt;/a&gt; — still affects the RNG; reproducibility works with Mirostat.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat-tau/&#34;&gt;MirostatTau&lt;/a&gt; — entropy target.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat-eta/&#34;&gt;MirostatEta&lt;/a&gt; — learning rate.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/dynatemp-range/&#34;&gt;DynatempRange&lt;/a&gt; — alternative adaptive approach.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Net: MirostatTau</title>
      <link>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat-tau/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat-tau/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;MirostatTau&lt;/code&gt; is the target entropy Mirostat tries to maintain across the output. Mirostat adjusts its sampling parameters on the fly to keep the actual output entropy close to this value.&lt;/p&gt;
&lt;h2 id=&#34;quick-reference&#34;&gt;Quick reference&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;float&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;5.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Range&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;gt; 0&lt;/code&gt;; typical &lt;code&gt;3.0&lt;/code&gt; – &lt;code&gt;8.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Adaptive sampler&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Field on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SamplerParameters.MirostatTau&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;what-it-does&#34;&gt;What it does&lt;/h2&gt;
&lt;p&gt;Entropy is measured in nats (natural-log units) over the per-step token distribution. Lower target entropy → tighter, more deterministic output. Higher target → more variety.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;MirostatTau = 3.0&lt;/code&gt; — tight. Output is focused, often close to greedy.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MirostatTau = 5.0&lt;/code&gt; (default) — balanced. Good match for general chat.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MirostatTau = 7.0+&lt;/code&gt; — looser. Output has more variety, higher perplexity.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;MirostatTau&lt;/code&gt; only matters when &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat/&#34;&gt;&lt;code&gt;Mirostat&lt;/code&gt;&lt;/a&gt; is enabled (&lt;code&gt;1&lt;/code&gt; or &lt;code&gt;2&lt;/code&gt;). Otherwise the field is ignored.&lt;/p&gt;
&lt;h2 id=&#34;when-to-change-it&#34;&gt;When to change it&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Default&lt;/td&gt;
&lt;td&gt;&lt;code&gt;5.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Precise / code / factual output&lt;/td&gt;
&lt;td&gt;&lt;code&gt;3.0&lt;/code&gt; – &lt;code&gt;4.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Creative writing&lt;/td&gt;
&lt;td&gt;&lt;code&gt;6.0&lt;/code&gt; – &lt;code&gt;8.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Qwen25Preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Mirostat&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MirostatTau&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;4.0f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;// tighter than default
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MirostatEta&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.1f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;

&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AsposeLLMApi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;interactions&#34;&gt;Interactions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat/&#34;&gt;&lt;code&gt;Mirostat&lt;/code&gt;&lt;/a&gt; — must be &lt;code&gt;1&lt;/code&gt; or &lt;code&gt;2&lt;/code&gt; for &lt;code&gt;MirostatTau&lt;/code&gt; to take effect.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat-eta/&#34;&gt;&lt;code&gt;MirostatEta&lt;/code&gt;&lt;/a&gt; — how fast Mirostat adapts toward &lt;code&gt;Tau&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat/&#34;&gt;Mirostat&lt;/a&gt; — main mode selector.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat-eta/&#34;&gt;MirostatEta&lt;/a&gt; — learning rate.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/&#34;&gt;Sampler parameters hub&lt;/a&gt; — all sampler knobs.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Net: MirostatEta</title>
      <link>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat-eta/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat-eta/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;MirostatEta&lt;/code&gt; is the learning rate of Mirostat&amp;rsquo;s adaptive loop. It controls how quickly Mirostat reacts to divergence between observed entropy and the target entropy &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat-tau/&#34;&gt;&lt;code&gt;MirostatTau&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;quick-reference&#34;&gt;Quick reference&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;float&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Range&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;gt; 0&lt;/code&gt;; typical &lt;code&gt;0.05&lt;/code&gt; – &lt;code&gt;0.3&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Adaptive sampler&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Field on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SamplerParameters.MirostatEta&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;what-it-does&#34;&gt;What it does&lt;/h2&gt;
&lt;p&gt;After each token, Mirostat computes the difference between the observed entropy and &lt;code&gt;MirostatTau&lt;/code&gt;. It scales that difference by &lt;code&gt;MirostatEta&lt;/code&gt; and adjusts its internal threshold accordingly.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;MirostatEta = 0.05&lt;/code&gt; — slow adaptation. Smoother behavior; takes longer to settle.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MirostatEta = 0.1&lt;/code&gt; (default) — balanced.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MirostatEta = 0.3&lt;/code&gt; — fast adaptation. Tighter tracking of &lt;code&gt;Tau&lt;/code&gt; but noisier.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;MirostatEta&lt;/code&gt; only matters when &lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat/&#34;&gt;&lt;code&gt;Mirostat&lt;/code&gt;&lt;/a&gt; is enabled.&lt;/p&gt;
&lt;h2 id=&#34;when-to-change-it&#34;&gt;When to change it&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Default&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Smoother, slower adaptation&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.05&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fast tracking, aggressive correction&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0.2&lt;/code&gt; – &lt;code&gt;0.3&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Most users leave &lt;code&gt;MirostatEta = 0.1&lt;/code&gt;. Adjust only when Mirostat&amp;rsquo;s entropy wanders too far from &lt;code&gt;Tau&lt;/code&gt; or oscillates too much.&lt;/p&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Qwen25Preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Mirostat&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MirostatTau&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;5.0f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MirostatEta&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.05f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;// slow, smooth adaptation
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AsposeLLMApi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;interactions&#34;&gt;Interactions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat/&#34;&gt;&lt;code&gt;Mirostat&lt;/code&gt;&lt;/a&gt; — must be &lt;code&gt;1&lt;/code&gt; or &lt;code&gt;2&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat-tau/&#34;&gt;&lt;code&gt;MirostatTau&lt;/code&gt;&lt;/a&gt; — the target &lt;code&gt;MirostatEta&lt;/code&gt; adapts toward.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat/&#34;&gt;Mirostat&lt;/a&gt; — mode selector.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat-tau/&#34;&gt;MirostatTau&lt;/a&gt; — entropy target.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/&#34;&gt;Sampler parameters hub&lt;/a&gt; — all sampler knobs.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Net: LogitBias</title>
      <link>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/logit-bias/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/logit-bias/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;LogitBias&lt;/code&gt; lets you add a per-token offset to the model&amp;rsquo;s logits before sampling. Positive values favor a token; large negative values effectively ban it.&lt;/p&gt;
&lt;h2 id=&#34;quick-reference&#34;&gt;Quick reference&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Dictionary&amp;lt;int, float&amp;gt;&lt;/code&gt; (token ID → bias)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Empty dictionary (no biases)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Range&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Typical &lt;code&gt;-100.0&lt;/code&gt; to &lt;code&gt;+10.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Fine-grained control&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Field on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SamplerParameters.LogitBias&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;what-it-does&#34;&gt;What it does&lt;/h2&gt;
&lt;p&gt;Before any filter runs, for each token ID present in &lt;code&gt;LogitBias&lt;/code&gt;, the engine adds the associated float to that token&amp;rsquo;s logit.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;LogitBias[1234] = +5.0&lt;/code&gt; — the token with ID 1234 gets a +5 boost to its logit. Strongly favors it.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LogitBias[5678] = -100.0&lt;/code&gt; — the token at ID 5678 gets a massive negative bias. Effectively banned.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LogitBias[42] = -2.0&lt;/code&gt; — token 42 is discouraged but still available.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bias is applied once per step regardless of token occurrence history. It does not interact with the penalty window.&lt;/p&gt;
&lt;h2 id=&#34;when-to-change-it&#34;&gt;When to change it&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Ban profanity / slurs token IDs&lt;/td&gt;
&lt;td&gt;Set to &lt;code&gt;-100.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Force specific token (end-of-message, for instance)&lt;/td&gt;
&lt;td&gt;Set to &lt;code&gt;+5.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Soft discouragement without ban&lt;/td&gt;
&lt;td&gt;Set to &lt;code&gt;-2.0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Obtaining token IDs requires the model&amp;rsquo;s tokenizer — not exposed in this parameter bag in the current SDK version. If you need logit-bias control, collect token IDs by tokenizing your target strings externally (for example, with the llama.cpp &lt;code&gt;tokenize&lt;/code&gt; tool against the same model).&lt;/p&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Qwen25Preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;// Soft discourage token ID 1234; strong discourage 5678.
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;LogitBias&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1234&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2.0f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;LogitBias&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;5678&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;100.0f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;

&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AsposeLLMApi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;interactions&#34;&gt;Interactions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/temperature/&#34;&gt;&lt;code&gt;Temperature&lt;/code&gt;&lt;/a&gt;, other filters — run after &lt;code&gt;LogitBias&lt;/code&gt; is applied.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/mirostat/&#34;&gt;&lt;code&gt;Mirostat&lt;/code&gt;&lt;/a&gt; — &lt;code&gt;LogitBias&lt;/code&gt; still applies; Mirostat adapts around the biased distribution.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/&#34;&gt;Sampler parameters hub&lt;/a&gt; — all sampler knobs.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/enable-infill/&#34;&gt;EnableInfill&lt;/a&gt; — specialized sampling mode.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Net: EnableInfill</title>
      <link>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/enable-infill/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/enable-infill/</guid>
      <description>
        
        
        &lt;p&gt;&lt;code&gt;EnableInfill&lt;/code&gt; switches the sampler to the INFILL variant used for fill-in-the-middle code completion. Only useful for models trained for FIM (code-completion-oriented) workflows.&lt;/p&gt;
&lt;h2 id=&#34;quick-reference&#34;&gt;Quick reference&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Specialized sampling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Field on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SamplerParameters.EnableInfill&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;what-it-does&#34;&gt;What it does&lt;/h2&gt;
&lt;p&gt;When &lt;code&gt;true&lt;/code&gt;, the engine uses a specialized sampler variant tuned for completing a gap between a prefix and a suffix. This is the FIM (Fill-in-the-Middle) pattern used by code models trained with FIM tokens (for example, some DeepSeek-Coder or StarCoder derivatives).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;false&lt;/code&gt; (default) — standard chat sampler. Correct for all text presets and vision presets.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;true&lt;/code&gt; — INFILL sampler. Only enables when the model supports FIM.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;when-to-change-it&#34;&gt;When to change it&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Standard chat, reasoning, or generation&lt;/td&gt;
&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code completion with FIM-trained model&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Most users will leave this &lt;code&gt;false&lt;/code&gt;. Enable only when you explicitly use a FIM-trained code model and understand the prefix/suffix prompt format that model expects.&lt;/p&gt;
&lt;h2 id=&#34;example&#34;&gt;Example&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DeepSeekCoder2Preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SamplerParameters&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;EnableInfill&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;

&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AsposeLLMApi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;preset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;// Use a prompt that follows the FIM template for your specific model.
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;interactions&#34;&gt;Interactions&lt;/h2&gt;
&lt;p&gt;Independent of other sampler knobs. &lt;code&gt;EnableInfill&lt;/code&gt; toggles which sampler implementation runs; all filter knobs still apply within the chosen sampler.&lt;/p&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/developer-reference/parameters/sampler/&#34;&gt;Sampler parameters hub&lt;/a&gt; — all sampler knobs.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.aspose.com/llm/net/use-cases/custom-preset/&#34;&gt;Custom preset&lt;/a&gt; — patterns for building presets around specialized models.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
  </channel>
</rss>
