Skip to content

Commit c31f8ee

Browse files
committed
feat: chat template support i18n
1 parent 8ffa457 commit c31f8ee

File tree

4 files changed

+20
-12
lines changed

4 files changed

+20
-12
lines changed

backend/apps/chat/api/chat.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from apps.chat.task.llm import LLMService
1414
from apps.datasource.crud.datasource import get_table_schema
1515
from apps.datasource.models.datasource import CoreDatasource
16+
from apps.system.crud.user import get_user_info
1617
from apps.system.models.system_model import AiModelDetail
1718
from common.core.deps import SessionDep, CurrentUser
1819

@@ -117,13 +118,15 @@ async def stream_sql(session: SessionDep, current_user: CurrentUser, request_que
117118

118119
llm_service.init_record(session=session, current_user=current_user)
119120

121+
db_user = get_user_info(session=session, user_id=current_user.id)
122+
120123
def run_task():
121124
try:
122125
# return id
123126
yield json.dumps({'type': 'id', 'id': llm_service.get_record().id}) + '\n\n'
124127

125128
# generate sql
126-
sql_res = llm_service.generate_sql(session=session)
129+
sql_res = llm_service.generate_sql(session=session, lang=db_user.language)
127130
full_sql_text = ''
128131
for chunk in sql_res:
129132
full_sql_text += chunk
@@ -142,7 +145,7 @@ def run_task():
142145
yield json.dumps({'content': orjson.dumps(result).decode(), 'type': 'sql-data'}) + '\n\n'
143146

144147
# generate chart
145-
chart_res = llm_service.generate_chart(session=session)
148+
chart_res = llm_service.generate_chart(session=session, lang=db_user.language)
146149
full_chart_text = ''
147150
for chunk in chart_res:
148151
full_chart_text += chunk

backend/apps/chat/models/chat_model.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,19 +72,20 @@ class AiModelQuestion(BaseModel):
7272
db_schema: str = ""
7373
sql: str = ""
7474
rule: str = ""
75+
lang: str = "zh-CN"
7576

7677
def sql_sys_question(self):
7778
return get_sql_template()['system'].format(engine=self.engine, schema=self.db_schema, question=self.question)
7879

7980
def sql_user_question(self):
8081
return get_sql_template()['user'].format(engine=self.engine, schema=self.db_schema, question=self.question,
81-
rule=self.rule)
82+
rule=self.rule, lang=self.lang)
8283

8384
def chart_sys_question(self):
8485
return get_chart_template()['system'].format(sql=self.sql, question=self.question)
8586

8687
def chart_user_question(self):
87-
return get_chart_template()['user'].format(sql=self.sql, question=self.question, rule=self.rule)
88+
return get_chart_template()['user'].format(sql=self.sql, question=self.question, rule=self.rule, lang=self.lang)
8889

8990

9091
class ChatQuestion(AiModelQuestion):

backend/apps/chat/task/llm.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,8 @@ def init_record(self, session: SessionDep, current_user: CurrentUser) -> ChatRec
109109
def get_record(self):
110110
return self.record
111111

112-
def generate_sql(self, session: SessionDep):
112+
def generate_sql(self, session: SessionDep, lang: str = 'zh-CN'):
113+
self.chat_question.lang = lang
113114
# append current question
114115
self.sql_message.append(HumanMessage(self.chat_question.sql_user_question()))
115116
self.record = save_full_sql_message(session=session, record_id=self.record.id,
@@ -136,7 +137,8 @@ def generate_sql(self, session: SessionDep):
136137
[{'type': msg.type, 'content': msg.content} for msg in
137138
self.sql_message], ensure_ascii=False))
138139

139-
def generate_chart(self, session: SessionDep):
140+
def generate_chart(self, session: SessionDep, lang: str = 'zh-CN'):
141+
self.chat_question.lang = lang
140142
# append current question
141143
self.chart_message.append(HumanMessage(self.chat_question.chart_user_question()))
142144
self.record = save_full_chart_message(session=session, record_id=self.record.id,

backend/template.yaml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ template:
2424
{{"success":true,"sql":"生成的SQL语句","chart-type":"选择的图表类型(table/column/bar/line/pie)"}}
2525
2626
### 请遵守以下输出要求:
27-
请逐步推理后给出答案
28-
推理过程中不需要输出JSON,仅在最终结果内输出符合要求的JSON
27+
- 请逐步推理后给出答案
28+
- 推理过程中不需要输出JSON,仅在最终结果内输出符合要求的JSON
2929
步骤1: [思考内容]
3030
步骤2: [思考内容]
3131
……
@@ -37,8 +37,9 @@ template:
3737
### 问题:
3838
{question}
3939
40+
### 请使用 i18n: {lang} 对应的语言输出你的推理思考步骤、内容和结果
41+
4042
### 其他规则:
41-
请使用英语(English)输出
4243
{rule}
4344
chart:
4445
system: |
@@ -73,8 +74,8 @@ template:
7374
```json
7475
7576
### 请遵守以下输出要求:
76-
请逐步推理后给出答案
77-
推理过程中不需要输出JSON,仅在最终结果内输出符合要求的JSON
77+
- 请逐步推理后给出答案
78+
- 推理过程中不需要输出JSON,仅在最终结果内输出符合要求的JSON
7879
步骤1: [思考内容]
7980
步骤2: [思考内容]
8081
……
@@ -86,8 +87,9 @@ template:
8687
### 问题:
8788
{question}
8889
90+
### 请使用 i18n: {lang} 对应的语言输出你的推理思考步骤、内容和结果
91+
8992
### 其他规则:
90-
请使用英语(English)输出
9193
{rule}
9294
guess:
9395
system: |

0 commit comments

Comments
 (0)