33import json
44import math
55import traceback
6+ from typing import Optional
67
78from apps .ai_model .embedding import EmbeddingModelCache
89from apps .datasource .crud .datasource import get_table_schema
910from apps .datasource .models .datasource import CoreDatasource
11+ from apps .system .crud .assistant import AssistantOutDs
12+ from common .core .deps import CurrentAssistant
1013from common .core .deps import SessionDep , CurrentUser
1114from common .utils .utils import SQLBotLogUtil
1215
@@ -26,17 +29,26 @@ def cosine_similarity(vec_a, vec_b):
2629 return dot_product / (norm_a * norm_b )
2730
2831
29- def get_ds_embedding (session : SessionDep , current_user : CurrentUser , _ds_list , question : str ):
32+ def get_ds_embedding (session : SessionDep , current_user : CurrentUser , _ds_list , out_ds : AssistantOutDs ,
33+ question : str ,
34+ current_assistant : Optional [CurrentAssistant ] = None ):
3035 _list = []
31- for _ds in _ds_list :
32- if _ds .get ('id' ):
33- ds = session .get (CoreDatasource , _ds .get ('id' ))
34-
35- table_schema = get_table_schema (session , current_user , ds )
36- ds_info = f"{ ds .name } , { ds .description } \n "
37- ds_schema = ds_info + table_schema
38-
39- _list .append ({"id" : ds .id , "ds_schema" : ds_schema , "cosine_similarity" : 0.0 , "ds" : ds })
36+ if current_assistant and current_assistant .type != 4 :
37+ if out_ds .ds_list :
38+ for _ds in out_ds .ds_list :
39+ ds = out_ds .get_ds (_ds .id )
40+ table_schema = out_ds .get_db_schema (_ds .id )
41+ ds_info = f"{ ds .name } , { ds .description } \n "
42+ ds_schema = ds_info + table_schema
43+ _list .append ({"id" : ds .id , "ds_schema" : ds_schema , "cosine_similarity" : 0.0 , "ds" : ds })
44+ else :
45+ for _ds in _ds_list :
46+ if _ds .get ('id' ):
47+ ds = session .get (CoreDatasource , _ds .get ('id' ))
48+ table_schema = get_table_schema (session , current_user , ds )
49+ ds_info = f"{ ds .name } , { ds .description } \n "
50+ ds_schema = ds_info + table_schema
51+ _list .append ({"id" : ds .id , "ds_schema" : ds_schema , "cosine_similarity" : 0.0 , "ds" : ds })
4052
4153 if _list :
4254 try :
0 commit comments