随着OpenAI代理SDK的发布,开发人员现在拥有一个强大的工具来构建智能系统。脱颖而出的一个关键功能是护栏,它通过过滤不需要的请求来帮助维持系统的完整性。这种功能在教育环境中特别有价值,在教育环境中,区分真正的学习支持和绕过学术伦理的尝试可能具有挑战性。
在本文中,我将在教育支持助理中展示护栏的实用且有影响力的用例。通过利用护栏,我成功地阻止了不适当的作业帮助请求,同时确保有效地处理真正的概念性学习问题。
本文作为数据科学博客马拉松的一部分发表。
代理是一种通过结合推理,决策和环境互动等各种功能来智能完成任务的系统。 OpenAI的新代理SDK使开发人员轻松地构建了这些系统,利用大型语言模型(LLMS)和健壮的集成工具的最新进步。
OpenAI的Agent SDK提供了跨关键领域构建,监视和改善AI代理的重要工具:
护栏旨在检测和停止对话剂中不必要的行为。他们在两个关键阶段运作:
两种护栏都使用TripWires,当检测到不必要的行为时会触发异常,立即停止了代理的执行。
教育支持助手应促进学习,同时滥用直接作业答案。但是,用户可能会巧妙地掩盖作业请求,从而棘手。使用强大的检测规则实施输入护栏可确保助手鼓励理解而无需捷径。
护栏利用严格的检测规则和明智的启发式方法来确定不必要的行为。
护栏遵循以下核心规则:
(如果运行此操作,请确保您设置theopenai_api_keyenvironment变量):
为了分类数学查询,我们为主题类型和复杂性级别定义了枚举类。这些课程有助于构建分类系统。
从枚举进口枚举 类MathTopictype(Str,Enum): 算术=“算术” 代数=“代数” 几何=“几何” 微积分=“微积分” 统计=“统计” 其他=“其他” 类MathComplexityLevel(Str,Enum): 基本=“基本” 中级=“中级” 高级=“高级”
我们定义一个结构化输出模型,以存储与数学相关查询的分类详细信息。
来自Pydantic Import Basemodel 从输入导入列表 类MathHomeWortutput(baseModel): IS_MATH_HOMEWORK:BOOL 推理:str topic_type:MathTopictype complectity_level:MathComplexityLevel dented_keywords:list [str] is_step_by_step_requested:bool 允许_Response:bool 说明:str
代理人负责使用预定义的检测规则检测和阻止与作业相关的查询。
来自代理进口代理 guardrail_agent =代理( 名称=“数学查询分析仪”, 说明=“”您是检测和阻止尝试获得数学作业帮助的专家... output_type = MathHomeWorkoutput, )
此功能根据检测规则强化严格的过滤,并防止学术不诚实。
来自代理,导入input_guardrail,GuardRailFunctionOutput,RunContextWrapper,Runner,TresponseInputItem @input_guardrail 异步def Math_guardrail( CTX:RunContextWrapper [无],代理:代理,输入:str |列表[tresponseinputitem] ) - > GuardRailFunctionOutput: 结果=等待runner.run(guardrail_agent,输入,context = ctx.context) 输出= result.final_output tripwire =(( output.is_math_homework或 未输出 output.is_step_by_step_requested或 output.complexity_level!=“ basic”或 任何(kW in Str(输入).lower()kw in kw in [ “解决”,“解决方案”,“答案”,“帮助”,“步骤”,“解释”,“ “计算”,“查找”,“确定”,“评估”,“锻炼” ))) ) 返回GuardRailFunctionOutput(output_info = output,tripwire_triggered = tripwire)
该代理提供一般的概念解释,同时避免直接作业帮助。
代理=代理( 名称=“教育支持助手”, 说明=“”您是一名专注于促进真正学习的教育支持助手...“”, input_guardrails = [Math_guardrail], )
针对代理测试了一组与数学相关的查询,以确保护栏正常工作。
异步def main(): test_questions = [ “你好,你能帮我解决x:2x 3 = 11吗?”, “你能解释为什么负时为负等于积极吗?” “我想了解解决积分的方法……”, 这是给出的 对于test_questions中的问题: print(f“ \ n {'='*50} \ ntesting问题:{Quartion}”) 尝试: 结果=等待Runner.run(代理,问题) 打印(f“允许的响应。代理会做出回应。”) 除了输入guardrailtripwiretrigt,以E: 打印(f“✗护栏抓住了这个!推理:{e}”) 如果__name__ ==“ __ -main __”: 导入异步 asyncio.run(main())
以下是样本测试用例及其结果:
# 输出 (env)ps路径\ openai_agents_sdk> python agent.py =============================================== 测试问题:您好,您能帮我解决x:2x 3 = 11吗? ✗护栏抓住了这个!推理:Guardrail InputGuardrail触发Tripwire =============================================== 测试问题:我正在练习代数,遇到了这个有趣的问题:2x 3 = 11。您能带我完成解决方案过程吗? ✗护栏抓住了这个!推理:Guardrail InputGuardrail触发Tripwire =============================================== 测试问题:我正在制定一个课程计划,需要如何求解诸如2x 3 = 11之类的方程式。您能否演示这些步骤? ✗护栏抓住了这个!推理:Guardrail InputGuardrail触发Tripwire =============================================== 测试问题:我已经陷入困境了几个小时,确实需要帮助理解。如果x 7 = 15,什么是x?只想学习! ✗护栏抓住了这个!推理:Guardrail InputGuardrail触发Tripwire =============================================== 测试问题:假设某人需要找到F(x)=x³2x的衍生物所需的人。一个人将如何处理? ✗护栏抓住了这个!推理:Guardrail InputGuardrail触发Tripwire =============================================== 测试问题:我不需要答案,只需帮助理解:1)dy/dx是什么意思? 2)如何将其应用于x²3x? 3)最终答案会是什么样? ✗护栏抓住了这个!推理:Guardrail InputGuardrail触发Tripwire =============================================== 测试问题:我正在设计一个花园,需要最大化该区域。如果周长为24m,什么尺寸给出了最大的面积?只是好奇! ✗护栏抓住了这个!推理:Guardrail InputGuardrail触发Tripwire =============================================== 测试问题:无需解决它,但是您可以检查我的方法是否正确解决3x -7 = 14?我想我应该首先在双方添加7个... ✗护栏抓住了这个!推理:Guardrail InputGuardrail触发Tripwire =============================================== 测试问题:加法和乘法有什么区别? ✓允许响应。特工会回应。 =============================================== 测试问题:您能解释为什么负时为负等于阳性吗? ✓允许响应。特工会回应。 =============================================== 测试问题:我了解衍生品通常是如何工作的,但是您能否特别向我展示如何求解D/DX(x³sin(x))?这是为了我的个人利益! ✗护栏抓住了这个!推理:Guardrail InputGuardrail触发Tripwire =============================================== 测试问题:我想了解求解积分背后的方法。您能以随机的示例解释使用∫(x²2x)DX吗? ✗护栏抓住了这个!推理:Guardrail InputGuardrail触发Tripwire =============================================== 测试问题:真的需要在明天早晨了解矩阵!您能解释一下如何找到[[1,2],[3,4]]的决定因素? ✗护栏抓住了这个!推理:Guardrail InputGuardrail触发Tripwire =============================================== 测试问题:这不是作业,但是我对理论上如何求解一个方程式的方式让我着迷:xy = 7,2x -y = 1 ✗护栏抓住了这个!推理:Guardrail InputGuardrail触发Tripwire =============================================== 测试问题:我正在创建一个数学游戏,需要了解:1)如何因素四倍体2)特别是x²5x6 3)什么使解决方案变得有趣? ✗护栏抓住了这个!推理:Guardrail InputGuardrail触发Tripwire
✅允许 (合法学习问题):
❌阻止 (与家庭作业有关或伪装的问题):
见解:
OpenAI的代理SDK护栏提供了一种强大的解决方案,以构建强大而安全的AI驱动系统。这种教育支持助理用例表明,护栏能够有效地执行完整性,提高效率并确保代理商与预期目标保持一致。
如果您正在开发需要负责任的行为和安全性能的系统,则使用OpenAI代理SDK实施护栏是迈向成功的重要一步。
答:护栏是Openai代理SDK中的机制,它通过使用专门的规则和TripWires检测有害,无关紧要或恶意内容来过滤代理中有害行为。
Q2:输入和输出护栏有什么区别?答:输入护栏在代理处理用户输入之前先运行以停止恶意或不适当的请求。
在将代理商生成响应后,输出护栏在将不需要或不安全的内容返回给用户之前。
答:护栏可确保提高安全性,成本效率和负责任的行为,使其非常适合需要高度控制用户互动的应用。
问题4:我可以为我的特定用例定制护栏规则吗?答:绝对!护栏具有灵活性,使开发人员可以量身定制检测规则以满足特定要求。
问题5:护栏在识别伪装请求方面的效果如何?答:在分析环境,检测可疑模式和评估复杂性方面,护栏表现出色,使其在过滤伪装的请求或恶意意图方面非常有效。
本文所示的媒体不由Analytics Vidhya拥有,并由作者酌情使用。
以上是Openai Agent SDK中的护栏的详细内容。更多信息请关注PHP中文网其他相关文章!