函数
函数模块允许您在工作流中执行自定义的 JavaScript 或 TypeScript 代码。使用它可以转换数据、执行计算或实现其他模块中不可用的自定义逻辑。

概述
函数模块可以让您:
转换数据:转换格式、解析文本、操作数组和对象
执行计算:数学运算、统计分析、财务计算
实现自定义逻辑:复杂条件、循环和算法
处理外部数据:解析响应、格式化请求、处理身份验证
工作原理
函数模块在一个安全、隔离的环境中运行您的代码:
- 接收输入:通过
input
对象访问来自前置模块的数据 - 执行代码:运行您的 JavaScript/Python 代码
- 返回结果:使用
return
将数据传递到下一个模块 - 处理错误:内置错误处理和日志记录
远程执行 (E2B)
- 支持语言:在隔离的 E2B 沙箱中运行 JavaScript 和 Python。
- 如何启用:在函数模块中切换 “远程代码执行”。
- 使用场景:更复杂的逻辑、外部库或特定于 Python 的代码。
- 性能:由于沙箱启动和网络开销,速度比本地 JS 慢。
- 注意事项:如果在本地运行,需要
E2B_API_KEY
。为了最低延迟,请使用本地 JS(快速模式)。
输入和输出
代码:要执行的 JavaScript/Python 代码
超时时间:最大执行时间(默认为 30 秒)
输入数据:通过变量访问所有连接模块的输出
function.result:函数返回的值
function.stdout:代码中 Console.log() 的输出
示例用例
数据处理管道
场景:将 API 响应转换为结构化数据
- API 模块获取原始客户数据
- 函数模块处理并验证数据
- 函数模块计算派生指标
- 响应模块返回格式化结果
业务逻辑实现
场景:计算忠诚度分数和等级
- 代理检索客户购买历史
- 函数模块计算忠诚度指标
- 函数模块确定客户等级
- 条件模块根据等级级别进行路由
数据验证与清理
场景:验证并清理用户输入
- 从表单提交中接收用户输入
- 函数模块验证电子邮件格式和电话号码
- 函数模块清理并规范化数据
- API 模块将验证后的数据保存到数据库
示例:忠诚度分数计算器
// Process customer data and calculate loyalty score
const { purchaseHistory, accountAge, supportTickets } = <agent>;
// Calculate metrics
const totalSpent = purchaseHistory.reduce((sum, purchase) => sum + purchase.amount, 0);
const purchaseFrequency = purchaseHistory.length / (accountAge / 365);
const ticketRatio = supportTickets.resolved / supportTickets.total;
// Calculate loyalty score (0-100)
const spendScore = Math.min(totalSpent / 1000 * 30, 30);
const frequencyScore = Math.min(purchaseFrequency * 20, 40);
const supportScore = ticketRatio * 30;
const loyaltyScore = Math.round(spendScore + frequencyScore + supportScore);
return {
customer: <agent.name>,
loyaltyScore,
loyaltyTier: loyaltyScore >= 80 ? "Platinum" : loyaltyScore >= 60 ? "Gold" : "Silver",
metrics: { spendScore, frequencyScore, supportScore }
};
最佳实践
- 保持函数专注:编写专注于单一功能的函数,以提高可维护性和调试效率
- 优雅地处理错误:使用 try/catch 块处理潜在错误,并提供有意义的错误信息
- 测试边界情况:确保代码能够正确处理异常输入、空值和边界条件
- 优化性能:注意大数据集的计算复杂性和内存使用
- 使用 console.log() 进行调试:利用标准输出调试和监控函数执行