Skip to content

Commit 69d2c42

Browse files
perf: Assistant chat ui
1 parent bb5c046 commit 69d2c42

File tree

4 files changed

+26
-9
lines changed

4 files changed

+26
-9
lines changed

backend/apps/chat/task/llm.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import logging
22
import traceback
33
import warnings
4-
from typing import Any, List, Union, Dict
4+
from typing import Any, List, Optional, Union, Dict
55

66
import numpy as np
77
import orjson
@@ -23,8 +23,9 @@
2323
from apps.datasource.crud.datasource import get_table_schema
2424
from apps.datasource.models.datasource import CoreDatasource
2525
from apps.db.db import exec_sql
26+
from apps.system.crud.assistant import get_assistant_ds
2627
from common.core.config import settings
27-
from common.core.deps import SessionDep, CurrentUser
28+
from common.core.deps import CurrentAssistant, SessionDep, CurrentUser
2829
from common.utils.utils import extract_nested_json
2930

3031
warnings.filterwarnings("ignore")
@@ -42,13 +43,14 @@ class LLMService:
4243
chart_message: List[Union[BaseMessage, dict[str, Any]]] = []
4344
history_records: List[ChatRecord] = []
4445
session: SessionDep
45-
_current_user: CurrentUser
46+
current_user: CurrentUser
47+
current_assistant: Optional[CurrentAssistant] = None
4648

47-
def __init__(self, session: SessionDep, current_user: CurrentUser, chat_question: ChatQuestion):
49+
def __init__(self, session: SessionDep, current_user: CurrentUser, chat_question: ChatQuestion, current_assistant: Optional[CurrentAssistant] = None):
4850

4951
self.session = session
5052
self.current_user = current_user
51-
53+
self.current_assistant = current_assistant
5254
#chat = self.session.query(Chat).filter(Chat.id == chat_question.chat_id).first()
5355
chat_id = chat_question.chat_id
5456
chat: Chat = self.session.get(Chat, chat_id)
@@ -332,8 +334,11 @@ def generate_recommend_questions_task(self):
332334
def select_datasource(self):
333335
datasource_msg: List[Union[BaseMessage, dict[str, Any]]] = []
334336
datasource_msg.append(SystemMessage(self.chat_question.datasource_sys_question()))
335-
_ds_list = self.session.exec(select(CoreDatasource).options(
336-
load_only(CoreDatasource.id, CoreDatasource.name, CoreDatasource.description))).all()
337+
if self.current_assistant:
338+
_ds_list = get_assistant_ds(session = self.session, assistant = self.current_assistant)
339+
else:
340+
_ds_list = self.session.exec(select(CoreDatasource).options(
341+
load_only(CoreDatasource.id, CoreDatasource.name, CoreDatasource.description))).all()
337342
_ds_list_dict = []
338343
for _ds in _ds_list:
339344
_ds_list_dict.append({'id': _ds[0].id, 'name': _ds[0].name, 'description': _ds[0].description})

backend/apps/system/crud/assistant.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11

22

3-
from sqlmodel import Session
3+
from sqlmodel import Session, select
4+
from apps.datasource.models.datasource import CoreDatasource
45
from apps.system.models.system_model import AssistantModel
56
from apps.system.schemas.auth import CacheName, CacheNamespace
67
from apps.system.schemas.system_schema import UserInfoDTO
@@ -14,3 +15,11 @@ async def get_assistant_info(*, session: Session, assistant_id: int) -> Assistan
1415

1516
def get_assistant_user(*, id: int):
1617
return UserInfoDTO(id=id, account="sqlbot-inner-assistant", oid=1, name="sqlbot-inner-assistant", email="[email protected]")
18+
19+
def get_assistant_ds(*, session: Session, assistant: AssistantModel):
20+
type = assistant.type
21+
if type == 0:
22+
db_ds_list = session.exec(select(CoreDatasource.id, CoreDatasource.name, CoreDatasource.description)).all()
23+
# filter private ds if offline
24+
return db_ds_list
25+
pass

frontend/src/views/chat/ChatBlock.vue

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ defineProps<{
1111
<div class="chat-block">
1212
<slot>
1313
<div class="chat-block-content">
14-
<div v-dompurify-html="msg?.content"></div>
14+
<!-- <div v-dompurify-html="msg?.content"></div> -->
15+
<div v-if="msg?.role === 'user'" v-html="msg.content"></div>
16+
<div v-else v-dompurify-html="msg?.content"></div>
1517
</div>
1618
</slot>
1719
</div>

frontend/src/views/chat/index.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -833,6 +833,7 @@ defineExpose({
833833
834834
.chat-record-list {
835835
padding: 0 0 20px 0;
836+
background: rgba(224, 224, 226, 0.29);
836837
}
837838
838839
.chat-footer {

0 commit comments

Comments
 (0)