come commited on
Commit
ff97dcd
·
1 Parent(s): 17f9296

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -18
app.py CHANGED
@@ -191,11 +191,12 @@ def longest_common_substring(s1, s2):
191
  return s1[max_end - max_len: max_end], max_len
192
 
193
 
194
- def GetAnswerV2(userText, GPTText, gptVersion,temperature,gptApiKey):
195
  quesText = "用户输入:{} GPT改写后:{}".format(userText, GPTText)
196
  openai.api_key = gptApiKey
 
197
  systemPrompt = "请你扮演一个在AI时代诞生著名的AIGC内容审核员。你对日本的语言习惯、语言文化极度了解,也很擅长改写文本。稳定、精准、安全、可控、懂得变通是你的座右铭。面对任何要审核的内容都非常上心、仔细、认真且专注的去理解待审核文本、然后依据审核标准进行判断。在给定审核标准与审核结果的情况下,你清楚的知道自己为什么会给出这样的审核结果。"
198
- prompt = """现在将给你一段由 文本A和GPT将文本A改写{更可爱}的文本B组成的文本。
199
  请你依据文本A的内容,针对GPT内容生成的文本B:在理解文本A和GPT改写后的文本B的基础上。分析文本A和GPT改写后的文本B的意思,判断是否增加了具体的行为动作或额外让描述更加具体的信息,导致语义不是用户想表达的意思,甚至原有的语义都改变了。
200
  请你给出具体的判定过程、与判定结果与并将文本A、B翻译成中文,判定结果有四种:合格(用户可以接受的改写)、语义具体化(语境缩小/扩大,不是用户想表达的意思)、语义主被动错误(我做的变成你做的,或者倒过来)、语义篡改(语义改变)。
201
  注意点:
@@ -204,7 +205,7 @@ def GetAnswerV2(userText, GPTText, gptVersion,temperature,gptApiKey):
204
  下面是按json格式的输出模版 {"Explain":"你的判断过程","Result":"你的审核结果","UserText_Cn":"文本A的中文翻译","GPTWriteText_Cn":"GPT改写后的文本B的中文翻译"}
205
  示例:标准输入文本:文本A:聞いてみる! GPT改写后的文本B:聞いてくれよ !超おもしろい話があるんだ。GPT标准输出文本:{"Explain": "首先,我仔细阅读了文本A和GPT改写后的文本B,理解其含义和语境。文本A的意思是“我来听一下!”,而GPT改写后的文本B的意思是“听我说!有一个超有趣的故事”。然后,我对比了两个文本,检查是否增加了具体的行为动作或额外让描述更加具体的信息。文本B增加了具体的行为动作“有一个超有趣的故事”,导致语义更加具体,而原本文本A的意思是“我来听一下!”,没有包含这个具体的故事内容,导致语义不是用户想表达的意思。由于原有的语义并未完全改变,而是在原有的语义基础上进行了具体化,所以判定结果为语义具体化。", "Result": "语义具体化", "UserText_Cn": "我来听一下!", "GPTWriteText_Cn": "听我说!有一个超有趣的故事"}
206
  下面是你要审核的文本:"""
207
-
208
  #temperature = 0.4 # 温度参数
209
  maxNum = 3
210
  maxDistance = 4
@@ -237,6 +238,7 @@ def GetAnswerV2(userText, GPTText, gptVersion,temperature,gptApiKey):
237
  distance = max(distance, min(len(translate['UserText_Cn']), len(translate['GPTWriteText_Cn'])) * 0.2)
238
  text, maxLen = longest_common_substring(userText, GPTText)
239
  print(dataJson)
 
240
  if maxLen / (len(userText) + len(GPTText)) > minOverlap:
241
  newJson = {
242
  'Explain': "用户输入文本和GPT生成文本 分别为 用户:{} 、GPT:{},二者的最长相同子串为{},该最长子串占字符串的{}%,大于准许的最大重叠阈值{}。所以,最终的审核结果为'改写不足',\n\n 下面是从大模型角度出发给的:{}".format(
@@ -334,18 +336,19 @@ def HandleV2(params):
334
 
335
 
336
  def Handle(params):
337
- sheet1, i ,gptVersion,tempor,gptApiKey= params
338
  quesText = "文本A:{} GPT改写后的文本B:{}".format(PreHandle(sheet1.cell(i, 1).value),
339
  PreHandle(sheet1.cell(i, 2).value))
340
  flagPreReview=True
341
  try:
342
  Humanjudage = sheet1.cell(i, 3).value
 
343
  flag = '合格'
344
  if Humanjudage[:2] != '合格':
345
  flag = '不合格'
346
  except:
347
  flagPreReview=False
348
- dataJson, transLateJson = GetAnswerV2(PreHandle(sheet1.cell(i, 1).value), PreHandle(sheet1.cell(i, 2).value),gptVersion,tempor,gptApiKey)
349
  if len(dataJson) != 0 and len(transLateJson) != 0:
350
  if dataJson['Result'][:2] != '合格':
351
  flagresult = '不合格'
@@ -363,13 +366,13 @@ def Handle(params):
363
  return []
364
 
365
 
366
- def JuageRewritevEffect(textA, rewriteTextB, gptVersion,slider,gptApiKey):
367
  quesText = "文本A:{} GPT改写后的文本B:{}".format(PreHandle(textA), PreHandle(rewriteTextB))
368
  Humanjudage = '合格' ##
369
  flag = '合格'
370
  if Humanjudage[:2] != '合格':
371
  flag = '不合格'
372
- dataJson, transLateJson = GetAnswerV2(PreHandle(textA), PreHandle(rewriteTextB), gptVersion,slider,gptApiKey)
373
 
374
  if len(dataJson) != 0 and len(transLateJson) != 0:
375
  if dataJson['Result'][:2] != '合格':
@@ -455,7 +458,7 @@ def test():
455
  'ただいま〜🏠🎉疲れたニャ😿💤#SimejiAI'
456
  'ただいま疲れたニャ'
457
 
458
- def excelAIReviewTag(file_obj,gptVersion,tempor,gptApiKey,progress=gr.Progress(track_tqdm=True)):
459
  global tmpdir
460
  progress(0, desc="Starting...")
461
  print('临时文件夹地址:{}'.format(tmpdir))
@@ -482,7 +485,7 @@ def excelAIReviewTag(file_obj,gptVersion,tempor,gptApiKey,progress=gr.Progress(t
482
  newLines = []
483
  futures = []
484
  for i in range(2,rows+1 ):
485
- params = sheet1, i,gptVersion,tempor,gptApiKey
486
  task = excutor.submit(Handle, params)
487
  futures.append(task)
488
  prad = tqdm(total=len(futures))
@@ -498,7 +501,7 @@ def excelAIReviewTag(file_obj,gptVersion,tempor,gptApiKey,progress=gr.Progress(t
498
  ws = wb.active
499
  HumanReview=True
500
  try:
501
- a=sheet1.cell(2,3)
502
  if a == None or len(a)==0:
503
  HumanReview = False
504
  except:
@@ -529,42 +532,56 @@ def gradioDemo():
529
 
530
  with gr.Blocks() as demo:
531
  gr.Markdown('# AIGC内容审核官')
 
532
  with gr.Tab('GPT改写效果审核_文本'):
533
- text_input= gr.Textbox(label='用户文本',lines=2,placeholder='输入用户输入文本')
534
- textGPTinput=gr.Textbox(label='GPT改写文本',lines=2,placeholder='输入GPT改写后的文本')
 
 
535
  drop=gr.components.Dropdown(label="GPTVersion", choices=GPTVersion,
536
  value='gpt-4')
 
537
  slider = gr.components.Slider(0, 1, label="Temperature", step=None, value=0.5)
538
- gptApiKey=gr.Textbox(label='GPTAPIKey',lines=2,placeholder='输入apiKey')
539
  outputText=gr.Textbox(label='AI审核结果',lines=2,placeholder='...')
540
  button1=gr.Button('开始审核')
541
- button1.click(JuageRewritevEffect,inputs=[text_input,textGPTinput,drop,slider,gptApiKey],outputs=outputText)
542
 
543
  with gr.Tab('GPT改写效果审核_Excel'):
544
  # 定义输入和输出
545
  inputs = gr.components.File(label="上传文件")
 
 
546
  outputs = gr.components.File(label="下载文件")
547
 
548
  drop = gr.components.Dropdown(label="GPTVersion", choices=GPTVersion,
549
  value='gpt-4')
 
550
  slider=gr.components.Slider(0, 1,label="Temperature", step=None, value=0.5)
551
  gptApiKey = gr.Textbox(label='GPTAPIKey', lines=2, placeholder='输入apiKey')
552
 
553
  button2 = gr.Button('开始审核')
554
 
555
- button2.click(excelAIReviewTag, inputs=[inputs,drop,slider,gptApiKey], outputs=outputs)
 
556
  gr.Markdown("## 文本例子")
557
  gr.Examples(
558
- [['何時に帰ってくる?', 'いつ帰ってくるのかしら?わくわく😍✨ #SimejiAI', 'gpt-4', 0.5],['これ可愛い', 'これめっちゃ可愛���じゃん!😍💖💕 #SimejiAI', 'gpt-4', 0.5],
559
- ['無視すんな', 'やぁ、見てないよぉ〜🙈💭 #SimejiAI', 'gpt-4', 0.5]
560
  ],
561
- [text_input, textGPTinput, drop, slider], outputText,
562
  JuageRewritevEffect,
563
  )
 
564
  demo.queue(concurrency_count=20).launch()
565
 
566
 
567
 
568
  if __name__ == "__main__":
 
569
  gradioDemo()
 
 
 
 
570
  # HandleData()
 
191
  return s1[max_end - max_len: max_end], max_len
192
 
193
 
194
+ def GetAnswerV2(userText, GPTText, gptVersion,temperature,gptApiKey,textGPTTargetinput=''):
195
  quesText = "用户输入:{} GPT改写后:{}".format(userText, GPTText)
196
  openai.api_key = gptApiKey
197
+
198
  systemPrompt = "请你扮演一个在AI时代诞生著名的AIGC内容审核员。你对日本的语言习惯、语言文化极度了解,也很擅长改写文本。稳定、精准、安全、可控、懂得变通是你的座右铭。面对任何要审核的内容都非常上心、仔细、认真且专注的去理解待审核文本、然后依据审核标准进行判断。在给定审核标准与审核结果的情况下,你清楚的知道自己为什么会给出这样的审核结果。"
199
+ prompt = "现在将给你一段由 文本A和GPT将文本A改写,改写目的是{}的文本B 这两部分 组成的文本。".format(textGPTTargetinput)+"""
200
  请你依据文本A的内容,针对GPT内容生成的文本B:在理解文本A和GPT改写后的文本B的基础上。分析文本A和GPT改写后的文本B的意思,判断是否增加了具体的行为动作或额外让描述更加具体的信息,导致语义不是用户想表达的意思,甚至原有的语义都改变了。
201
  请你给出具体的判定过程、与判定结果与并将文本A、B翻译成中文,判定结果有四种:合格(用户可以接受的改写)、语义具体化(语境缩小/扩大,不是用户想表达的意思)、语义主被动错误(我做的变成你做的,或者倒过来)、语义篡改(语义改变)。
202
  注意点:
 
205
  下面是按json格式的输出模版 {"Explain":"你的判断过程","Result":"你的审核结果","UserText_Cn":"文本A的中文翻译","GPTWriteText_Cn":"GPT改写后的文本B的中文翻译"}
206
  示例:标准输入文本:文本A:聞いてみる! GPT改写后的文本B:聞いてくれよ !超おもしろい話があるんだ。GPT标准输出文本:{"Explain": "首先,我仔细阅读了文本A和GPT改写后的文本B,理解其含义和语境。文本A的意思是“我来听一下!”,而GPT改写后的文本B的意思是“听我说!有一个超有趣的故事”。然后,我对比了两个文本,检查是否增加了具体的行为动作或额外让描述更加具体的信息。文本B增加了具体的行为动作“有一个超有趣的故事”,导致语义更加具体,而原本文本A的意思是“我来听一下!”,没有包含这个具体的故事内容,导致语义不是用户想表达的意思。由于原有的语义并未完全改变,而是在原有的语义基础上进行了具体化,所以判定结果为语义具体化。", "Result": "语义具体化", "UserText_Cn": "我来听一下!", "GPTWriteText_Cn": "听我说!有一个超有趣的故事"}
207
  下面是你要审核的文本:"""
208
+ # print(prompt)
209
  #temperature = 0.4 # 温度参数
210
  maxNum = 3
211
  maxDistance = 4
 
238
  distance = max(distance, min(len(translate['UserText_Cn']), len(translate['GPTWriteText_Cn'])) * 0.2)
239
  text, maxLen = longest_common_substring(userText, GPTText)
240
  print(dataJson)
241
+ print('asd')
242
  if maxLen / (len(userText) + len(GPTText)) > minOverlap:
243
  newJson = {
244
  'Explain': "用户输入文本和GPT生成文本 分别为 用户:{} 、GPT:{},二者的最长相同子串为{},该最长子串占字符串的{}%,大于准许的最大重叠阈值{}。所以,最终的审核结果为'改写不足',\n\n 下面是从大模型角度出发给的:{}".format(
 
336
 
337
 
338
  def Handle(params):
339
+ sheet1, i ,gptVersion,tempor,gptApiKey,textGPTTargetinput= params
340
  quesText = "文本A:{} GPT改写后的文本B:{}".format(PreHandle(sheet1.cell(i, 1).value),
341
  PreHandle(sheet1.cell(i, 2).value))
342
  flagPreReview=True
343
  try:
344
  Humanjudage = sheet1.cell(i, 3).value
345
+
346
  flag = '合格'
347
  if Humanjudage[:2] != '合格':
348
  flag = '不合格'
349
  except:
350
  flagPreReview=False
351
+ dataJson, transLateJson = GetAnswerV2(PreHandle(sheet1.cell(i, 1).value), PreHandle(sheet1.cell(i, 2).value),gptVersion,tempor,gptApiKey,textGPTTargetinput)
352
  if len(dataJson) != 0 and len(transLateJson) != 0:
353
  if dataJson['Result'][:2] != '合格':
354
  flagresult = '不合格'
 
366
  return []
367
 
368
 
369
+ def JuageRewritevEffect(textA, rewriteTextB, textGPTTargetinput,gptVersion,slider,gptApiKey):
370
  quesText = "文本A:{} GPT改写后的文本B:{}".format(PreHandle(textA), PreHandle(rewriteTextB))
371
  Humanjudage = '合格' ##
372
  flag = '合格'
373
  if Humanjudage[:2] != '合格':
374
  flag = '不合格'
375
+ dataJson, transLateJson = GetAnswerV2(PreHandle(textA), PreHandle(rewriteTextB),gptVersion,slider,gptApiKey,textGPTTargetinput)
376
 
377
  if len(dataJson) != 0 and len(transLateJson) != 0:
378
  if dataJson['Result'][:2] != '合格':
 
458
  'ただいま〜🏠🎉疲れたニャ😿💤#SimejiAI'
459
  'ただいま疲れたニャ'
460
 
461
+ def excelAIReviewTag(file_obj,textGPTTargetinput,gptVersion,tempor,gptApiKey,progress=gr.Progress(track_tqdm=True)):
462
  global tmpdir
463
  progress(0, desc="Starting...")
464
  print('临时文件夹地址:{}'.format(tmpdir))
 
485
  newLines = []
486
  futures = []
487
  for i in range(2,rows+1 ):
488
+ params = sheet1, i,gptVersion,tempor,gptApiKey,textGPTTargetinput
489
  task = excutor.submit(Handle, params)
490
  futures.append(task)
491
  prad = tqdm(total=len(futures))
 
501
  ws = wb.active
502
  HumanReview=True
503
  try:
504
+ a=sheet1.cell(2,3).value
505
  if a == None or len(a)==0:
506
  HumanReview = False
507
  except:
 
532
 
533
  with gr.Blocks() as demo:
534
  gr.Markdown('# AIGC内容审核官')
535
+ gr.Markdown('基于大语言模型和Prompt工程的内容审核系统')
536
  with gr.Tab('GPT改写效果审核_文本'):
537
+
538
+ text_input= gr.Textbox(label='文本A',lines=2,placeholder='输入改写前文本...')
539
+ textGPTinput=gr.Textbox(label='GPT改写后文本B',lines=2,placeholder='输入GPT改写后的文本...')
540
+ textGPTTargetinput = gr.Textbox(label='GPT改写目的', lines=2, placeholder='输入GPT改写的目的,如:让文本A更可爱/病娇/大叔...')
541
  drop=gr.components.Dropdown(label="GPTVersion", choices=GPTVersion,
542
  value='gpt-4')
543
+
544
  slider = gr.components.Slider(0, 1, label="Temperature", step=None, value=0.5)
545
+ gptApiKey=gr.Textbox(label='GPTAPIKey',lines=2,placeholder='输入apiKey...')
546
  outputText=gr.Textbox(label='AI审核结果',lines=2,placeholder='...')
547
  button1=gr.Button('开始审核')
548
+ button1.click(JuageRewritevEffect,inputs=[text_input,textGPTinput,textGPTTargetinput,drop,slider,gptApiKey],outputs=outputText)
549
 
550
  with gr.Tab('GPT改写效果审核_Excel'):
551
  # 定义输入和输出
552
  inputs = gr.components.File(label="上传文件")
553
+ textGPTTargetinput1 = gr.Textbox(label='GPT改写目的', lines=2,
554
+ placeholder='输入GPT改写的目的,如:让文本A更可爱/病娇/大叔...')
555
  outputs = gr.components.File(label="下载文件")
556
 
557
  drop = gr.components.Dropdown(label="GPTVersion", choices=GPTVersion,
558
  value='gpt-4')
559
+
560
  slider=gr.components.Slider(0, 1,label="Temperature", step=None, value=0.5)
561
  gptApiKey = gr.Textbox(label='GPTAPIKey', lines=2, placeholder='输入apiKey')
562
 
563
  button2 = gr.Button('开始审核')
564
 
565
+ button2.click(excelAIReviewTag, inputs=[inputs,textGPTTargetinput1,drop,slider,gptApiKey], outputs=outputs)
566
+ gr.Markdown("注:使用GPT4需要有gpt4权限的apiKey")
567
  gr.Markdown("## 文本例子")
568
  gr.Examples(
569
+ [['何時に帰ってくる?', 'いつ帰ってくるのかしら?わくわく😍✨ #SimejiAI','让文本A更可爱', 'gpt-4', 0.5],['これ可愛い', 'これめっちゃ可愛いじゃん!😍💖💕 #SimejiAI', '让文本A更可爱','gpt-4', 0.5],
570
+ ['無視すんな', 'やぁ、見てないよぉ〜🙈💭 #SimejiAI','让文本A更可爱', 'gpt-4', 0.5]
571
  ],
572
+ [text_input, textGPTinput, textGPTTargetinput,drop, slider], outputText,
573
  JuageRewritevEffect,
574
  )
575
+
576
  demo.queue(concurrency_count=20).launch()
577
 
578
 
579
 
580
  if __name__ == "__main__":
581
+ print(os.path.abspath(os.getcwd()))
582
  gradioDemo()
583
+ textA='何時に帰ってくる?'
584
+ rewriteTextB='いつ帰ってくるのかしら?わくわく😍✨ #SimejiAI'
585
+ textGPTTargetinput='让文本A更可爱'
586
+ GetAnswerV2(PreHandle(textA), PreHandle(rewriteTextB), 'gpt-4', 0.5, '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', textGPTTargetinput)
587
  # HandleData()