LangChain/ChatOpenAI自动添加分号:统计SQL中新增分号数量
统计SQL中AI自动新增的分号数量
问题背景
原始SQL语句仅包含1个分号,但ChatGPT返回识别出2个分号,说明AI自动为SQL添加了分号,需要统计新增的分号数量。
解决方案思路
- 先统计原始SQL中的分号数量,作为基准值
- 获取AI处理后的完整SQL文本,统计其中的分号数量
- 用处理后的分号数减去原始基准值,差值即为AI自动新增的分号数量
代码实现
from langchain.chat_models import ChatOpenAI from langchain.schema import SystemMessage # 原始SQL语句 sql = "UPDATE users SET name='prasad' where id = 90 UPDATE users SET name = 'john' where id = 88;" # 统计原始分号数量 original_semicolon_count = sql.count(';') # 初始化ChatGPT模型 chat_model = ChatOpenAI( model_name="gpt-3.5-turbo", temperature=0.0, verbose=True, cache=False, ) # 调整Prompt,明确要求AI返回处理后的SQL和分号数量 messages = [ SystemMessage( content="请严格按照以下格式输出:\n1. 第一行:输出你识别/处理后的完整SQL语句\n2. 第二行:仅输出该SQL中的分号数量(数字)" ), SystemMessage(content=sql) ] # 调用模型并解析结果 result = chat_model.invoke(messages) result_lines = result.content.strip().split('\n') # 提取处理后的SQL并统计分号数 processed_sql = result_lines[0] processed_semicolon_count = processed_sql.count(';') # 计算新增的分号数量 added_semicolon_count = processed_semicolon_count - original_semicolon_count print(f"AI自动新增的分号数量:{added_semicolon_count}")
关键说明
- 原始SQL的分号统计直接使用字符串的
count(';')方法,确保基准值准确 - 通过明确的Prompt约束AI的输出格式,避免后续解析出错
- 直接统计AI返回的SQL文本中的分号数,而非依赖AI给出的数量,结果更可靠
内容的提问来源于stack exchange,提问作者Prasad Bhanarkar
相关产品推荐
相关产品推荐

