mirror of
https://github.com/khoaliber/khoj.git
synced 2026-03-06 21:29:12 +00:00
Use the advanced chat model if the user is subscribed
This commit is contained in:
@@ -1009,8 +1009,15 @@ class ConversationAdapters:
|
||||
"""Get default conversation config. Prefer chat model by server admin > user > first created chat model"""
|
||||
# Get the server chat settings
|
||||
server_chat_settings = ServerChatSettings.objects.first()
|
||||
if server_chat_settings is not None and server_chat_settings.chat_default is not None:
|
||||
return server_chat_settings.chat_default
|
||||
|
||||
is_subscribed = is_user_subscribed(user) if user else False
|
||||
if server_chat_settings:
|
||||
# If the user is subscribed and the advanced model is enabled, return the advanced model
|
||||
if is_subscribed and server_chat_settings.chat_advanced:
|
||||
return server_chat_settings.chat_advanced
|
||||
# If the default model is set, return it
|
||||
if server_chat_settings.chat_default:
|
||||
return server_chat_settings.chat_default
|
||||
|
||||
# Get the user's chat settings, if the server chat settings are not set
|
||||
user_chat_settings = UserConversationConfig.objects.filter(user=user).first() if user else None
|
||||
@@ -1026,11 +1033,20 @@ class ConversationAdapters:
|
||||
# Get the server chat settings
|
||||
server_chat_settings: ServerChatSettings = (
|
||||
await ServerChatSettings.objects.filter()
|
||||
.prefetch_related("chat_default", "chat_default__openai_config")
|
||||
.prefetch_related(
|
||||
"chat_default", "chat_default__openai_config", "chat_advanced", "chat_advanced__openai_config"
|
||||
)
|
||||
.afirst()
|
||||
)
|
||||
if server_chat_settings is not None and server_chat_settings.chat_default is not None:
|
||||
return server_chat_settings.chat_default
|
||||
is_subscribed = await ais_user_subscribed(user) if user else False
|
||||
|
||||
if server_chat_settings:
|
||||
# If the user is subscribed and the advanced model is enabled, return the advanced model
|
||||
if is_subscribed and server_chat_settings.chat_advanced:
|
||||
return server_chat_settings.chat_advanced
|
||||
# If the default model is set, return it
|
||||
if server_chat_settings.chat_default:
|
||||
return server_chat_settings.chat_default
|
||||
|
||||
# Get the user's chat settings, if the server chat settings are not set
|
||||
user_chat_settings = (
|
||||
|
||||
@@ -817,7 +817,7 @@ async def chat(
|
||||
if not q:
|
||||
conversation_config = await ConversationAdapters.aget_user_conversation_config(user)
|
||||
if conversation_config == None:
|
||||
conversation_config = await ConversationAdapters.aget_default_conversation_config()
|
||||
conversation_config = await ConversationAdapters.aget_default_conversation_config(user)
|
||||
model_type = conversation_config.model_type
|
||||
formatted_help = help_message.format(model=model_type, version=state.khoj_version, device=get_device())
|
||||
async for result in send_llm_response(formatted_help):
|
||||
|
||||
@@ -140,7 +140,7 @@ def validate_conversation_config(user: KhojUser):
|
||||
async def is_ready_to_chat(user: KhojUser):
|
||||
user_conversation_config = await ConversationAdapters.aget_user_conversation_config(user)
|
||||
if user_conversation_config == None:
|
||||
user_conversation_config = await ConversationAdapters.aget_default_conversation_config()
|
||||
user_conversation_config = await ConversationAdapters.aget_default_conversation_config(user)
|
||||
|
||||
if user_conversation_config and user_conversation_config.model_type == ChatModelOptions.ModelType.OFFLINE:
|
||||
chat_model = user_conversation_config.chat_model
|
||||
|
||||
Reference in New Issue
Block a user