mirror of
				https://github.com/SillyTavern/SillyTavern.git
				synced 2025-06-05 21:59:27 +02:00 
			
		
		
		
	Caption - allow custom endpoint for xAI
This commit is contained in:
		| @@ -416,6 +416,7 @@ jQuery(async function () { | ||||
|                         'google': SECRET_KEYS.MAKERSUITE, | ||||
|                         'vertexai': SECRET_KEYS.VERTEXAI, | ||||
|                         'anthropic': SECRET_KEYS.CLAUDE, | ||||
|                         'xai': SECRET_KEYS.XAI, | ||||
|                     }; | ||||
|  | ||||
|                     if (reverseProxyApis[api]) { | ||||
| @@ -429,7 +430,6 @@ jQuery(async function () { | ||||
|                         'zerooneai': SECRET_KEYS.ZEROONEAI, | ||||
|                         'groq': SECRET_KEYS.GROQ, | ||||
|                         'cohere': SECRET_KEYS.COHERE, | ||||
|                         'xai': SECRET_KEYS.XAI, | ||||
|                     }; | ||||
|  | ||||
|                     if (chatCompletionApis[api] && secret_state[chatCompletionApis[api]]) { | ||||
|   | ||||
| @@ -181,7 +181,7 @@ | ||||
|                 <div data-type="ollama"> | ||||
|                     The model must be downloaded first! Do it with the <code>ollama pull</code> command or <a href="#" id="caption_ollama_pull">click here</a>. | ||||
|                 </div> | ||||
|                 <label data-type="openai,anthropic,google,vertexai,mistral" class="checkbox_label flexBasis100p" for="caption_allow_reverse_proxy" title="Allow using reverse proxy if defined and valid."> | ||||
|                 <label data-type="openai,anthropic,google,vertexai,mistral,xai" class="checkbox_label flexBasis100p" for="caption_allow_reverse_proxy" title="Allow using reverse proxy if defined and valid."> | ||||
|                     <input id="caption_allow_reverse_proxy" type="checkbox" class="checkbox"> | ||||
|                     <span data-i18n="Allow reverse proxy">Allow reverse proxy</span> | ||||
|                 </label> | ||||
|   | ||||
| @@ -15,7 +15,7 @@ import { createThumbnail, isValidUrl } from '../utils.js'; | ||||
|  */ | ||||
| export async function getMultimodalCaption(base64Img, prompt) { | ||||
|     const useReverseProxy = | ||||
|         (['openai', 'anthropic', 'google', 'mistral', 'vertexai'].includes(extension_settings.caption.multimodal_api)) | ||||
|         (['openai', 'anthropic', 'google', 'mistral', 'vertexai', 'xai'].includes(extension_settings.caption.multimodal_api)) | ||||
|         && extension_settings.caption.allow_reverse_proxy | ||||
|         && oai_settings.reverse_proxy | ||||
|         && isValidUrl(oai_settings.reverse_proxy); | ||||
| @@ -157,7 +157,7 @@ function throwIfInvalidModel(useReverseProxy) { | ||||
|         throw new Error('Cohere API key is not set.'); | ||||
|     } | ||||
|  | ||||
|     if (extension_settings.caption.multimodal_api === 'xai' && !secret_state[SECRET_KEYS.XAI]) { | ||||
|     if (extension_settings.caption.multimodal_api === 'xai' && !secret_state[SECRET_KEYS.XAI] && !useReverseProxy) { | ||||
|         throw new Error('xAI API key is not set.'); | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -22,8 +22,12 @@ router.post('/caption-image', async (request, response) => { | ||||
|             key = readSecret(request.user.directories, SECRET_KEYS.OPENAI); | ||||
|         } | ||||
|  | ||||
|         if (request.body.api === 'openrouter' && !request.body.reverse_proxy) { | ||||
|             key = readSecret(request.user.directories, SECRET_KEYS.OPENROUTER); | ||||
|         if (request.body.api === 'xai' && !request.body.reverse_proxy) { | ||||
|             key = readSecret(request.user.directories, SECRET_KEYS.XAI); | ||||
|         } | ||||
|  | ||||
|         if (request.body.api === 'mistral' && !request.body.reverse_proxy) { | ||||
|             key = readSecret(request.user.directories, SECRET_KEYS.MISTRALAI); | ||||
|         } | ||||
|  | ||||
|         if (request.body.reverse_proxy && request.body.proxy_password) { | ||||
| @@ -36,6 +40,10 @@ router.post('/caption-image', async (request, response) => { | ||||
|             mergeObjectWithYaml(headers, request.body.custom_include_headers); | ||||
|         } | ||||
|  | ||||
|         if (request.body.api === 'openrouter') { | ||||
|             key = readSecret(request.user.directories, SECRET_KEYS.OPENROUTER); | ||||
|         } | ||||
|  | ||||
|         if (request.body.api === 'ooba') { | ||||
|             key = readSecret(request.user.directories, SECRET_KEYS.OOBA); | ||||
|             bodyParams.temperature = 0.1; | ||||
| @@ -57,10 +65,6 @@ router.post('/caption-image', async (request, response) => { | ||||
|             key = readSecret(request.user.directories, SECRET_KEYS.ZEROONEAI); | ||||
|         } | ||||
|  | ||||
|         if (request.body.api === 'mistral') { | ||||
|             key = readSecret(request.user.directories, SECRET_KEYS.MISTRALAI); | ||||
|         } | ||||
|  | ||||
|         if (request.body.api === 'groq') { | ||||
|             key = readSecret(request.user.directories, SECRET_KEYS.GROQ); | ||||
|         } | ||||
| @@ -69,10 +73,6 @@ router.post('/caption-image', async (request, response) => { | ||||
|             key = readSecret(request.user.directories, SECRET_KEYS.COHERE); | ||||
|         } | ||||
|  | ||||
|         if (request.body.api === 'xai') { | ||||
|             key = readSecret(request.user.directories, SECRET_KEYS.XAI); | ||||
|         } | ||||
|  | ||||
|         const noKeyTypes = ['custom', 'ooba', 'koboldcpp', 'vllm', 'llamacpp', 'pollinations']; | ||||
|         if (!key && !request.body.reverse_proxy && !noKeyTypes.includes(request.body.api)) { | ||||
|             console.warn('No key found for API', request.body.api); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user