MCPcopy Create free account
hub / github.com/dataease/SQLBot / init_messages

Method init_messages

backend/apps/chat/task/llm.py:223–301  ·  view source on GitHub ↗
(self, session: Session)

Source from the content-addressed store, hash-verified

221 return True
222
223 def init_messages(self, session: Session):
224
225 self.choose_table_schema(session)
226
227 last_sql_messages: List[dict[str, Any]] = self.generate_sql_logs[-1].messages if len(
228 self.generate_sql_logs) > 0 else []
229 if self.chat_question.regenerate_record_id:
230 # filter record before regenerate_record_id
231 _temp_log = next(
232 filter(lambda obj: obj.pid == self.chat_question.regenerate_record_id, self.generate_sql_logs), None)
233 last_sql_messages: List[dict[str, Any]] = _temp_log.messages if _temp_log else []
234
235 # 排除所有的系统提示词
236 last_sql_messages = [obj for obj in last_sql_messages if obj.get("sqlbot_system") != True]
237
238 count_limit = self.base_message_round_count_limit
239
240 self.sql_message = []
241 # add sys prompt
242 _system_templates = self.chat_question.sql_sys_question(self.ds.type, self.enable_sql_row_limit)
243 self.sql_message.append(SystemPromptMessage(content=_system_templates['system']))
244 self.sql_message.append(HumanPromptMessage(content=_system_templates['rules']))
245 self.sql_message.append(
246 AIPromptMessage(content='我已掌握所有规则,包括表结构、SQL规范、安全限制和输出格式,我会严格遵守这些规则。'))
247 self.sql_message.append(HumanPromptMessage(content=_system_templates['schema']))
248 self.sql_message.append(
249 AIPromptMessage(content='我已确认您提供的数据库信息与表结构schema,我生成的SQL不会超出您提供的范围。'))
250 if _system_templates.get('custom_prompt'):
251 self.sql_message.append(HumanPromptMessage(content=_system_templates['custom_prompt']))
252 self.sql_message.append(AIPromptMessage(content='我已确认您提供的额外信息,我会进行参考。'))
253 if _system_templates.get('terminologies'):
254 self.sql_message.append(HumanPromptMessage(content=_system_templates['terminologies']))
255 self.sql_message.append(AIPromptMessage(content='我已确认您提供的术语信息,我会进行参考。'))
256 if _system_templates.get('data_training'):
257 self.sql_message.append(HumanPromptMessage(content=_system_templates['data_training']))
258 self.sql_message.append(AIPromptMessage(content='我已确认您提供的SQL示例,我会进行参考。'))
259
260 if last_sql_messages is not None and len(last_sql_messages) > 0:
261 last_rounds = get_last_conversation_rounds(last_sql_messages, rounds=count_limit)
262
263 for _msg_dict in last_rounds:
264 _msg: BaseMessage
265 if _msg_dict.get('type') == 'human':
266 _msg = HumanMessage(content=_msg_dict.get('content'))
267 self.sql_message.append(_msg)
268 elif _msg_dict.get('type') == 'ai':
269 _msg = AIMessage(content=_msg_dict.get('content'))
270 self.sql_message.append(_msg)
271
272 last_chart_messages: List[dict[str, Any]] = self.generate_chart_logs[-1].messages if len(
273 self.generate_chart_logs) > 0 else []
274 if self.chat_question.regenerate_record_id:
275 # filter record before regenerate_record_id
276 _temp_log = next(
277 filter(lambda obj: obj.pid == self.chat_question.regenerate_record_id, self.generate_chart_logs), None)
278 last_chart_messages: List[dict[str, Any]] = _temp_log.messages if _temp_log else []
279
280 # 排除所有的系统提示词

Callers 2

select_datasourceMethod · 0.95
run_taskMethod · 0.95

Calls 11

choose_table_schemaMethod · 0.95
SystemPromptMessageClass · 0.90
HumanPromptMessageClass · 0.90
AIPromptMessageClass · 0.90
nextFunction · 0.85
filterFunction · 0.85
sql_sys_questionMethod · 0.80
chart_sys_questionMethod · 0.80
getMethod · 0.65
appendMethod · 0.45

Tested by

no test coverage detected