Skip to content

Commit 2b13dc7

Browse files
ziyujiahaoxuwei-fit2cloud
authored andcommitted
refactor: Recommended questions display ten by default.
1 parent a4e0a43 commit 2b13dc7

File tree

7 files changed

+24
-12
lines changed

7 files changed

+24
-12
lines changed

backend/apps/chat/api/chat.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import asyncio
22
import io
33
import traceback
4+
from typing import Optional
45

56
import orjson
67
import pandas as pd
@@ -107,7 +108,7 @@ async def start_chat(session: SessionDep, current_user: CurrentUser):
107108

108109
@router.post("/recommend_questions/{chat_record_id}")
109110
async def recommend_questions(session: SessionDep, current_user: CurrentUser, chat_record_id: int,
110-
current_assistant: CurrentAssistant):
111+
current_assistant: CurrentAssistant, articles_number: Optional[int] = 4):
111112
def _return_empty():
112113
yield 'data:' + orjson.dumps({'content': '[]', 'type': 'recommended_question'}).decode() + '\n\n'
113114

@@ -121,6 +122,7 @@ def _return_empty():
121122

122123
llm_service = await LLMService.create(session, current_user, request_question, current_assistant, True)
123124
llm_service.set_record(record)
125+
llm_service.set_articles_number(articles_number)
124126
llm_service.run_recommend_questions_task_async()
125127
except Exception as e:
126128
traceback.print_exc()

backend/apps/chat/models/chat_model.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,8 @@ def sql_sys_question(self, db_type: Union[str, DB], enable_query_limit: bool = T
212212

213213
def sql_user_question(self, current_time: str, change_title: bool):
214214
return get_sql_template()['user'].format(engine=self.engine, schema=self.db_schema, question=self.question,
215-
rule=self.rule, current_time=current_time, error_msg=self.error_msg,change_title = change_title)
215+
rule=self.rule, current_time=current_time, error_msg=self.error_msg,
216+
change_title=change_title)
216217

217218
def chart_sys_question(self):
218219
return get_chart_template()['system'].format(sql=self.sql, question=self.question, lang=self.lang)
@@ -240,8 +241,8 @@ def datasource_sys_question(self):
240241
def datasource_user_question(self, datasource_list: str = "[]"):
241242
return get_datasource_template()['user'].format(question=self.question, data=datasource_list)
242243

243-
def guess_sys_question(self):
244-
return get_guess_question_template()['system'].format(lang=self.lang)
244+
def guess_sys_question(self, articles_number: int = 4):
245+
return get_guess_question_template()['system'].format(lang=self.lang, articles_number=articles_number)
245246

246247
def guess_user_question(self, old_questions: str = "[]"):
247248
return get_guess_question_template()['user'].format(question=self.question, schema=self.db_schema,

backend/apps/chat/task/llm.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ class LLMService:
8484
future: Future
8585

8686
last_execute_sql_error: str = None
87+
articles_number: int = 4
8788

8889
def __init__(self, session: Session, current_user: CurrentUser, chat_question: ChatQuestion,
8990
current_assistant: Optional[CurrentAssistant] = None, no_reasoning: bool = False,
@@ -213,6 +214,9 @@ def get_record(self):
213214
def set_record(self, record: ChatRecord):
214215
self.record = record
215216

217+
def set_articles_number(self, articles_number: int):
218+
self.articles_number = articles_number
219+
216220
def get_fields_from_chart(self, _session: Session):
217221
chart_info = get_chart_config(_session, self.record.id)
218222
return format_chart_fields(chart_info)
@@ -330,7 +334,7 @@ def generate_recommend_questions_task(self, _session: Session):
330334
embedding=False)
331335

332336
guess_msg: List[Union[BaseMessage, dict[str, Any]]] = []
333-
guess_msg.append(SystemMessage(content=self.chat_question.guess_sys_question()))
337+
guess_msg.append(SystemMessage(content=self.chat_question.guess_sys_question(self.articles_number)))
334338

335339
old_questions = list(map(lambda q: q.strip(), get_old_questions(_session, self.record.datasource)))
336340
guess_msg.append(

backend/templates/template.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ template:
374374
### 请使用语言:{lang} 回答,不需要输出深度思考过程
375375
376376
### 说明:
377-
您的任务是根据给定的表结构,用户问题以及以往用户提问,推测用户接下来可能提问的1-4个问题
377+
您的任务是根据给定的表结构,用户问题以及以往用户提问,推测用户接下来可能提问的1-{articles_number}个问题
378378
请遵循以下规则:
379379
- 推测的问题需要与提供的表结构相关,生成的提问例子如:["查询所有用户数据","使用饼图展示各产品类型的占比","使用折线图展示销售额趋势",...]
380380
- 推测问题如果涉及图形展示,支持的图形类型为:表格(table)、柱状图(column)、条形图(bar)、折线图(line)或饼图(pie)
@@ -385,7 +385,7 @@ template:
385385
- 如果用户没有提问且没有以往用户提问,则仅根据提供的表结构推测问题
386386
- 生成的推测问题使用JSON格式返回:
387387
["推测问题1", "推测问题2", "推测问题3", "推测问题4"]
388-
- 最多返回4个你推测出的结果
388+
- 最多返回{articles_number}个你推测出的结果
389389
- 若无法推测,则返回空数据JSON:
390390
[]
391391
- 若你的给出的JSON不是{lang}的,则必须翻译为{lang}

frontend/src/api/chat.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -328,8 +328,12 @@ export const chatApi = {
328328
predict: (record_id: number | undefined, controller?: AbortController) => {
329329
return request.fetchStream(`/chat/record/${record_id}/predict`, {}, controller)
330330
},
331-
recommendQuestions: (record_id: number | undefined, controller?: AbortController) => {
332-
return request.fetchStream(`/chat/recommend_questions/${record_id}`, {}, controller)
331+
recommendQuestions: (
332+
record_id: number | undefined,
333+
controller?: AbortController,
334+
params: any
335+
) => {
336+
return request.fetchStream(`/chat/recommend_questions/${record_id}${params}`, {}, controller)
333337
},
334338
recentQuestions: (datasource_id?: number): Promise<any> => {
335339
return request.get(`/chat/recent_questions/${datasource_id}`)

frontend/src/views/chat/QuickQuestion.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ const recommendQuestionRef = ref()
1111
const recentQuestionRef = ref()
1212
const popoverRef = ref()
1313
const getRecommendQuestions = () => {
14-
recommendQuestionRef.value.getRecommendQuestions()
14+
recommendQuestionRef.value.getRecommendQuestions(10)
1515
}
1616
1717
const retrieveQuestions = () => {

frontend/src/views/chat/RecommendQuestion.vue

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,13 @@ function clickQuestion(question: string): void {
5858
5959
const stopFlag = ref(false)
6060
61-
async function getRecommendQuestions() {
61+
async function getRecommendQuestions(articles_number: number) {
6262
stopFlag.value = false
6363
loading.value = true
6464
try {
6565
const controller: AbortController = new AbortController()
66-
const response = await chatApi.recommendQuestions(props.recordId, controller)
66+
const params = articles_number ? '?articles_number=' + articles_number : ''
67+
const response = await chatApi.recommendQuestions(props.recordId, controller, params)
6768
const reader = response.body.getReader()
6869
const decoder = new TextDecoder('utf-8')
6970

0 commit comments

Comments
 (0)