MCPcopy Index your code
hub / github.com/dataease/SQLBot / create_training

Function create_training

backend/apps/data_training/curd/data_training.py:148–209  ·  view source on GitHub ↗

创建单个数据训练记录 Args: skip_embedding: 是否跳过embedding处理(用于批量插入)

(session: SessionDep, info: DataTrainingInfo, oid: int, trans: Trans, skip_embedding: bool = False)

Source from the content-addressed store, hash-verified

146
147
148def create_training(session: SessionDep, info: DataTrainingInfo, oid: int, trans: Trans, skip_embedding: bool = False):
149 """
150 创建单个数据训练记录
151 Args:
152 skip_embedding: 是否跳过embedding处理(用于批量插入)
153 """
154 # 基本验证
155 if not info.question or not info.question.strip():
156 raise Exception(trans("i18n_data_training.question_cannot_be_empty"))
157
158 if not info.description or not info.description.strip():
159 raise Exception(trans("i18n_data_training.description_cannot_be_empty"))
160
161 create_time = datetime.datetime.now()
162
163 # 检查数据源和高级应用不能同时为空
164 if info.datasource is None and info.advanced_application is None:
165 raise Exception(trans("i18n_data_training.datasource_assistant_cannot_be_none"))
166
167 # 检查重复记录
168 stmt = select(DataTraining.id).where(
169 and_(DataTraining.question == info.question.strip(), DataTraining.oid == oid)
170 )
171
172 if info.datasource is not None and info.advanced_application is not None:
173 stmt = stmt.where(
174 or_(
175 DataTraining.datasource == info.datasource,
176 DataTraining.advanced_application == info.advanced_application
177 )
178 )
179 elif info.datasource is not None and info.advanced_application is None:
180 stmt = stmt.where(DataTraining.datasource == info.datasource)
181 elif info.datasource is None and info.advanced_application is not None:
182 stmt = stmt.where(DataTraining.advanced_application == info.advanced_application)
183
184 exists = session.query(stmt.exists()).scalar()
185
186 if exists:
187 raise Exception(trans("i18n_data_training.exists_in_db"))
188
189 # 创建记录
190 data_training = DataTraining(
191 question=info.question.strip(),
192 description=info.description.strip(),
193 oid=oid,
194 datasource=info.datasource,
195 advanced_application=info.advanced_application,
196 create_time=create_time,
197 enabled=info.enabled if info.enabled is not None else True
198 )
199
200 session.add(data_training)
201 session.flush()
202 session.refresh(data_training)
203 session.commit()
204
205 # 处理embedding(批量插入时跳过)

Callers 2

create_or_updateFunction · 0.90
batch_create_trainingFunction · 0.85

Calls 4

DataTrainingClass · 0.90
addMethod · 0.65
existsMethod · 0.45

Tested by

no test coverage detected