refac/fix: web search always on setting

This commit is contained in:
Timothy Jaeryang Baek 2025-09-07 01:15:10 +04:00
parent 40e40d1ddd
commit 9368d0ac75
2 changed files with 46 additions and 25 deletions

View file

@ -50,7 +50,6 @@
removeAllDetails removeAllDetails
} from '$lib/utils'; } from '$lib/utils';
import { generateChatCompletion } from '$lib/apis/ollama';
import { import {
createNewChat, createNewChat,
getAllTags, getAllTags,
@ -63,8 +62,6 @@
} from '$lib/apis/chats'; } from '$lib/apis/chats';
import { generateOpenAIChatCompletion } from '$lib/apis/openai'; import { generateOpenAIChatCompletion } from '$lib/apis/openai';
import { processWeb, processWebSearch, processYoutubeVideo } from '$lib/apis/retrieval'; import { processWeb, processWebSearch, processYoutubeVideo } from '$lib/apis/retrieval';
import { createOpenAITextStream } from '$lib/apis/streaming';
import { queryMemory } from '$lib/apis/memories';
import { getAndUpdateUserLocation, getUserSettings } from '$lib/apis/users'; import { getAndUpdateUserLocation, getUserSettings } from '$lib/apis/users';
import { import {
chatCompleted, chatCompleted,
@ -75,6 +72,10 @@
getTaskIdsByChatId getTaskIdsByChatId
} from '$lib/apis'; } from '$lib/apis';
import { getTools } from '$lib/apis/tools'; import { getTools } from '$lib/apis/tools';
import { uploadFile } from '$lib/apis/files';
import { createOpenAITextStream } from '$lib/apis/streaming';
import { fade } from 'svelte/transition';
import Banner from '../common/Banner.svelte'; import Banner from '../common/Banner.svelte';
import MessageInput from '$lib/components/chat/MessageInput.svelte'; import MessageInput from '$lib/components/chat/MessageInput.svelte';
@ -85,10 +86,8 @@
import Placeholder from './Placeholder.svelte'; import Placeholder from './Placeholder.svelte';
import NotificationToast from '../NotificationToast.svelte'; import NotificationToast from '../NotificationToast.svelte';
import Spinner from '../common/Spinner.svelte'; import Spinner from '../common/Spinner.svelte';
import { fade } from 'svelte/transition';
import Tooltip from '../common/Tooltip.svelte'; import Tooltip from '../common/Tooltip.svelte';
import Sidebar from '../icons/Sidebar.svelte'; import Sidebar from '../icons/Sidebar.svelte';
import { uploadFile } from '$lib/apis/files';
export let chatIdProp = ''; export let chatIdProp = '';
@ -1635,6 +1634,46 @@
chats.set(await getChatList(localStorage.token, $currentChatPage)); chats.set(await getChatList(localStorage.token, $currentChatPage));
}; };
const getFeatures = () => {
let features = {};
if ($config?.features)
features = {
image_generation:
$config?.features?.enable_image_generation &&
($user?.role === 'admin' || $user?.permissions?.features?.image_generation)
? imageGenerationEnabled
: false,
code_interpreter:
$config?.features?.enable_code_interpreter &&
($user?.role === 'admin' || $user?.permissions?.features?.code_interpreter)
? codeInterpreterEnabled
: false,
web_search:
$config?.features?.enable_web_search &&
($user?.role === 'admin' || $user?.permissions?.features?.web_search)
? webSearchEnabled
: false
};
const currentModels = atSelectedModel?.id ? [atSelectedModel.id] : selectedModels;
if (
currentModels.filter(
(model) => $models.find((m) => m.id === model)?.info?.meta?.capabilities?.web_search ?? true
).length === currentModels.length
) {
if (($settings?.webSearch ?? false) === 'always') {
features = { ...features, web_search: true };
}
}
if ($settings?.memory ?? false) {
features = { ...features, memory: true };
}
return features;
};
const sendMessageSocket = async (model, _messages, _history, responseMessageId, _chatId) => { const sendMessageSocket = async (model, _messages, _history, responseMessageId, _chatId) => {
const responseMessage = _history.messages[responseMessageId]; const responseMessage = _history.messages[responseMessageId];
const userMessage = _history.messages[responseMessage.parentId]; const userMessage = _history.messages[responseMessage.parentId];
@ -1747,25 +1786,7 @@
filter_ids: selectedFilterIds.length > 0 ? selectedFilterIds : undefined, filter_ids: selectedFilterIds.length > 0 ? selectedFilterIds : undefined,
tool_ids: selectedToolIds.length > 0 ? selectedToolIds : undefined, tool_ids: selectedToolIds.length > 0 ? selectedToolIds : undefined,
tool_servers: $toolServers, tool_servers: $toolServers,
features: getFeatures(),
features: {
image_generation:
$config?.features?.enable_image_generation &&
($user?.role === 'admin' || $user?.permissions?.features?.image_generation)
? imageGenerationEnabled
: false,
code_interpreter:
$config?.features?.enable_code_interpreter &&
($user?.role === 'admin' || $user?.permissions?.features?.code_interpreter)
? codeInterpreterEnabled
: false,
web_search:
$config?.features?.enable_web_search &&
($user?.role === 'admin' || $user?.permissions?.features?.web_search)
? webSearchEnabled || ($settings?.webSearch ?? false) === 'always'
: false,
memory: $settings?.memory ?? false
},
variables: { variables: {
...getPromptVariables($user?.name, $settings?.userLocation ? userLocation : undefined) ...getPromptVariables($user?.name, $settings?.userLocation ? userLocation : undefined)
}, },

View file

@ -162,7 +162,7 @@ type Settings = {
richTextInput?: boolean; richTextInput?: boolean;
params?: any; params?: any;
userLocation?: any; userLocation?: any;
webSearch?: boolean; webSearch?: any;
memory?: boolean; memory?: boolean;
autoTags?: boolean; autoTags?: boolean;
autoFollowUps?: boolean; autoFollowUps?: boolean;