Spaces:
Runtime error
Runtime error
come
commited on
Commit
·
ff97dcd
1
Parent(s):
17f9296
Update app.py
Browse files
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 = "
|
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),
|
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 |
-
|
534 |
-
|
|
|
|
|
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],['これ可愛い', '
|
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()
|