mirror of
https://github.com/khoaliber/khoj.git
synced 2026-03-07 21:29:13 +00:00
Rename GPT4AllChatProcessor* to OfflineChatProcessor Config, Model
This commit is contained in:
@@ -41,7 +41,7 @@ from khoj.search_filter.date_filter import DateFilter
|
|||||||
from khoj.search_filter.file_filter import FileFilter
|
from khoj.search_filter.file_filter import FileFilter
|
||||||
from khoj.search_filter.word_filter import WordFilter
|
from khoj.search_filter.word_filter import WordFilter
|
||||||
from khoj.utils import state
|
from khoj.utils import state
|
||||||
from khoj.utils.config import GPT4AllProcessorModel
|
from khoj.utils.config import OfflineChatProcessorModel
|
||||||
from khoj.utils.helpers import generate_random_name, is_none_or_empty
|
from khoj.utils.helpers import generate_random_name, is_none_or_empty
|
||||||
|
|
||||||
|
|
||||||
@@ -610,8 +610,8 @@ class ConversationAdapters:
|
|||||||
conversation_config = ConversationAdapters.get_default_conversation_config()
|
conversation_config = ConversationAdapters.get_default_conversation_config()
|
||||||
|
|
||||||
if offline_chat_config and offline_chat_config.enabled and conversation_config.model_type == "offline":
|
if offline_chat_config and offline_chat_config.enabled and conversation_config.model_type == "offline":
|
||||||
if state.gpt4all_processor_config is None or state.gpt4all_processor_config.loaded_model is None:
|
if state.offline_chat_processor_config is None or state.offline_chat_processor_config.loaded_model is None:
|
||||||
state.gpt4all_processor_config = GPT4AllProcessorModel(conversation_config.chat_model)
|
state.offline_chat_processor_config = OfflineChatProcessorModel(conversation_config.chat_model)
|
||||||
|
|
||||||
return conversation_config
|
return conversation_config
|
||||||
|
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ from khoj.search_filter.file_filter import FileFilter
|
|||||||
from khoj.search_filter.word_filter import WordFilter
|
from khoj.search_filter.word_filter import WordFilter
|
||||||
from khoj.search_type import image_search, text_search
|
from khoj.search_type import image_search, text_search
|
||||||
from khoj.utils import constants, state
|
from khoj.utils import constants, state
|
||||||
from khoj.utils.config import GPT4AllProcessorModel
|
from khoj.utils.config import OfflineChatProcessorModel
|
||||||
from khoj.utils.helpers import ConversationCommand, timer
|
from khoj.utils.helpers import ConversationCommand, timer
|
||||||
from khoj.utils.rawconfig import LocationData, SearchResponse
|
from khoj.utils.rawconfig import LocationData, SearchResponse
|
||||||
from khoj.utils.state import SearchType
|
from khoj.utils.state import SearchType
|
||||||
@@ -318,10 +318,10 @@ async def extract_references_and_questions(
|
|||||||
using_offline_chat = True
|
using_offline_chat = True
|
||||||
default_offline_llm = await ConversationAdapters.get_default_offline_llm()
|
default_offline_llm = await ConversationAdapters.get_default_offline_llm()
|
||||||
chat_model = default_offline_llm.chat_model
|
chat_model = default_offline_llm.chat_model
|
||||||
if state.gpt4all_processor_config is None:
|
if state.offline_chat_processor_config is None:
|
||||||
state.gpt4all_processor_config = GPT4AllProcessorModel(chat_model=chat_model)
|
state.offline_chat_processor_config = OfflineChatProcessorModel(chat_model=chat_model)
|
||||||
|
|
||||||
loaded_model = state.gpt4all_processor_config.loaded_model
|
loaded_model = state.offline_chat_processor_config.loaded_model
|
||||||
|
|
||||||
inferred_queries = extract_questions_offline(
|
inferred_queries = extract_questions_offline(
|
||||||
defiltered_query,
|
defiltered_query,
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ from khoj.processor.conversation.utils import (
|
|||||||
)
|
)
|
||||||
from khoj.routers.storage import upload_image
|
from khoj.routers.storage import upload_image
|
||||||
from khoj.utils import state
|
from khoj.utils import state
|
||||||
from khoj.utils.config import GPT4AllProcessorModel
|
from khoj.utils.config import OfflineChatProcessorModel
|
||||||
from khoj.utils.helpers import (
|
from khoj.utils.helpers import (
|
||||||
ConversationCommand,
|
ConversationCommand,
|
||||||
is_none_or_empty,
|
is_none_or_empty,
|
||||||
@@ -68,9 +68,9 @@ async def is_ready_to_chat(user: KhojUser):
|
|||||||
|
|
||||||
if has_offline_config and user_conversation_config and user_conversation_config.model_type == "offline":
|
if has_offline_config and user_conversation_config and user_conversation_config.model_type == "offline":
|
||||||
chat_model = user_conversation_config.chat_model
|
chat_model = user_conversation_config.chat_model
|
||||||
if state.gpt4all_processor_config is None:
|
if state.offline_chat_processor_config is None:
|
||||||
logger.info("Loading Offline Chat Model...")
|
logger.info("Loading Offline Chat Model...")
|
||||||
state.gpt4all_processor_config = GPT4AllProcessorModel(chat_model=chat_model)
|
state.offline_chat_processor_config = OfflineChatProcessorModel(chat_model=chat_model)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
ready = has_openai_config or has_offline_config
|
ready = has_openai_config or has_offline_config
|
||||||
@@ -373,10 +373,10 @@ async def send_message_to_model_wrapper(
|
|||||||
chat_model = conversation_config.chat_model
|
chat_model = conversation_config.chat_model
|
||||||
|
|
||||||
if conversation_config.model_type == "offline":
|
if conversation_config.model_type == "offline":
|
||||||
if state.gpt4all_processor_config is None or state.gpt4all_processor_config.loaded_model is None:
|
if state.offline_chat_processor_config is None or state.offline_chat_processor_config.loaded_model is None:
|
||||||
state.gpt4all_processor_config = GPT4AllProcessorModel(chat_model)
|
state.offline_chat_processor_config = OfflineChatProcessorModel(chat_model)
|
||||||
|
|
||||||
loaded_model = state.gpt4all_processor_config.loaded_model
|
loaded_model = state.offline_chat_processor_config.loaded_model
|
||||||
truncated_messages = generate_chatml_messages_with_context(
|
truncated_messages = generate_chatml_messages_with_context(
|
||||||
user_message=message, system_message=system_message, model_name=chat_model, loaded_model=loaded_model
|
user_message=message, system_message=system_message, model_name=chat_model, loaded_model=loaded_model
|
||||||
)
|
)
|
||||||
@@ -438,10 +438,10 @@ def generate_chat_response(
|
|||||||
|
|
||||||
conversation_config = ConversationAdapters.get_valid_conversation_config(user)
|
conversation_config = ConversationAdapters.get_valid_conversation_config(user)
|
||||||
if conversation_config.model_type == "offline":
|
if conversation_config.model_type == "offline":
|
||||||
if state.gpt4all_processor_config is None or state.gpt4all_processor_config.loaded_model is None:
|
if state.offline_chat_processor_config is None or state.offline_chat_processor_config.loaded_model is None:
|
||||||
state.gpt4all_processor_config = GPT4AllProcessorModel(conversation_config.chat_model)
|
state.offline_chat_processor_config = OfflineChatProcessorModel(conversation_config.chat_model)
|
||||||
|
|
||||||
loaded_model = state.gpt4all_processor_config.loaded_model
|
loaded_model = state.offline_chat_processor_config.loaded_model
|
||||||
chat_response = converse_offline(
|
chat_response = converse_offline(
|
||||||
references=compiled_references,
|
references=compiled_references,
|
||||||
online_results=online_results,
|
online_results=online_results,
|
||||||
|
|||||||
@@ -70,11 +70,11 @@ class SearchModels:
|
|||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class GPT4AllProcessorConfig:
|
class OfflineChatProcessorConfig:
|
||||||
loaded_model: Union[Any, None] = None
|
loaded_model: Union[Any, None] = None
|
||||||
|
|
||||||
|
|
||||||
class GPT4AllProcessorModel:
|
class OfflineChatProcessorModel:
|
||||||
def __init__(self, chat_model: str = "NousResearch/Hermes-2-Pro-Mistral-7B-GGUF"):
|
def __init__(self, chat_model: str = "NousResearch/Hermes-2-Pro-Mistral-7B-GGUF"):
|
||||||
self.chat_model = chat_model
|
self.chat_model = chat_model
|
||||||
self.loaded_model = None
|
self.loaded_model = None
|
||||||
|
|||||||
@@ -32,17 +32,13 @@ def initialization():
|
|||||||
)
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Note: gpt4all package is not available on all devices.
|
|
||||||
# So ensure gpt4all package is installed before continuing this step.
|
|
||||||
import gpt4all
|
|
||||||
|
|
||||||
use_offline_model = input("Use offline chat model? (y/n): ")
|
use_offline_model = input("Use offline chat model? (y/n): ")
|
||||||
if use_offline_model == "y":
|
if use_offline_model == "y":
|
||||||
logger.info("🗣️ Setting up offline chat model")
|
logger.info("🗣️ Setting up offline chat model")
|
||||||
OfflineChatProcessorConversationConfig.objects.create(enabled=True)
|
OfflineChatProcessorConversationConfig.objects.create(enabled=True)
|
||||||
|
|
||||||
offline_chat_model = input(
|
offline_chat_model = input(
|
||||||
f"Enter the offline chat model you want to use, See GPT4All for supported models (default: {default_offline_chat_model}): "
|
f"Enter the offline chat model you want to use. See HuggingFace for available GGUF models (default: {default_offline_chat_model}): "
|
||||||
)
|
)
|
||||||
if offline_chat_model == "":
|
if offline_chat_model == "":
|
||||||
ChatModelOptions.objects.create(
|
ChatModelOptions.objects.create(
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ from whisper import Whisper
|
|||||||
|
|
||||||
from khoj.processor.embeddings import CrossEncoderModel, EmbeddingsModel
|
from khoj.processor.embeddings import CrossEncoderModel, EmbeddingsModel
|
||||||
from khoj.utils import config as utils_config
|
from khoj.utils import config as utils_config
|
||||||
from khoj.utils.config import ContentIndex, GPT4AllProcessorModel, SearchModels
|
from khoj.utils.config import ContentIndex, OfflineChatProcessorModel, SearchModels
|
||||||
from khoj.utils.helpers import LRU, get_device
|
from khoj.utils.helpers import LRU, get_device
|
||||||
from khoj.utils.rawconfig import FullConfig
|
from khoj.utils.rawconfig import FullConfig
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ embeddings_model: Dict[str, EmbeddingsModel] = None
|
|||||||
cross_encoder_model: Dict[str, CrossEncoderModel] = None
|
cross_encoder_model: Dict[str, CrossEncoderModel] = None
|
||||||
content_index = ContentIndex()
|
content_index = ContentIndex()
|
||||||
openai_client: OpenAI = None
|
openai_client: OpenAI = None
|
||||||
gpt4all_processor_config: GPT4AllProcessorModel = None
|
offline_chat_processor_config: OfflineChatProcessorModel = None
|
||||||
whisper_model: Whisper = None
|
whisper_model: Whisper = None
|
||||||
config_file: Path = None
|
config_file: Path = None
|
||||||
verbose: int = 0
|
verbose: int = 0
|
||||||
|
|||||||
Reference in New Issue
Block a user