工具概览
工具(Operator)是 GeniSpace 工作流系统的核心执行单元,负责处理具体的业务逻辑和数据操作。每个工具都是一个独立的功能模块,可以接收输入数据,执行特定的操作,并产生输出结果。
什么是工具
工具是工作流中的基本构建块,类似于编程中的函数或方法。它们具有以下特征:
- 输入/输出定义:每个工具都有明确的输入和输出数据结构
- 配置参数:支持灵活的配置选项来适应不同的使用场景
- 可复用性:同一个工具可以在多个工作流中重复使用
- 独立执行:每个工具都是独立的执行单元,便于调试和维护
工具类型
GeniSpace 支持五种不同类型的工具,每种类型适用于不同的应用场景:
1. 智能体(Agent)工具
智能体工具是基于 AI 模型的智能处理单元,能够理解自然语言指令并生成智能化的输出。
特点:
- 基于大语言模型(LLM)的智能处理
- 支持自然语言提示词模板
- 可配置系统提示词和用户提示词
- 支持记忆、知识库、互联网搜索等增强功能
适用场景:
- 内容生成和创作
- 智能分析和决策
- 自然语言处理
- 智能客服和对话
配置示例:
{
"type": "agent",
"name": "医美营销Pro",
"description": "专注医美行业的智能营销专家",
"promptTemplate": "请为【{{product}}】撰写小红书种草文案,核心卖点:{{features}}",
"systemPrompt": "你是一位精通医美行业的小红书运营专家...",
"model": {
"identifier": "deepseek-v3",
"name": "DeepSeek-V3",
"apiType": "openai"
}
}
2. API 工具
API 工具用于调用外部 HTTP/HTTPS 接口,是连接外部服务的桥梁。
特点:
- 支持 RESTful API 调用
- 灵活的请求配置(方法、头部、参数等)
- 自动处理认证和错误重试
- 支持多种数据格式(JSON、XML、表单等)
适用场景:
- 调用第三方服务 API
- 数据同步和集成
- 外部系统交互
- 微服务间通信
配置示例:
{
"runtime": {
"type": "rest-api",
"config": {
"serverUrl": "https://api.genitask.cn",
"method": "POST",
"endpoint": "/njs-operators/message/email_operator",
"timeout": 30000,
"retryPolicy": {
"maxAttempts": 3,
"intervalMs": 1000
}
}
}
}
3. Worker 工具
Worker 工具是系统内置的工具,运行在 GeniSpace 的 Worker 服务中,提供常见的数据处理和业务逻辑功能。
特点:
- 高性能本地执行
- 丰富的内置功能库
- 支持复杂的数据处理逻辑
- 无需外部依赖
适用场景:
- 文档处理和转换
- 数据清洗和格式化
- 文本分析和处理
- 图像和媒体处理
- 数学计算和统计
内置工具类别:
- 文档处理:PDF 解析、Word 转换、Excel 操作
- 数据转换:JSON 处理、CSV 转换、数据映射
- 文本处理:正则匹配、字符串操作、编码转换
- 通知服务:邮件发送、短信通知、消息推送
配置示例:
{
"runtime": {
"type": "worker",
"config": {}
},
"identifier": "email",
"name": "邮件发送器"
}
4. MCP 工具
MCP(Model Context Protocol)工具用于与支持 MCP 协议的 AI 模型和服务进行交互。
特点:
- 标准化的 AI 模型接口
- 支持多种 AI 服务提供商
- 统一的上下文管理
- 智能对话和推理能力
适用场景:
- AI 对话和问答
- 文本生成和摘要
- 智能分析和决策
- 自然语言处理
配置示例:
{
"serverUrl": "https://mcp.ai-service.com",
"model": "gpt-4",
"maxTokens": 2048,
"temperature": 0.7
}
5. Container 工具
Container 工具基于 Docker 容器技术,可以运行任意的容器化应用和服务。
特点:
- 完全隔离的执行环境
- 支持任意编程语言和框架
- 可扩展的资源配置
- 版本化的部署管理
适用场景:
- 复杂的业务逻辑处理
- 特定语言或框架的应用
- 需要特殊运行环境的任务
- 第三方工具和服务集成
配置示例:
{
"image": "my-app:latest",
"command": "python app.py",
"environment": {
"API_KEY": "secret"
},
"resources": {
"memory": "512Mi",
"cpu": "0.5"
}
}
工具在工作流中的角色
数据流处理
工具通过输入和输出端口连接,形成数据处理管道:
输入数据 → 智能体A → 中间结果 → 工具B → 最终输出
实际工作流示例
基于真实案例的工作流结构:
智能体(内容生成) → Worker工具(邮件发送)
连接方式:
{
"edges": [
{
"source": "agent-1747982793576:answer",
"target": "operator-1747982806154:content"
}
]
}
并行执行
多个工具可以并行处理不同的数据分支:
输入 → 分发工具 → 工具A → 合并工具 → 输出
→ 工具B →
→ 工具C →
工具配置结构
实际的工具配置结构
基于真实案例,工具的配置结构包含:
{
"type": "operator", // 或 "agent"
"config": {
"id": "工具唯一ID",
"name": "工具显示名称",
"type": "operator",
"method": "default", // 执行的方法
"identifier": "工具标识符",
"inputPorts": [
{
"name": "参数名",
"type": "数据类型",
"label": "显示标签",
"required": true/false
}
],
"outputPorts": [
{
"name": "输出名",
"type": "数据类型",
"label": "显示标签"
}
]
},
"position": {"x": 100, "y": 200},
"defaultInputs": {
"参数名": "默认值"
},
"metadata": {
"origin": "built-in" | "custom",
"runtime": {
"type": "worker" | "rest-api" | "container" | "mcp",
"config": {}
}
}
}
自定义工具 vs 系统内置工具
系统内置工具
优势:
- 开箱即用,无需配置
- 经过充分测试,稳定可靠
- 性能优化,执行效率高
- 官方维护和更新
限制:
- 功能相对固定
- 无法满足特殊业务需求
- 更新依赖系统版本
自定义工具
优势:
- 完全自主控制
- 可以实现任意业务逻辑
- 快速响应业务变化
- 支持私有化部署
创建方式:
- 手动创建:从零开始配置工具的输入输出和业务逻辑
- OpenAPI 导入:从 OpenAPI/Swagger 文档快速导入多个 API 方法作为工具
- Docker 容器:基于容器化应用创建工具(企业版功能)
注意事项:
- 需要自行开发和维护
- 需要考虑安全性和稳定性
- 需要编写详细的文档
工具开发最佳实践
1. 设计原则
- 单一职责:每个工具只负责一个明确的功能
- 幂等性:相同输入应该产生相同输出
- 错误处理:优雅处理异常情况
- 性能考虑:避免长时间阻塞操作
2. 输入输出设计
- 使用清晰的数据结构定义
- 提供详细的字段说明
- 考虑向后兼容性
- 支持可选参数
3. 配置管理
- 区分用户配置和系统配置
- 提供合理的默认值
- 支持环境变量覆盖
- 敏感信息加密存储
4. 测试和文档
- 编写完整的单元测试
- 提供使用示例
- 记录已知限制和注意事项
- 维护版本更新日志
下一步
- 工具配置规范 - 了解工具的配置结构和规范
- OpenAPI 支持说明 - 了解如何从 OpenAPI 文档导入工具
- 创建自定义工具 - 学习如何开发自定义工具
- 工具最佳实践 - 掌握工具开发的最佳实践