NanoGPT: Expose additional samplers

248f5aa892301cc30801dccbd1f7ba967ab84747

Cohee <18619528+Cohee1207@users.noreply.github.com>

3 files changed, +22 -4Showing whitespace changes
public/index.html+4 -4
@@ -732,7 +732,7 @@
732732 </div>
733733 </div>
734734 </div>
735735 <div class="range-block" data-source="claude,aimlapi,openrouter,makersuite,vertexai,cohere,perplexity,electronhub,nanogpt">
736736 <div class="range-block-title" data-i18n="Top K">
737737 Top K
738738 </div>
@@ -758,7 +758,7 @@
758758 </div>
759759 </div>
760760 </div>
761761 <div class="range-block" data-source="openrouter,nanogpt">
762762 <div class="range-block-title" data-i18n="Repetition Penalty">
763763 Repetition Penalty
764764 </div>
@@ -771,7 +771,7 @@
771771 </div>
772772 </div>
773773 </div>
774774 <div class="range-block" data-source="openrouter,nanogpt">
775775 <div class="range-block-title" data-i18n="Min P">
776776 Min P
777777 </div>
@@ -784,7 +784,7 @@
784784 </div>
785785 </div>
786786 </div>
787787 <div class="range-block" data-source="openrouter,nanogpt">
788788 <div class="range-block-title" data-i18n="Top A">
789789 Top A
790790 </div>
public/scripts/openai.js+9 -0
@@ -2290,6 +2290,7 @@ async function sendOpenAIRequest(type, messages, signal, { jsonSchema = null } =
22902290 const isMoonshot = oai_settings.chat_completion_source == chat_completion_sources.MOONSHOT;
22912291 const isAzureOpenAI = oai_settings.chat_completion_source == chat_completion_sources.AZURE_OPENAI;
22922292 const isZai = oai_settings.chat_completion_source == chat_completion_sources.ZAI;
2293+ const isNanoGPT = oai_settings.chat_completion_source == chat_completion_sources.NANOGPT;
22932294 const isTextCompletion = isOAI && textCompletionModels.includes(oai_settings.openai_model);
22942295 const isQuiet = type === 'quiet';
22952296 const isImpersonate = type === 'impersonate';
@@ -2499,6 +2500,14 @@ async function sendOpenAIRequest(type, messages, signal, { jsonSchema = null } =
24992500 delete generate_data.frequency_penalty;
25002501 }
25012502
2503+ // https://docs.nano-gpt.com/api-reference/endpoint/chat-completion#temperature-&-nucleus
2504+ if (isNanoGPT) {
2505+ generate_data['top_k'] = Number(oai_settings.top_k_openai);
2506+ generate_data['min_p'] = Number(oai_settings.min_p_openai);
2507+ generate_data['repetition_penalty'] = Number(oai_settings.repetition_penalty_openai);
2508+ generate_data['top_a'] = Number(oai_settings.top_a_openai);
2509+ }
2510+
25022511 const seedSupportedSources = [
25032512 chat_completion_sources.OPENAI,
25042513 chat_completion_sources.AZURE_OPENAI,
src/endpoints/backends/chat-completions.js+9 -0
@@ -1933,6 +1933,15 @@ router.post('/generate', function (request, response) {
19331933 if (request.body.enable_web_search && !/:online$/.test(request.body.model)) {
19341934 request.body.model = `${request.body.model}:online`;
19351935 }
1936+ if (request.body.min_p !== undefined) {
1937+ bodyParams['min_p'] = request.body.min_p;
1938+ }
1939+ if (request.body.top_a !== undefined) {
1940+ bodyParams['top_a'] = request.body.top_a;
1941+ }
1942+ if (request.body.repetition_penalty !== undefined) {
1943+ bodyParams['repetition_penalty'] = request.body.repetition_penalty;
1944+ }
19361945 const enableSystemPromptCache = getConfigValue('claude.enableSystemPromptCache', false, 'boolean');
19371946 const isClaude3or4 = /claude-(3|opus-4|sonnet-4)/.test(request.body.model);
19381947 const cacheTTL = getConfigValue('claude.extendedTTL', false, 'boolean') ? '1h' : '5m';