mirror of
https://github.com/khoaliber/khoj.git
synced 2026-03-09 13:25:11 +00:00
Configure text to image models available on server
- Currently supports OpenAI text to image model, by default dall-e-3 - Allow setting the text to image model via CLI during server setup
This commit is contained in:
@@ -22,6 +22,7 @@ from khoj.database.models import (
|
|||||||
GithubConfig,
|
GithubConfig,
|
||||||
GithubRepoConfig,
|
GithubRepoConfig,
|
||||||
GoogleUser,
|
GoogleUser,
|
||||||
|
TextToImageModelConfig,
|
||||||
KhojApiUser,
|
KhojApiUser,
|
||||||
KhojUser,
|
KhojUser,
|
||||||
NotionConfig,
|
NotionConfig,
|
||||||
@@ -414,6 +415,10 @@ class ConversationAdapters:
|
|||||||
else:
|
else:
|
||||||
raise ValueError("Invalid conversation config - either configure offline chat or openai chat")
|
raise ValueError("Invalid conversation config - either configure offline chat or openai chat")
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
async def aget_text_to_image_model_config():
|
||||||
|
return await TextToImageModelConfig.objects.filter().afirst()
|
||||||
|
|
||||||
|
|
||||||
class EntryAdapters:
|
class EntryAdapters:
|
||||||
word_filer = WordFilter()
|
word_filer = WordFilter()
|
||||||
|
|||||||
25
src/khoj/database/migrations/0022_texttoimagemodelconfig.py
Normal file
25
src/khoj/database/migrations/0022_texttoimagemodelconfig.py
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# Generated by Django 4.2.7 on 2023-12-04 22:17
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("database", "0021_speechtotextmodeloptions_and_more"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name="TextToImageModelConfig",
|
||||||
|
fields=[
|
||||||
|
("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
|
||||||
|
("created_at", models.DateTimeField(auto_now_add=True)),
|
||||||
|
("updated_at", models.DateTimeField(auto_now=True)),
|
||||||
|
("model_name", models.CharField(default="dall-e-3", max_length=200)),
|
||||||
|
("model_type", models.CharField(choices=[("openai", "Openai")], default="openai", max_length=200)),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
"abstract": False,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -112,6 +112,14 @@ class SearchModelConfig(BaseModel):
|
|||||||
cross_encoder = models.CharField(max_length=200, default="cross-encoder/ms-marco-MiniLM-L-6-v2")
|
cross_encoder = models.CharField(max_length=200, default="cross-encoder/ms-marco-MiniLM-L-6-v2")
|
||||||
|
|
||||||
|
|
||||||
|
class TextToImageModelConfig(BaseModel):
|
||||||
|
class ModelType(models.TextChoices):
|
||||||
|
OPENAI = "openai"
|
||||||
|
|
||||||
|
model_name = models.CharField(max_length=200, default="dall-e-3")
|
||||||
|
model_type = models.CharField(max_length=200, choices=ModelType.choices, default=ModelType.OPENAI)
|
||||||
|
|
||||||
|
|
||||||
class OpenAIProcessorConversationConfig(BaseModel):
|
class OpenAIProcessorConversationConfig(BaseModel):
|
||||||
api_key = models.CharField(max_length=200)
|
api_key = models.CharField(max_length=200)
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ from khoj.database.models import (
|
|||||||
OpenAIProcessorConversationConfig,
|
OpenAIProcessorConversationConfig,
|
||||||
ChatModelOptions,
|
ChatModelOptions,
|
||||||
SpeechToTextModelOptions,
|
SpeechToTextModelOptions,
|
||||||
|
TextToImageModelConfig,
|
||||||
)
|
)
|
||||||
|
|
||||||
from khoj.utils.constants import default_offline_chat_model, default_online_chat_model
|
from khoj.utils.constants import default_offline_chat_model, default_online_chat_model
|
||||||
@@ -103,6 +104,15 @@ def initialization():
|
|||||||
model_name=openai_speech2text_model, model_type=SpeechToTextModelOptions.ModelType.OPENAI
|
model_name=openai_speech2text_model, model_type=SpeechToTextModelOptions.ModelType.OPENAI
|
||||||
)
|
)
|
||||||
|
|
||||||
|
default_text_to_image_model = "dall-e-3"
|
||||||
|
openai_text_to_image_model = input(
|
||||||
|
f"Enter the OpenAI text to image model you want to use (default: {default_text_to_image_model}): "
|
||||||
|
)
|
||||||
|
openai_speech2text_model = openai_text_to_image_model or default_text_to_image_model
|
||||||
|
TextToImageModelConfig.objects.create(
|
||||||
|
model_name=openai_text_to_image_model, model_type=TextToImageModelConfig.ModelType.OPENAI
|
||||||
|
)
|
||||||
|
|
||||||
if use_offline_model == "y" or use_openai_model == "y":
|
if use_offline_model == "y" or use_openai_model == "y":
|
||||||
logger.info("🗣️ Chat model configuration complete")
|
logger.info("🗣️ Chat model configuration complete")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user