Feat: support verify to set llm key and boost bigrams. (#12980)

#12863

### Type of change

- [x] New Feature (non-breaking change which adds functionality)
This commit is contained in:
Kevin Hu
2026-02-05 19:19:09 +08:00
committed by GitHub
parent bbd8ba64a1
commit 1262533b74
5 changed files with 175 additions and 19 deletions

View File

@ -991,8 +991,10 @@ class APIToken(DataBaseModel):
class API4Conversation(DataBaseModel):
id = CharField(max_length=32, primary_key=True)
name = CharField(max_length=255, null=True, help_text="conversation name", index=False)
dialog_id = CharField(max_length=32, null=False, index=True)
user_id = CharField(max_length=255, null=False, help_text="user_id", index=True)
exp_user_id = CharField(max_length=255, null=True, help_text="exp_user_id", index=True)
message = JSONField(null=True)
reference = JSONField(null=True, default=[])
tokens = IntegerField(default=0)
@ -1376,6 +1378,8 @@ def migrate_db():
alter_db_add_column(migrator, "tenant_llm", "status", CharField(max_length=1, null=False, help_text="is it validate(0: wasted, 1: validate)", default="1", index=True))
alter_db_add_column(migrator, "connector2kb", "auto_parse", CharField(max_length=1, null=False, default="1", index=False))
alter_db_add_column(migrator, "llm_factories", "rank", IntegerField(default=0, index=False))
alter_db_add_column(migrator, "api_4_conversation", "name", CharField(max_length=255, null=True, help_text="conversation name", index=False))
alter_db_add_column(migrator, "api_4_conversation", "exp_user_id", CharField(max_length=255, null=True, help_text="exp_user_id", index=True))
# Migrate system_settings.value from CharField to TextField for longer sandbox configs
alter_db_column_type(migrator, "system_settings", "value", TextField(null=False, help_text="Configuration value (JSON, string, etc.)"))
logging.disable(logging.NOTSET)

View File

@ -48,8 +48,8 @@ class API4ConversationService(CommonService):
@DB.connection_context()
def get_list(cls, dialog_id, tenant_id,
page_number, items_per_page,
orderby, desc, id, user_id=None, include_dsl=True, keywords="",
from_date=None, to_date=None
orderby, desc, id=None, user_id=None, include_dsl=True, keywords="",
from_date=None, to_date=None, exp_user_id=None
):
if include_dsl:
sessions = cls.model.select().where(cls.model.dialog_id == dialog_id)
@ -66,6 +66,8 @@ class API4ConversationService(CommonService):
sessions = sessions.where(cls.model.create_date >= from_date)
if to_date:
sessions = sessions.where(cls.model.create_date <= to_date)
if exp_user_id:
sessions = sessions.where(cls.model.exp_user_id == exp_user_id)
if desc:
sessions = sessions.order_by(cls.model.getter_by(orderby).desc())
else:
@ -74,6 +76,17 @@ class API4ConversationService(CommonService):
sessions = sessions.paginate(page_number, items_per_page)
return count, list(sessions.dicts())
@classmethod
@DB.connection_context()
def get_names(cls, dialog_id, exp_user_id):
fields = [cls.model.id, cls.model.name,]
sessions = cls.model.select(*fields).where(
cls.model.dialog_id == dialog_id,
cls.model.exp_user_id == exp_user_id
).order_by(cls.model.getter_by("create_date").desc())
return list(sessions.dicts())
@classmethod
@DB.connection_context()