mirror of
https://gh-proxy.org/https://github.com/klinsmaya/SQLBot.git
synced 2026-11-08 09:17:06 +08:00
feat: chat template support i18n
This commit is contained in:
@@ -13,6 +13,7 @@ from apps.chat.models.chat_model import CreateChat, ChatRecord, RenameChat, Chat
|
||||
from apps.chat.task.llm import LLMService
|
||||
from apps.datasource.crud.datasource import get_table_schema
|
||||
from apps.datasource.models.datasource import CoreDatasource
|
||||
from apps.system.crud.user import get_user_info
|
||||
from apps.system.models.system_model import AiModelDetail
|
||||
from common.core.deps import SessionDep, CurrentUser
|
||||
|
||||
@@ -117,13 +118,15 @@ async def stream_sql(session: SessionDep, current_user: CurrentUser, request_que
|
||||
|
||||
llm_service.init_record(session=session, current_user=current_user)
|
||||
|
||||
db_user = get_user_info(session=session, user_id=current_user.id)
|
||||
|
||||
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)
|
||||
sql_res = llm_service.generate_sql(session=session, lang=db_user.language)
|
||||
full_sql_text = ''
|
||||
for chunk in sql_res:
|
||||
full_sql_text += chunk
|
||||
@@ -142,7 +145,7 @@ async def stream_sql(session: SessionDep, current_user: CurrentUser, request_que
|
||||
yield json.dumps({'content': orjson.dumps(result).decode(), 'type': 'sql-data'}) + '\n\n'
|
||||
|
||||
# generate chart
|
||||
chart_res = llm_service.generate_chart(session=session)
|
||||
chart_res = llm_service.generate_chart(session=session, lang=db_user.language)
|
||||
full_chart_text = ''
|
||||
for chunk in chart_res:
|
||||
full_chart_text += chunk
|
||||
|
||||
@@ -72,19 +72,20 @@ class AiModelQuestion(BaseModel):
|
||||
db_schema: str = ""
|
||||
sql: str = ""
|
||||
rule: str = ""
|
||||
lang: str = "zh-CN"
|
||||
|
||||
def sql_sys_question(self):
|
||||
return get_sql_template()['system'].format(engine=self.engine, schema=self.db_schema, question=self.question)
|
||||
|
||||
def sql_user_question(self):
|
||||
return get_sql_template()['user'].format(engine=self.engine, schema=self.db_schema, question=self.question,
|
||||
rule=self.rule)
|
||||
rule=self.rule, lang=self.lang)
|
||||
|
||||
def chart_sys_question(self):
|
||||
return get_chart_template()['system'].format(sql=self.sql, question=self.question)
|
||||
|
||||
def chart_user_question(self):
|
||||
return get_chart_template()['user'].format(sql=self.sql, question=self.question, rule=self.rule)
|
||||
return get_chart_template()['user'].format(sql=self.sql, question=self.question, rule=self.rule, lang=self.lang)
|
||||
|
||||
|
||||
class ChatQuestion(AiModelQuestion):
|
||||
|
||||
@@ -109,7 +109,8 @@ class LLMService:
|
||||
def get_record(self):
|
||||
return self.record
|
||||
|
||||
def generate_sql(self, session: SessionDep):
|
||||
def generate_sql(self, session: SessionDep, lang: str = 'zh-CN'):
|
||||
self.chat_question.lang = lang
|
||||
# append current question
|
||||
self.sql_message.append(HumanMessage(self.chat_question.sql_user_question()))
|
||||
self.record = save_full_sql_message(session=session, record_id=self.record.id,
|
||||
@@ -136,7 +137,8 @@ class LLMService:
|
||||
[{'type': msg.type, 'content': msg.content} for msg in
|
||||
self.sql_message], ensure_ascii=False))
|
||||
|
||||
def generate_chart(self, session: SessionDep):
|
||||
def generate_chart(self, session: SessionDep, lang: str = 'zh-CN'):
|
||||
self.chat_question.lang = lang
|
||||
# append current question
|
||||
self.chart_message.append(HumanMessage(self.chat_question.chart_user_question()))
|
||||
self.record = save_full_chart_message(session=session, record_id=self.record.id,
|
||||
|
||||
@@ -24,8 +24,8 @@ template:
|
||||
{{"success":true,"sql":"生成的SQL语句","chart-type":"选择的图表类型(table/column/bar/line/pie)"}}
|
||||
|
||||
### 请遵守以下输出要求:
|
||||
请逐步推理后给出答案
|
||||
推理过程中不需要输出JSON,仅在最终结果内输出符合要求的JSON
|
||||
- 请逐步推理后给出答案
|
||||
- 推理过程中不需要输出JSON,仅在最终结果内输出符合要求的JSON
|
||||
步骤1: [思考内容]
|
||||
步骤2: [思考内容]
|
||||
……
|
||||
@@ -37,8 +37,9 @@ template:
|
||||
### 问题:
|
||||
{question}
|
||||
|
||||
### 请使用 i18n: {lang} 对应的语言输出你的推理思考步骤、内容和结果
|
||||
|
||||
### 其他规则:
|
||||
请使用英语(English)输出
|
||||
{rule}
|
||||
chart:
|
||||
system: |
|
||||
@@ -73,8 +74,8 @@ template:
|
||||
```json
|
||||
|
||||
### 请遵守以下输出要求:
|
||||
请逐步推理后给出答案
|
||||
推理过程中不需要输出JSON,仅在最终结果内输出符合要求的JSON
|
||||
- 请逐步推理后给出答案
|
||||
- 推理过程中不需要输出JSON,仅在最终结果内输出符合要求的JSON
|
||||
步骤1: [思考内容]
|
||||
步骤2: [思考内容]
|
||||
……
|
||||
@@ -86,8 +87,9 @@ template:
|
||||
### 问题:
|
||||
{question}
|
||||
|
||||
### 请使用 i18n: {lang} 对应的语言输出你的推理思考步骤、内容和结果
|
||||
|
||||
### 其他规则:
|
||||
请使用英语(English)输出
|
||||
{rule}
|
||||
guess:
|
||||
system: |
|
||||
|
||||
Reference in New Issue
Block a user