Dify 代码沙箱实战指南

Dify 的代码沙箱功能允许安全执行自定义代码,特别适合处理数学计算、数据转换等任务。下面通过三个实战示例展示其应用:


示例 1:基础数学计算

场景:计算二次方程 $ax^2 + bx + c = 0$ 的根

def solve_quadratic(a, b, c):
    discriminant = b**2 - 4*a*c
    if discriminant < 0:
        return "无实根"
    elif discriminant == 0:
        x = -b/(2*a)
        return f"重根: $x = {x}$"
    else:
        x1 = (-b + discriminant**0.5)/(2*a)
        x2 = (-b - discriminant**0.5)/(2*a)
        return f"根: $x_1 = {x1:.2f}$, $x_2 = {x2:.2f}$"

# 测试
print(solve_quadratic(1, -3, 2))  # 输出: 根: x₁=2.00, x₂=1.00
print(solve_quadratic(1, 2, 5))   # 输出: 无实根


示例 2:数据转换工具

场景:将温度在摄氏和华氏间转换

def temp_converter(value, unit):
    if unit.lower() == 'c':
        f = value * 9/5 + 32
        return f"${value}^\\circ C = {f:.1f}^\\circ F$"
    elif unit.lower() == 'f':
        c = (value - 32) * 5/9
        return f"${value}^\\circ F = {c:.1f}^\\circ C$"
    else:
        return "单位错误,使用 'C' 或 'F'"

# 测试
print(temp_converter(100, 'C'))  # 输出: 100°C = 212.0°F
print(temp_converter(32, 'F'))   # 输出: 32°F = 0.0°C


示例 3:统计计算

场景:计算数据集的统计指标

def calculate_stats(data):
    n = len(data)
    mean = sum(data)/n
    variance = sum((x - mean)**2 for x in data)/n
    std_dev = variance**0.5
    sorted_data = sorted(data)
    median = sorted_data[n//2] if n%2 else (sorted_data[n//2-1] + sorted_data[n//2])/2
    
    return (
        f"样本数: $n = {n}$\n"
        f"均值: $\\mu = {mean:.2f}$\n"
        f"标准差: $\\sigma = {std_dev:.2f}$\n"
        f"中位数: $\\mathrm{{median}} = {median:.2f}$"
    )

# 测试
data = [12, 15, 18, 22, 27]
print(calculate_stats(data))


沙箱使用技巧:

  1. 安全限制

    • 禁止文件系统操作
    • 限制执行时间(默认<3秒)
    • 禁止危险模块导入(如os, sys
  2. 最佳实践

# 推荐:清晰定义函数接口
def main(input_params: dict) -> dict:
    try:
        result = your_function(input_params["data"])
        return {"success": True, "result": result}
    except Exception as e:
        return {"success": False, "error": str(e)}

  1. 调试建议
    • 使用print()输出中间结果
    • 捕获并返回具体异常信息
    • 测试边界条件(如空输入、极端值)

通过Dify沙箱,可安全集成自定义计算逻辑到AI应用中,特别适合需要精确数值计算的场景。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐