diff --git a/backend/apps/ai_model/model_factory.py b/backend/apps/ai_model/model_factory.py index b9bcc908..2aa5ff39 100644 --- a/backend/apps/ai_model/model_factory.py +++ b/backend/apps/ai_model/model_factory.py @@ -41,6 +41,7 @@ class OpenAILLM(BaseLLM): model=self.config.model_name, api_key=self.config.api_key, base_url=self.config.api_base_url, + stream_usage=True, **self.config.additional_params ) diff --git a/backend/apps/chat/api/chat.py b/backend/apps/chat/api/chat.py index fee72165..ed632f3a 100644 --- a/backend/apps/chat/api/chat.py +++ b/backend/apps/chat/api/chat.py @@ -118,6 +118,9 @@ async def stream_sql(session: SessionDep, current_user: CurrentUser, request_que def run_task(): try: + # return id + yield json.dumps({'type': 'id', 'id': llm_service.get_record().id}) + '\n\n' + # generate sql sql_res = llm_service.generate_sql(session=session) full_sql_text = '' diff --git a/backend/apps/chat/task/llm.py b/backend/apps/chat/task/llm.py index d2de5a62..dee73241 100644 --- a/backend/apps/chat/task/llm.py +++ b/backend/apps/chat/task/llm.py @@ -105,6 +105,9 @@ class LLMService: self.record = save_question(session=session, current_user=current_user, question=self.chat_question) return self.record + def get_record(self): + return self.record + def generate_sql(self, session: SessionDep): # append current question self.sql_message.append(HumanMessage(self.chat_question.sql_user_question())) diff --git a/backend/template.yaml b/backend/template.yaml index 5b2e1283..5256e6f2 100644 --- a/backend/template.yaml +++ b/backend/template.yaml @@ -34,7 +34,7 @@ template: {question} ### 其他规则: - 请使用英语(English)回答 + 请使用英语(English)输出 {rule} chart: system: | @@ -51,7 +51,7 @@ template: {{"type":"line", "title": "标题", "axis": {{"x": {{"name":"x轴的中文名称","value": "x轴的SQL查询列(有别名用别名)"}}, "y": {{"name":"y轴的中文名称","value": "y轴的SQL查询列(有别名用别名)"}}}} 其中“x”和“y”必须从SQL查询列中提取。 - 如果需要饼图,则生成的 JSON 格式应为: - {{"type":"pie", "title": "标题", "column": [{{"name":"中文字段名1","value":"SQL查询列1(有别名用别名)"}},{{"name":"中文字段名2","value":"SQL查询列2(有别名用别名)"}}]}} + {{"type":"pie", "title": "标题", "columns": [{{"name":"中文字段名1","value":"SQL查询列1(有别名用别名)"}},{{"name":"中文字段名2","value":"SQL查询列2(有别名用别名)"}}]}} 其中“column”必须从SQL查询列中提取。 - 如果答案未知或者与生成JSON无关,则生成的 JSON 格式应为: {{"type":"error", "reason": "抱歉,我无法回答您的问题。"}} @@ -80,5 +80,5 @@ template: {question} ### 其他规则: - 请使用英语(English)回答 + 请使用英语(English)输出 {rule} \ No newline at end of file diff --git a/frontend/package.json b/frontend/package.json index c32e172e..83f11fff 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -9,6 +9,7 @@ "preview": "vite preview" }, "dependencies": { + "@antv/g2": "^5.3.3", "@npkg/tinymce-plugins": "^0.0.7", "@tinymce/tinymce-vue": "^5.1.0", "dayjs": "^1.11.13", diff --git a/frontend/src/views/chat/ChatAnswer.vue b/frontend/src/views/chat/ChatAnswer.vue index f89b0c8b..552aad1f 100644 --- a/frontend/src/views/chat/ChatAnswer.vue +++ b/frontend/src/views/chat/ChatAnswer.vue @@ -1,9 +1,10 @@