使用gpt-3.5-turbo构建订单查询AI bot返回错误结果求助
问题原因分析
你的AI返回错误结果核心有两个问题:
- 字段混淆:原提示未明确要求严格区分
Destination location(目的地)和Present location(当前位置),AI误将当前位置为纽约的订单当成了目的地为纽约的订单。 - 缺失无匹配处理规则:原提示未说明无符合条件订单时的响应逻辑,AI为了“满足”查询需求,强行匹配错误字段,还出现了订单号写错(TM变成OX)的低级错误。
优化方案
针对上述问题,对prompt进行精准优化,明确规则和字段匹配要求:
优化后的Python代码
from openai import OpenAI import os os.environ["OPENAI_API_KEY"] = "sk-*****************************************" client = OpenAI() prompt = """ 你是物流订单查询AI,仅使用下方「订单列表」中的数据回答「用户问题」,严格遵循以下规则: 1. 明确区分字段:用户查询的是「Destination location(目的地)」,绝对不要混淆「Present location(当前位置)」或其他字段。 2. 逐一核对每个订单: a. 严格检查订单的「Destination location」是否与用户查询的内容完全匹配 b. 匹配成功:完整输出该订单的所有信息,并说明匹配依据(必须准确引用字段名称和值) c. 匹配失败:跳过该订单,不输出任何内容 3. 如果没有任何订单符合条件,直接输出「未找到目的地为纽约的订单」 4. 输出的所有信息必须与订单列表完全一致,不得篡改任何字段值或订单号 订单列表: 1. Order number: TM65432223 Origin location: Dallas Destination location: Chicago Reference numbers: 23232, 6543, 98765 Order status: Pending Present location: Virginia 2. Order number: TM09876543 Origin location: Dallas Destination location: Los Angeles Reference numbers: 65432, 678903, 345678 Order status: Pending Present location: Washington 3. Order number: TM12323232 Origin location: Chicago Destination location: Dallas Reference numbers: 23232, 32443534, 321312 Order status: Pending Present location: Los Angeles 4. Order number: TM56789012 Origin location: Houston Destination location: Austin Reference numbers: 1235, 7890, 45556 Order status: Pending Present location: New york 用户问题: 列出所有目的地为纽约的订单。 """ response = client.chat.completions.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": prompt}], temperature=0 ) print(response.choices[0].message.content)
优化点说明
- 明确字段边界:直接指定用户查询的目标字段,从根源避免AI混淆字段含义。
- 补充异常处理规则:明确无匹配订单时的输出内容,防止AI强行生成错误结果。
- 强化准确性约束:要求输出内容必须与原始订单数据完全一致,杜绝字段值或订单号篡改问题。
- 简化执行逻辑:将模糊的“检查两次”调整为精准的字段匹配要求,让AI的执行路径更清晰。
运行优化后的代码,AI会正确返回「未找到目的地为纽约的订单」,符合实际数据情况。
内容的提问来源于stack exchange,提问作者Ancita
相关产品推荐
相关产品推荐

