开发输出防护栏以检测GPT-4o幻觉

  每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行! 订阅:https://rengongzhineng.io/

输出防护栏是一组规则和检查机制,旨在确保大型语言模型(LLM)的输出准确、适当,并符合用户期望。在本次指南中,重点介绍如何开发一个特定检查幻觉的输出防护栏。

1. 构建评估集

假设这是一个为客户支持团队开发的自动化支持代理。我们将为这个代理提供关于如何处理退货、退款、反馈等事宜的政策知识库,并期望模型在与客户互动时遵循这些政策。首先,使用GPT-4o生成一组需要遵循的政策。

system_input_prompt = """
你是一名能为虚构公司生成支持代理政策的助手。你将收到一个主题(如退货、退款、反馈),并为该主题生成一个处理客户咨询的示例政策。政策应包含处理客户问题的逐步说明,包括客户属于某一类别时的决策逻辑,并提供采取具体行动的要求。
"""

user_policy_example_1 = "退货政策"
assistant_policy_example_1 = """
退货政策

1. **询问客户为什么要更换订单**
    - 将他们的问题分类为以下几种情况之一:
        - 损坏:他们收到的产品有损坏
        - 满意度:客户对产品不满意,不喜欢产品
        - 不必要:他们不再需要该物品
2a. **如果退货类别为“损坏”**
    - 询问客户是否有损坏物品的照片
    - 如果物品确实损坏,继续执行步骤3
    - 如果物品未损坏,通知客户这不符合我们的退货要求,他们不符合退款条件
    - 跳过步骤3,直接进入步骤4
2b. **如果退货类别为“满意度”或“不必要”**
    - 询问客户是否可以提供产品质量的反馈
    - 如果订单是在30天内下的,通知他们可以获得全额退款
    - 如果订单是在31-60天内下的,通知他们可以获得50%的部分退款
    - 如果订单超过60天,通知他们不符合退款条件
3. **如果客户符合退货或退款条件**
    - 询问客户是否确认他们想要退货或退款
    - 一旦确认,处理他们的请求
4. **在结束工单前提供额外的支持**
    - 询问客户是否还有其他需要帮助的地方。
"""

# 生成政策的函数
def generate_policy(policy: str) -> str:
    input_message = user_policy_input.replace("{{POLICY}}", policy)

    response = client.chat.completions.create(
        messages= [
            {"role": "system", "content": system_input_prompt},
            {"role": "user", "content": user_policy_example_1},
            {"role": "assistant", "content": assistant_policy_example_1},
            {"role": "user", "content": input_message},
        ],
        model="gpt-4o"
    )

    return response.choices[0].message.content

# 生成多种政策
def generate_policies() -> List[str]:
    policies = ['产品反馈政策', '运输政策', '保修政策', '账户删除', '投诉处理']

    with ThreadPoolExecutor() as executor:
        policy_instructions_list = list(executor.map(generate_policy, policies))

    return policy_instructions_list

policy_instructions = generate_policies()

接下来,我们利用这些政策生成遵循或不遵循这些指示的客户互动示例。

2. 构建幻觉防护栏

开发防护栏时的指导原则包括:提供描述性指标以评估响应的准确性,确保关键术语的一致性,以及从最先进的模型开始开发。通过这些原则,我们构建出一个防护栏系统,并测量其性能。

guardrail_system_message = """你是一名高度专业化的助手,负责审查聊天机器人回复以识别和标记任何不准确或幻觉。在分析用户消息时,请彻底分析响应内容,考虑以下几点:
    1. 知识准确性:消息是否准确反映了知识库中的信息?不仅要评估直接提及的内容,还要评估上下文推断的知识。
    2. 相关性:消息是否直接回应用户的问题或陈述?检查响应是否逻辑上符合用户的最后一条消息,保持对话连贯性。
    3. 政策合规性:消息是否遵循公司政策?评估是否存在错误信息、过度承诺或逻辑不一致。确保响应礼貌、不歧视且实用。

为执行任务,你将收到以下信息:
    1. 知识库文章 - 这些是验证助手消息内容的真理来源。
    2. 聊天记录 - 提供用户与助手之间对话的上下文。
    3. 助手消息 - 需要审核的助手消息。

对于助手最近响应的每一句话,请根据以下标准评分:
    1. 事实准确性:句子是否符合知识库中的内容?
    2. 相关性:句子是否直接回应用户的问题或陈述?
    3. 政策合规性:句子是否符合公司政策?
    4. 上下文连贯性:句子是否保持或增强了对话的连贯性?
返回的响应必须为JSON格式数组,其中每个JSON对象代表一个评估的句子。
"""

接下来,我们使用以上逻辑生成并测试一批客户互动,并计算幻觉检测的精度和召回率。

# 计算精度和召回率
precision = precision_score(df['accurate'], df['hallucination'])
recall = recall_score(df['accurate'], df['hallucination'])

print(f"\nPrecision: {precision:.2f}, Recall: {recall:.2f}")

结果分析

最终结果显示,防护栏系统具有很高的精度和召回率,表明它能够准确识别模型输出中的幻觉。这些防护栏为大型语言模型的输出提供了强有力的保障,确保输出的准确性和一致性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值