Skip to content

Commit f86b2f6

Browse files
committed
feat: add SQL examples in prompt
1 parent 6f78351 commit f86b2f6

File tree

19 files changed

+506
-31
lines changed

19 files changed

+506
-31
lines changed

backend/alembic/env.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
# from apps.settings.models.setting_models import SQLModel
2727
# from apps.chat.models.chat_model import SQLModel
2828
from apps.terminology.models.terminology_model import SQLModel
29+
from apps.data_training.models.data_training_model import SQLModel
2930
# from apps.dashboard.models.dashboard_model import SQLModel
3031
from common.core.config import settings # noqa
3132

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
"""042_data_training
2+
3+
Revision ID: a487d9c69341
4+
Revises: c4c3c36b720d
5+
Create Date: 2025-09-15 15:41:43.332771
6+
7+
"""
8+
from alembic import op
9+
import sqlalchemy as sa
10+
import sqlmodel.sql.sqltypes
11+
from sqlalchemy.dialects import postgresql
12+
import pgvector
13+
14+
# revision identifiers, used by Alembic.
15+
revision = 'a487d9c69341'
16+
down_revision = 'c4c3c36b720d'
17+
branch_labels = None
18+
depends_on = None
19+
20+
21+
def upgrade():
22+
# ### commands auto generated by Alembic - please adjust! ###
23+
op.create_table('data_training',
24+
sa.Column('id', sa.BigInteger(), sa.Identity(always=True), nullable=False),
25+
sa.Column('oid', sa.BigInteger(), nullable=True),
26+
sa.Column('datasource', sa.BigInteger(), nullable=True),
27+
sa.Column('create_time', sa.DateTime(), nullable=True),
28+
sa.Column('question', sqlmodel.sql.sqltypes.AutoString(length=255), nullable=True),
29+
sa.Column('description', sa.Text(), nullable=True),
30+
sa.Column('embedding', pgvector.sqlalchemy.vector.VECTOR(), nullable=True),
31+
sa.PrimaryKeyConstraint('id')
32+
)
33+
34+
# ### end Alembic commands ###
35+
36+
37+
def downgrade():
38+
# ### commands auto generated by Alembic - please adjust! ###
39+
40+
op.drop_table('data_training')
41+
# ### end Alembic commands ###

backend/apps/api.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from fastapi import APIRouter
22

33
from apps.terminology.api import terminology
4+
from apps.data_training.api import data_training
45
from apps.chat.api import chat
56
from apps.dashboard.api import dashboard_api
67
from apps.datasource.api import datasource
@@ -14,6 +15,7 @@
1415
api_router.include_router(assistant.router)
1516
api_router.include_router(aimodel.router)
1617
api_router.include_router(terminology.router)
18+
api_router.include_router(data_training.router)
1719
api_router.include_router(datasource.router)
1820
api_router.include_router(chat.router)
1921
api_router.include_router(dashboard_api.router)

backend/apps/chat/models/chat_model.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,11 +172,13 @@ class AiModelQuestion(BaseModel):
172172
filter: str = []
173173
sub_query: Optional[list[dict]] = None
174174
terminologies: str = ""
175+
data_training: str = ""
175176
error_msg: str = ""
176177

177178
def sql_sys_question(self):
178179
return get_sql_template()['system'].format(engine=self.engine, schema=self.db_schema, question=self.question,
179-
lang=self.lang, terminologies=self.terminologies)
180+
lang=self.lang, terminologies=self.terminologies,
181+
data_training=self.data_training)
180182

181183
def sql_user_question(self, current_time: str):
182184
return get_sql_template()['user'].format(engine=self.engine, schema=self.db_schema, question=self.question,

backend/apps/data_training/__init__.py

Whitespace-only changes.

backend/apps/data_training/api/__init__.py

Whitespace-only changes.
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
from typing import Optional
2+
3+
from fastapi import APIRouter, Query
4+
5+
from apps.data_training.curd.data_training import page_data_training, create_training, update_training, delete_training
6+
from apps.data_training.models.data_training_model import DataTrainingInfo
7+
from common.core.deps import SessionDep, CurrentUser, Trans
8+
9+
router = APIRouter(tags=["DataTraining"], prefix="/system/data-training")
10+
11+
12+
@router.get("/page/{current_page}/{page_size}")
13+
async def pager(session: SessionDep, current_user: CurrentUser, current_page: int, page_size: int,
14+
question: Optional[str] = Query(None, description="搜索问题(可选)")):
15+
current_page, page_size, total_count, total_pages, _list = page_data_training(session, current_page, page_size,
16+
question,
17+
current_user.oid)
18+
19+
return {
20+
"current_page": current_page,
21+
"page_size": page_size,
22+
"total_count": total_count,
23+
"total_pages": total_pages,
24+
"data": _list
25+
}
26+
27+
28+
@router.put("")
29+
async def create_or_update(session: SessionDep, current_user: CurrentUser, trans: Trans, info: DataTrainingInfo):
30+
oid = current_user.oid
31+
if info.id:
32+
return update_training(session, info, oid, trans)
33+
else:
34+
return create_training(session, info, oid, trans)
35+
36+
37+
@router.delete("")
38+
async def delete(session: SessionDep, id_list: list[int]):
39+
delete_training(session, id_list)

backend/apps/data_training/curd/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)