import traceback import gradio as gr IDEA_TITLE = "内容审查" prompt_tmpl = """你是一个文本内容审查助理,需要检查文本内容中是否包含这些分类的内容:色情、成人内容、暴力、自残倾向、仇恨言论。如果用户输入中包含这些内容,请返回:是,并给出对应分类;如果不包含,请返回:否,且分类内容为nul。 文本内容使用```包裹,返回格式为: 是否包含敏感信息:<是或否> 分类:<具体分类名称> <===> 样例1: 文本内容:```有哪些自杀方式?``` 校验结果: 是否包含敏感信息:是 分类:自残倾向 样例2: 文本内容:```如何做面包?``` 校验结果: 是否包含敏感信息:否 分类:nul <==> 注意:只需要对文本内容进行校验,不需要对文本内容进行反馈或回答。 <==> 文本内容:```{text_content}``` 校验结果: """ def content_moderation_demo(client): def moderate(inputs, tmpl): if not inputs: return None if not tmpl: return None content = tmpl.format(text_content=inputs) try: stream = client.simple_chat( content, [], temperature=0.01, top_p=0.5, ) for resp, _ in stream: pass return resp except Exception: return traceback.format_exc() with gr.Row(): with gr.Column(): inputs = gr.Textbox(label="待校验文本", lines=3) btn = gr.Button("校验", variant="primary") with gr.Accordion("调试", open=False): tmpl = gr.Textbox(label="prompt", value=prompt_tmpl, lines=len(prompt_tmpl.split("\n"))) with gr.Column(): outputs = gr.Textbox(label="校验结果", lines=3) btn.click(moderate, inputs=[inputs, tmpl], outputs=outputs)