AI编码prompt编写及内在逻辑

发布于:2024-04-26 ⋅ 阅读:(25) ⋅ 点赞:(0)

最近在做一个项目,涉及AI编码表和标准码表。那么什么AI编码表,什么是标准码表,AI编码表生成的逻辑是什么呢?

1. 什么是AI编码表,什么是标准码表?

AI编码表:由AI生成的码表。
标准码表:根据AI编码结果,人工校对后的表。

2. AI编码码表的生成逻辑是怎么样的?

一般在调用GPT接口前,我们会写一个prompt,告诉它生成的规则,是怎么样的。

举例来说,我要想要GPT分析原文内容,得到观点、品牌、产品。其中,观点包括多个nets-code,给出的范例具体如下表。( nets指的时指定分析维度,code是编码结果。)

表中品牌和产品是一个二元组,当这两者其中一个不相同时AI会新增答案。比如表中的原文序号3的原文内容包括3个品牌:必胜客、萨莉亚、麦当劳,那么原文序号3AI给出的编码会有3个答案。

AI会根据范例,对新的数据进行标注。

原文序号 原文内容 观点 品牌 产品 评价 推荐来源 消费意愿
1 我喜欢吃麦当劳的甜筒 [‘评价-喜欢’] 麦当劳 甜筒 喜欢
2 朋友一直推荐我吃肯德基的全家桶,但是我晚上想吃尊宝的榴莲pizza ,感觉还不错 [‘推荐来源-朋友’] 肯德基 全家桶 朋友
2 朋友一直推荐我吃肯德基的全家桶,但是我晚上想吃尊宝的榴莲pizza,感觉还不错 [‘评价-感觉还不错’,‘消费意愿-想品尝’] 尊宝 榴莲pizza 想品尝
3 学校门口有必胜客、萨莉亚、麦当劳,你看你想吃啥 [ ] 必胜客 未提及
3 学校门口有必胜客、萨莉亚、麦当劳,你看你想吃啥 [ ] 萨莉亚 未提及
3 学校门口有必胜客、萨莉亚、麦当劳,你看你想吃啥 [ ] 麦当劳 未提及

3. prompt构建

那么,我们就可以写这样的prompt:

def create_prompt(texts, n, common_fields, nets):
    '''
    构建prompt
    
    @param
    texts (list<dict<str>>):需要打标的文本
    n (int): n元组
    common_fields (str): n元组的公共标签字段。示例:品牌名、产品、宠物种类
    nets (str): 指定分析维度。示例:评价、推荐来源、消费意愿
    
    @return
    prompt (str): 输出的 prompt
    '''

    common_fields = 品牌、产品"
    nets = "评价、推荐来源、消费意愿"
    n = 2
    m = n-1
    template_texts = [{'原文序号': 1, '原文': '我喜欢吃麦当劳的甜筒}, 
                        {'原文序号': 2, '原文': '朋友一直推荐我吃肯德基的全家桶,但是我晚上想吃尊宝的榴莲pizza'}, 
                        {'原文序号': 3, '原文': '学校门口有必胜客、萨莉亚、麦当劳,你看你想吃啥'}
                         ]
    
    template_results = [{'原文序号': 1, '标注结果': [{"品牌": "麦当劳", "产品": "甜筒", "观点": ["评价-喜欢"]}
                                            ]},
                          {'原文序号': 2, '标注结果': [{"品牌": "肯德基", "产品": 全家桶", "观点": ["推荐来源-朋友"]},
                          {'原文序号': 2, '标注结果': [{"品牌": "尊宝", "产品": 榴莲pizza", "观点": ["评价-感觉还不错", "消费意愿-想品尝"]}
                                              ]},
                          {'原文序号': 3, '标注结果': [{"品牌": "必胜客, "产品": "未提及", "观点": [ ]},
                                               {"品牌": "萨莉亚", , "产品": "未提及", "观点": [ ]},
                                                {"品牌": "麦当劳, , "产品": "未提及", "观点": [ ]}
                                              ]}
                         ]
    
    prompt = f'''你是1个数据标注师,要求你标注文本的观点{n}元组,必须满足以下要求:
    1.观点{n}元组的标签为:{common_fields}、观点
    2.1条文本可能有多个观点{n}元组,但每个观点{n}元组的{common_fields}必须唯一
    3.如果文本中没有提及{common_fields}{m}个标签相关的内容,标“未提及”
    4.观点可以从{nets}等方面具体讲述
    5.不要进行任何解释,直接以Python列表格式输出原文序号和标注结果
    
    以下是标注范例供你参考:
    文本:
    {template_texts}
    
    标注结果:
    {template_results}
    
    以下是你本次任务需要打标的文本:
    {texts}
    '''
    
    return prompt

写prompt要注意的:
① 你要告诉AI它的身份,要完成什么样的任务
② 把需要的注意的事项分条列点罗列