工具类型定义
本文档定义了XAI-SDK工具系统中使用的类型和接口。
基础工具接口
Tool
工具定义接口:
typescript
interface Tool {
/** 工具名称 */
name: string
/** 工具描述 */
description: string
/** 工具版本 */
version?: string
/** 工具作者 */
author?: string
/** 工具分类 */
category?: ToolCategory
/** 工具标签 */
tags?: string[]
/** 参数定义 */
parameters: ToolParameters
/** 执行函数 */
execute: ToolExecutor
/** 工具配置 */
config?: ToolConfig
/** 工具权限 */
permissions?: ToolPermissions
/** 工具依赖 */
dependencies?: string[]
/** 工具元数据 */
metadata?: Record<string, any>
}
ToolCategory
工具分类:
typescript
type ToolCategory =
| 'file-system'
| 'network'
| 'database'
| 'text-processing'
| 'image-processing'
| 'data-analysis'
| 'web-scraping'
| 'api-integration'
| 'utility'
| 'development'
| 'system'
| 'custom'
ToolParameters
工具参数定义:
typescript
interface ToolParameters {
/** 参数类型 */
type: 'object'
/** 参数属性 */
properties: Record<string, ParameterDefinition>
/** 必需参数 */
required?: string[]
/** 附加属性 */
additionalProperties?: boolean
/** 参数示例 */
examples?: Record<string, any>[]
}
ParameterDefinition
参数定义:
typescript
interface ParameterDefinition {
/** 参数类型 */
type: ParameterType
/** 参数描述 */
description: string
/** 默认值 */
default?: any
/** 枚举值 */
enum?: any[]
/** 示例值 */
examples?: any[]
/** 格式 */
format?: string
/** 最小值(数字类型) */
minimum?: number
/** 最大值(数字类型) */
maximum?: number
/** 最小长度(字符串/数组类型) */
minLength?: number
/** 最大长度(字符串/数组类型) */
maxLength?: number
/** 正则表达式(字符串类型) */
pattern?: string
/** 数组项类型(数组类型) */
items?: ParameterDefinition
/** 对象属性(对象类型) */
properties?: Record<string, ParameterDefinition>
/** 是否必需 */
required?: string[]
/** 是否只读 */
readOnly?: boolean
/** 是否已弃用 */
deprecated?: boolean
}
ParameterType
参数类型:
typescript
type ParameterType =
| 'string'
| 'number'
| 'integer'
| 'boolean'
| 'array'
| 'object'
| 'null'
ToolExecutor
工具执行器:
typescript
type ToolExecutor = (
parameters: Record<string, any>,
context?: ToolExecutionContext
) => Promise<ToolResult> | ToolResult
ToolExecutionContext
工具执行上下文:
typescript
interface ToolExecutionContext {
/** 执行ID */
executionId: string
/** SDK实例 */
sdk: XAI_SDK
/** 用户ID */
userId?: string
/** 会话ID */
sessionId?: string
/** 请求ID */
requestId?: string
/** 执行环境 */
environment: 'development' | 'production' | 'test'
/** 权限上下文 */
permissions: PermissionContext
/** 日志记录器 */
logger: Logger
/** 缓存管理器 */
cache?: CacheManager
/** 配置对象 */
config: any
/** 元数据 */
metadata?: Record<string, any>
}
PermissionContext
权限上下文:
typescript
interface PermissionContext {
/** 用户角色 */
roles: string[]
/** 权限列表 */
permissions: string[]
/** 资源访问权限 */
resources: Record<string, string[]>
/** 是否为管理员 */
isAdmin: boolean
/** 权限检查函数 */
hasPermission: (permission: string) => boolean
/** 资源访问检查 */
canAccess: (resource: string, action: string) => boolean
}
工具结果
ToolResult
工具执行结果:
typescript
interface ToolResult {
/** 是否成功 */
success: boolean
/** 结果内容 */
content: any
/** 结果类型 */
type?: ToolResultType
/** 错误信息(失败时) */
error?: ToolError
/** 执行时间(毫秒) */
executionTime: number
/** 工具名称 */
toolName: string
/** 执行时间戳 */
timestamp: Date
/** 结果元数据 */
metadata?: ToolResultMetadata
/** 资源使用情况 */
resourceUsage?: ResourceUsage
/** 缓存信息 */
cacheInfo?: CacheInfo
}
ToolResultType
工具结果类型:
typescript
type ToolResultType =
| 'text'
| 'json'
| 'binary'
| 'image'
| 'file'
| 'url'
| 'html'
| 'markdown'
| 'csv'
| 'xml'
| 'custom'
ToolResultMetadata
工具结果元数据:
typescript
interface ToolResultMetadata {
/** 结果大小(字节) */
size?: number
/** MIME类型 */
mimeType?: string
/** 文件名 */
filename?: string
/** 编码 */
encoding?: string
/** 语言 */
language?: string
/** 版本 */
version?: string
/** 来源 */
source?: string
/** 自定义属性 */
custom?: Record<string, any>
}
ResourceUsage
资源使用情况:
typescript
interface ResourceUsage {
/** CPU使用时间(毫秒) */
cpuTime?: number
/** 内存使用量(字节) */
memoryUsage?: number
/** 磁盘读取量(字节) */
diskRead?: number
/** 磁盘写入量(字节) */
diskWrite?: number
/** 网络接收量(字节) */
networkReceived?: number
/** 网络发送量(字节) */
networkSent?: number
/** API调用次数 */
apiCalls?: number
}
CacheInfo
缓存信息:
typescript
interface CacheInfo {
/** 是否命中缓存 */
hit: boolean
/** 缓存键 */
key?: string
/** 缓存时间戳 */
timestamp?: Date
/** 缓存TTL(秒) */
ttl?: number
/** 缓存来源 */
source?: 'memory' | 'disk' | 'redis' | 'database'
}
工具错误
ToolError
工具错误接口:
typescript
interface ToolError {
/** 错误代码 */
code: ToolErrorCode
/** 错误消息 */
message: string
/** 错误详情 */
details?: any
/** 错误堆栈 */
stack?: string
/** 是否可重试 */
retryable: boolean
/** 建议操作 */
suggestion?: string
/** 相关文档链接 */
documentation?: string
}
ToolErrorCode
工具错误代码:
typescript
type ToolErrorCode =
| 'TOOL_NOT_FOUND'
| 'INVALID_PARAMETERS'
| 'PARAMETER_VALIDATION_FAILED'
| 'EXECUTION_FAILED'
| 'EXECUTION_TIMEOUT'
| 'PERMISSION_DENIED'
| 'RESOURCE_NOT_AVAILABLE'
| 'DEPENDENCY_MISSING'
| 'CONFIGURATION_ERROR'
| 'NETWORK_ERROR'
| 'FILE_NOT_FOUND'
| 'INSUFFICIENT_RESOURCES'
| 'RATE_LIMIT_EXCEEDED'
| 'INTERNAL_ERROR'
| 'UNKNOWN_ERROR'
工具配置
ToolConfig
工具配置接口:
typescript
interface ToolConfig {
/** 是否启用 */
enabled?: boolean
/** 超时时间(毫秒) */
timeout?: number
/** 重试次数 */
retries?: number
/** 重试延迟(毫秒) */
retryDelay?: number
/** 缓存配置 */
cache?: ToolCacheConfig
/** 速率限制 */
rateLimit?: RateLimitConfig
/** 资源限制 */
resourceLimits?: ResourceLimits
/** 日志配置 */
logging?: ToolLoggingConfig
/** 环境限制 */
environments?: ('development' | 'production' | 'test')[]
/** 自定义配置 */
custom?: Record<string, any>
}
ToolCacheConfig
工具缓存配置:
typescript
interface ToolCacheConfig {
/** 是否启用缓存 */
enabled: boolean
/** 缓存TTL(秒) */
ttl?: number
/** 缓存键生成策略 */
keyStrategy?: 'parameters' | 'hash' | 'custom'
/** 自定义键生成函数 */
keyGenerator?: (parameters: any) => string
/** 缓存条件 */
condition?: (parameters: any, result: ToolResult) => boolean
/** 缓存存储 */
storage?: 'memory' | 'redis' | 'file'
}
RateLimitConfig
速率限制配置:
typescript
interface RateLimitConfig {
/** 每分钟最大请求数 */
requestsPerMinute?: number
/** 每小时最大请求数 */
requestsPerHour?: number
/** 每天最大请求数 */
requestsPerDay?: number
/** 并发限制 */
concurrency?: number
/** 限制策略 */
strategy?: 'sliding-window' | 'fixed-window' | 'token-bucket'
/** 限制键生成 */
keyGenerator?: (context: ToolExecutionContext) => string
}
ResourceLimits
资源限制:
typescript
interface ResourceLimits {
/** 最大内存使用量(字节) */
maxMemory?: number
/** 最大CPU时间(毫秒) */
maxCpuTime?: number
/** 最大磁盘使用量(字节) */
maxDiskUsage?: number
/** 最大网络使用量(字节) */
maxNetworkUsage?: number
/** 最大文件大小(字节) */
maxFileSize?: number
/** 最大并发数 */
maxConcurrency?: number
}
ToolLoggingConfig
工具日志配置:
typescript
interface ToolLoggingConfig {
/** 是否记录执行日志 */
logExecution?: boolean
/** 是否记录参数 */
logParameters?: boolean
/** 是否记录结果 */
logResults?: boolean
/** 是否记录错误 */
logErrors?: boolean
/** 日志级别 */
level?: 'debug' | 'info' | 'warn' | 'error'
/** 敏感参数过滤 */
sensitiveFields?: string[]
}
工具权限
ToolPermissions
工具权限接口:
typescript
interface ToolPermissions {
/** 所需权限列表 */
required: string[]
/** 可选权限列表 */
optional?: string[]
/** 权限检查函数 */
check?: (context: PermissionContext) => boolean | Promise<boolean>
/** 权限描述 */
description?: Record<string, string>
/** 权限分组 */
groups?: string[]
}
PermissionLevel
权限级别:
typescript
type PermissionLevel =
| 'public'
| 'authenticated'
| 'user'
| 'admin'
| 'system'
| 'custom'
工具管理
ToolManager
工具管理器接口:
typescript
interface ToolManager {
/** 注册工具 */
register(tool: Tool): Promise<void>
/** 注册多个工具 */
registerMany(tools: Tool[]): Promise<void>
/** 卸载工具 */
unregister(name: string): Promise<void>
/** 获取工具 */
get(name: string): Tool | undefined
/** 获取所有工具 */
getAll(): Tool[]
/** 按分类获取工具 */
getByCategory(category: ToolCategory): Tool[]
/** 搜索工具 */
search(query: ToolSearchQuery): Tool[]
/** 执行工具 */
execute(
name: string,
parameters: Record<string, any>,
context?: ToolExecutionContext
): Promise<ToolResult>
/** 批量执行工具 */
executeBatch(requests: ToolExecutionRequest[]): Promise<ToolResult[]>
/** 验证工具 */
validate(tool: Tool): ValidationResult
/** 验证参数 */
validateParameters(tool: Tool, parameters: Record<string, any>): ValidationResult
/** 获取工具统计 */
getStats(name?: string): ToolStats | Record<string, ToolStats>
/** 清理工具 */
cleanup(): Promise<void>
}
ToolSearchQuery
工具搜索查询:
typescript
interface ToolSearchQuery {
/** 搜索关键词 */
keyword?: string
/** 工具分类 */
category?: ToolCategory
/** 工具标签 */
tags?: string[]
/** 作者 */
author?: string
/** 是否启用 */
enabled?: boolean
/** 权限要求 */
permissions?: string[]
/** 排序方式 */
sortBy?: 'name' | 'category' | 'usage' | 'rating'
/** 排序方向 */
sortOrder?: 'asc' | 'desc'
/** 分页 */
pagination?: {
page: number
size: number
}
}
ToolExecutionRequest
工具执行请求:
typescript
interface ToolExecutionRequest {
/** 请求ID */
id: string
/** 工具名称 */
toolName: string
/** 工具参数 */
parameters: Record<string, any>
/** 执行上下文 */
context?: ToolExecutionContext
/** 请求优先级 */
priority?: 'low' | 'normal' | 'high'
/** 请求元数据 */
metadata?: Record<string, any>
}
工具统计
ToolStats
工具统计信息:
typescript
interface ToolStats {
/** 工具名称 */
name: string
/** 执行次数 */
executionCount: number
/** 成功次数 */
successCount: number
/** 失败次数 */
failureCount: number
/** 成功率 */
successRate: number
/** 平均执行时间(毫秒) */
averageExecutionTime: number
/** 最小执行时间(毫秒) */
minExecutionTime: number
/** 最大执行时间(毫秒) */
maxExecutionTime: number
/** 最后执行时间 */
lastExecution: Date
/** 最后成功时间 */
lastSuccess: Date
/** 最后失败时间 */
lastFailure?: Date
/** 错误统计 */
errorStats: Record<ToolErrorCode, number>
/** 资源使用统计 */
resourceUsage: ResourceUsageStats
/** 缓存统计 */
cacheStats: ToolCacheStats
}
ResourceUsageStats
资源使用统计:
typescript
interface ResourceUsageStats {
/** 总CPU时间(毫秒) */
totalCpuTime: number
/** 平均CPU时间(毫秒) */
averageCpuTime: number
/** 总内存使用量(字节) */
totalMemoryUsage: number
/** 平均内存使用量(字节) */
averageMemoryUsage: number
/** 总磁盘使用量(字节) */
totalDiskUsage: number
/** 总网络使用量(字节) */
totalNetworkUsage: number
/** API调用总数 */
totalApiCalls: number
}
ToolCacheStats
工具缓存统计:
typescript
interface ToolCacheStats {
/** 缓存命中次数 */
hits: number
/** 缓存未命中次数 */
misses: number
/** 缓存命中率 */
hitRate: number
/** 缓存大小 */
size: number
/** 缓存节省的执行时间(毫秒) */
timeSaved: number
}
工具事件
ToolEvent
工具事件接口:
typescript
interface ToolEvent {
/** 事件类型 */
type: ToolEventType
/** 工具名称 */
toolName: string
/** 执行ID */
executionId?: string
/** 事件数据 */
data?: any
/** 事件时间戳 */
timestamp: Date
/** 事件ID */
id: string
/** 用户ID */
userId?: string
/** 会话ID */
sessionId?: string
}
ToolEventType
工具事件类型:
typescript
type ToolEventType =
| 'tool:registered'
| 'tool:unregistered'
| 'tool:execution:started'
| 'tool:execution:completed'
| 'tool:execution:failed'
| 'tool:execution:timeout'
| 'tool:cache:hit'
| 'tool:cache:miss'
| 'tool:rate:limited'
| 'tool:permission:denied'
| 'tool:validation:failed'
ToolEventListener
工具事件监听器:
typescript
type ToolEventListener = (event: ToolEvent) => void | Promise<void>
内置工具类型
FileSystemTool
文件系统工具:
typescript
interface FileSystemTool extends Tool {
category: 'file-system'
permissions: {
required: ['file:read' | 'file:write' | 'file:delete']
}
}
NetworkTool
网络工具:
typescript
interface NetworkTool extends Tool {
category: 'network'
permissions: {
required: ['network:request']
}
config: {
timeout: number
retries: number
userAgent?: string
}
}
DatabaseTool
数据库工具:
typescript
interface DatabaseTool extends Tool {
category: 'database'
permissions: {
required: ['database:read' | 'database:write']
}
config: {
connectionString: string
poolSize?: number
timeout?: number
}
}
这些类型定义为XAI-SDK的工具系统提供了完整的类型支持,确保工具开发和使用的类型安全性。