创新项目实训-提示词工程

1.编写明确具体的指令

1.使用分隔符清楚地知识输入的不同部分,将特定的文本部分与prompt的其他部分分隔开。如``` 三个单引号。分隔符还可以避免指令冲突。

2.要求模型使用结构化输出,你可以在prompt中提供自定义的格式,或者直接要求模型以json或HTML格式输出

3.可以要求模型检查条件。比如,检查一段文本中是否存在步骤,如果存在,那么打印出步骤,如果不存在,简单打印出没有步骤。

4.少量训练提示。在user消息中给出问题和模型应做出的回答。

2.使模型在问题上花更多时间思考。

这通常意味着模型会花费更多算力,而你能得到更好的结果。

1.为模型指定完成任务的步骤。如 “依次执行以下步骤:”

2.在判断一个解析是否正确时,让模型自己做一遍,并令模型在做完之前不得判断答案的正确与否

3.避免幻觉:要求模型首先在知识库中找到任何相关的引用,并要求模型使用引用回答问题。

3.迭代提示词,直到对结果满意。

提示词需要不断迭代设计,直到你对模型的输出满意。

4.杂项

1.可以直接将prompt放入user message,事实上,如果不做聊天机器人等类似应用,不需要system消息和assistant消息。

system消息确定模型的行为,人设,作为高层指令用于对话,如同在assistant的耳边低语。

5.辅助函数

def get_completion(text, model="gpt-3.5-turbo"):
    prompt = f"""
    我将给你一个数学题,这个数学题被我用两个&符号分隔开。请你分析这个数学题涉及的知识点。
    你应当依次执行以下步骤:
    1.解答这道数学题,但不要输出解答过程。
    2.阅读上一步的解答过程,总结出所使用的数学知识点,但不要输出。这些知识点组成集合A。
    3.判断集合A中的每个知识点是否在第1步的解答过程中出现,如果没有出现,将其从集合A丢弃。
    4.解答这道数学题,但不要输出解答过程。
    5.阅读上一步的解答过程,总结出所使用的数学知识点,但不要输出。这些知识点组成集合B。
    6.判断集合B中的每个知识点是否在第4步的解答过程中出现,如果没有出现,将其从集合B丢弃。
    7.解答这道数学题,但不要输出解答过程。
    8.阅读上一步的解答过程,总结出所使用的数学知识点,但不要输出。这些知识点组成集合C。
    9.判断集合A中的每个知识点是否在第7步的解答过程中出现,如果没有出现,将其从集合C丢弃。
    输出格式为json格式,输出内容为A、B和C中的知识点,语言应当为中文。不要输出除了知识点以外的内容。
    &{text}&
    """
    messages = [{"role": "user", "content": prompt}]
    completion = openai.chat.completions.create(
        model=model,
        messages=messages,
        temperature=0,
        max_tokens=100
     )
    return completion.choices[0].message.content
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值