如何让GPT API返回指定情感数组中的匹配元素?
实现指定情感列表的精准返回
修改提示词与代码逻辑
要让GPT严格返回指定数组内的情感词,核心是在提示中明确约束范围和输出要求,同时可增加结果校验确保稳定性。
优化后的完整代码
def infer_feeling(text): emotions = ["happiness", "sadness", "anger", "fear", "trust", "curiosity", "hope", "despair"] # 构造带明确约束的提示词 prompt = f"""从以下指定情感列表中选择最匹配文本的情感,仅返回情感词本身,不要任何额外内容: 情感列表:{', '.join(emotions)} 文本:{text} 匹配情感:""" response = openai.ChatCompletion.create( model=model, messages=[ {"role": "system", "content": "你是严格执行指令的情感分析助手,仅返回指定列表中的情感词。"}, {"role": "user", "content": prompt} ] ) reply = response.choices[0].message['content'].strip() # 可选:增加容错,若返回不在列表内则处理 if reply not in emotions: reply = "unknown" return reply
关键调整说明
- 系统提示:明确GPT的执行边界,强调仅返回指定列表内的内容
- 用户提示:清晰列出允许的情感选项,重复强调输出格式要求,避免冗余内容
- 结果校验:增加对返回值的校验,防止出现不符合要求的输出,提升接口稳定性
内容的提问来源于stack exchange,提问作者mhmtemnacr
相关产品推荐
相关产品推荐

