Skip to content

核心类型定义

本文档定义了XAI-SDK中使用的核心类型和接口。

基础类型

Message

消息对象,用于表示对话中的单条消息:

typescript
interface Message {
  /** 消息角色 */
  role: 'user' | 'assistant' | 'system'
  
  /** 消息内容 */
  content: string
  
  /** 消息名称(可选) */
  name?: string
  
  /** 消息元数据 */
  metadata?: Record<string, any>
  
  /** 消息时间戳 */
  timestamp?: Date
  
  /** 消息ID */
  id?: string
}

ChatOptions

聊天请求的配置选项:

typescript
interface ChatOptions {
  /** 使用的适配器 */
  adapter?: string
  
  /** 使用的模型 */
  model?: string
  
  /** 温度参数 (0-2) */
  temperature?: number
  
  /** 最大Token数 */
  maxTokens?: number
  
  /** Top-p参数 (0-1) */
  topP?: number
  
  /** 频率惩罚 (-2 to 2) */
  frequencyPenalty?: number
  
  /** 存在惩罚 (-2 to 2) */
  presencePenalty?: number
  
  /** 停止词 */
  stop?: string[]
  
  /** 是否启用工具 */
  tools?: boolean
  
  /** 可用工具列表 */
  availableTools?: string[]
  
  /** 流式响应 */
  stream?: boolean
  
  /** 请求超时时间(毫秒) */
  timeout?: number
  
  /** 重试次数 */
  retries?: number
  
  /** 自定义元数据 */
  metadata?: Record<string, any>
}

ChatResponse

聊天响应对象:

typescript
interface ChatResponse {
  /** 响应内容 */
  content: string
  
  /** 使用的模型 */
  model: string
  
  /** 使用的适配器 */
  adapter: string
  
  /** 响应时间(毫秒) */
  responseTime: number
  
  /** 完成原因 */
  finishReason?: 'stop' | 'length' | 'content_filter' | 'tool_calls'
  
  /** Token使用统计 */
  usage?: TokenUsage
  
  /** 响应元数据 */
  metadata?: Record<string, any>
  
  /** 响应ID */
  id?: string
  
  /** 创建时间 */
  created?: Date
}

StreamChunk

流式响应的数据块:

typescript
interface StreamChunk {
  /** 内容片段 */
  content: string
  
  /** 是否为最后一个片段 */
  done: boolean
  
  /** 累计内容 */
  fullContent?: string
  
  /** 完成原因 */
  finishReason?: 'stop' | 'length' | 'content_filter' | 'tool_calls'
  
  /** 响应元数据 */
  metadata?: Record<string, any>
  
  /** 块索引 */
  index?: number
  
  /** 时间戳 */
  timestamp?: Date
}

TokenUsage

Token使用统计:

typescript
interface TokenUsage {
  /** 提示Token数 */
  promptTokens: number
  
  /** 完成Token数 */
  completionTokens: number
  
  /** 总Token数 */
  totalTokens: number
  
  /** 缓存Token数(如果支持) */
  cachedTokens?: number
}

批量处理类型

BatchChatRequest

批量聊天请求项:

typescript
interface BatchChatRequest {
  /** 请求ID */
  id: string
  
  /** 消息列表 */
  messages: Message[]
  
  /** 聊天选项 */
  options?: ChatOptions
  
  /** 请求优先级 */
  priority?: 'low' | 'normal' | 'high'
  
  /** 请求元数据 */
  metadata?: Record<string, any>
}

BatchChatResponse

批量聊天响应项:

typescript
interface BatchChatResponse {
  /** 请求ID */
  id: string
  
  /** 是否成功 */
  success: boolean
  
  /** 响应数据(成功时) */
  response?: ChatResponse
  
  /** 错误信息(失败时) */
  error?: Error
  
  /** 处理时间(毫秒) */
  processingTime: number
  
  /** 响应状态 */
  status: 'completed' | 'failed' | 'timeout' | 'cancelled'
}

BatchOptions

批量处理选项:

typescript
interface BatchOptions {
  /** 并发数量 */
  concurrency?: number
  
  /** 失败时是否继续 */
  continueOnError?: boolean
  
  /** 批量超时时间(毫秒) */
  timeout?: number
  
  /** 进度回调 */
  onProgress?: (completed: number, total: number, failed: number) => void
  
  /** 单项完成回调 */
  onItemComplete?: (response: BatchChatResponse) => void
  
  /** 单项失败回调 */
  onItemError?: (id: string, error: Error) => void
}

配置类型

XAIConfig

SDK主配置接口:

typescript
interface XAIConfig {
  /** 默认适配器名称 */
  defaultAdapter?: string
  
  /** 适配器配置 */
  adapters?: Record<string, AdapterConfig>
  
  /** 插件配置 */
  plugins?: PluginConfig[]
  
  /** 中间件配置 */
  middleware?: MiddlewareConfig[]
  
  /** 全局配置 */
  global?: GlobalConfig
  
  /** 缓存配置 */
  cache?: CacheConfig
  
  /** 日志配置 */
  logging?: LoggingConfig
  
  /** 安全配置 */
  security?: SecurityConfig
}

AdapterConfig

适配器配置接口:

typescript
interface AdapterConfig {
  /** API密钥 */
  apiKey: string
  
  /** 基础URL */
  baseURL?: string
  
  /** 默认模型 */
  defaultModel?: string
  
  /** 请求超时时间 */
  timeout?: number
  
  /** 最大重试次数 */
  maxRetries?: number
  
  /** 代理配置 */
  proxy?: ProxyConfig
  
  /** 自定义请求头 */
  headers?: Record<string, string>
  
  /** 调试模式 */
  debug?: boolean
  
  /** 速率限制 */
  rateLimit?: RateLimitConfig
}

GlobalConfig

全局配置接口:

typescript
interface GlobalConfig {
  /** 默认模型 */
  defaultModel?: string
  
  /** 请求超时时间 */
  timeout?: number
  
  /** 最大重试次数 */
  maxRetries?: number
  
  /** 调试模式 */
  debug?: boolean
  
  /** 日志级别 */
  logLevel?: 'debug' | 'info' | 'warn' | 'error'
  
  /** 环境 */
  environment?: 'development' | 'production' | 'test'
  
  /** 用户代理 */
  userAgent?: string
}

CacheConfig

缓存配置接口:

typescript
interface CacheConfig {
  /** 是否启用缓存 */
  enabled?: boolean
  
  /** 缓存过期时间(毫秒) */
  ttl?: number
  
  /** 最大缓存条目数 */
  maxSize?: number
  
  /** 缓存存储类型 */
  storage?: 'memory' | 'redis' | 'file'
  
  /** 存储配置 */
  storageConfig?: Record<string, any>
  
  /** 缓存键前缀 */
  keyPrefix?: string
  
  /** 压缩选项 */
  compression?: boolean
}

LoggingConfig

日志配置接口:

typescript
interface LoggingConfig {
  /** 日志级别 */
  level?: 'debug' | 'info' | 'warn' | 'error'
  
  /** 输出格式 */
  format?: 'text' | 'json'
  
  /** 输出目标 */
  output?: 'console' | 'file' | 'both'
  
  /** 日志文件路径 */
  filename?: string
  
  /** 最大文件大小 */
  maxFileSize?: number
  
  /** 最大文件数量 */
  maxFiles?: number
  
  /** 是否包含时间戳 */
  timestamp?: boolean
  
  /** 是否包含调用栈 */
  stackTrace?: boolean
}

健康检查类型

HealthStatus

健康状态接口:

typescript
interface HealthStatus {
  /** 状态 */
  status: 'healthy' | 'degraded' | 'unhealthy'
  
  /** 错误信息(如果有) */
  error?: string
  
  /** 检查时间 */
  timestamp: Date
  
  /** 响应时间(毫秒) */
  responseTime?: number
  
  /** 额外信息 */
  details?: Record<string, any>
}

HealthCheckResult

健康检查结果:

typescript
interface HealthCheckResult {
  /** 整体状态 */
  status: 'healthy' | 'degraded' | 'unhealthy'
  
  /** 适配器状态 */
  adapters: Record<string, HealthStatus>
  
  /** 插件状态 */
  plugins: Record<string, HealthStatus>
  
  /** 工具状态 */
  tools: Record<string, HealthStatus>
  
  /** 系统信息 */
  system: SystemInfo
  
  /** 检查时间 */
  timestamp: Date
  
  /** 总检查时间(毫秒) */
  totalCheckTime: number
}

SystemInfo

系统信息接口:

typescript
interface SystemInfo {
  /** 运行时间(毫秒) */
  uptime: number
  
  /** 内存使用情况 */
  memory: {
    used: number
    total: number
    percentage: number
  }
  
  /** SDK版本 */
  version: string
  
  /** Node.js版本 */
  nodeVersion?: string
  
  /** 操作系统 */
  platform?: string
  
  /** CPU信息 */
  cpu?: {
    model: string
    cores: number
    usage: number
  }
}

统计类型

SDKStats

SDK统计信息:

typescript
interface SDKStats {
  /** 请求统计 */
  requests: RequestStats
  
  /** 适配器统计 */
  adapters: Record<string, AdapterStats>
  
  /** 插件统计 */
  plugins: Record<string, PluginStats>
  
  /** Token使用统计 */
  tokens: TokenStats
  
  /** 缓存统计 */
  cache: CacheStats
  
  /** 错误统计 */
  errors: ErrorStats
  
  /** 启动时间 */
  startTime: Date
  
  /** 运行时间(毫秒) */
  uptime: number
}

RequestStats

请求统计:

typescript
interface RequestStats {
  /** 总请求数 */
  total: number
  
  /** 成功请求数 */
  successful: number
  
  /** 失败请求数 */
  failed: number
  
  /** 平均响应时间(毫秒) */
  averageResponseTime: number
  
  /** 最小响应时间(毫秒) */
  minResponseTime: number
  
  /** 最大响应时间(毫秒) */
  maxResponseTime: number
  
  /** 每分钟请求数 */
  requestsPerMinute: number
  
  /** 成功率 */
  successRate: number
}

AdapterStats

适配器统计:

typescript
interface AdapterStats {
  /** 请求数 */
  requests: number
  
  /** 错误数 */
  errors: number
  
  /** 平均响应时间(毫秒) */
  averageResponseTime: number
  
  /** 最后使用时间 */
  lastUsed: Date
  
  /** 健康状态 */
  healthStatus: HealthStatus
  
  /** Token使用量 */
  tokenUsage: TokenUsage
}

TokenStats

Token统计:

typescript
interface TokenStats {
  /** 总提示Token数 */
  totalPromptTokens: number
  
  /** 总完成Token数 */
  totalCompletionTokens: number
  
  /** 总Token数 */
  totalTokens: number
  
  /** 平均每请求Token数 */
  averageTokensPerRequest: number
  
  /** 最大单次Token使用 */
  maxTokensInSingleRequest: number
  
  /** 缓存Token数 */
  cachedTokens: number
}

CacheStats

缓存统计:

typescript
interface CacheStats {
  /** 缓存命中数 */
  hits: number
  
  /** 缓存未命中数 */
  misses: number
  
  /** 缓存命中率 */
  hitRate: number
  
  /** 当前缓存条目数 */
  currentSize: number
  
  /** 最大缓存条目数 */
  maxSize: number
  
  /** 缓存使用率 */
  usageRate: number
  
  /** 过期条目数 */
  expiredEntries: number
}

工具类型

Tool

工具定义接口:

typescript
interface Tool {
  /** 工具名称 */
  name: string
  
  /** 工具描述 */
  description: string
  
  /** 参数定义 */
  parameters: {
    type: 'object'
    properties: Record<string, ParameterDefinition>
    required?: string[]
  }
  
  /** 执行函数 */
  execute: (parameters: Record<string, any>) => Promise<any>
  
  /** 工具版本 */
  version?: string
  
  /** 工具分类 */
  category?: string
  
  /** 是否异步 */
  async?: boolean
  
  /** 超时时间(毫秒) */
  timeout?: number
}

ParameterDefinition

参数定义:

typescript
interface ParameterDefinition {
  /** 参数类型 */
  type: 'string' | 'number' | 'boolean' | 'array' | 'object'
  
  /** 参数描述 */
  description: string
  
  /** 默认值 */
  default?: any
  
  /** 枚举值 */
  enum?: any[]
  
  /** 最小值(数字类型) */
  minimum?: number
  
  /** 最大值(数字类型) */
  maximum?: number
  
  /** 最小长度(字符串/数组类型) */
  minLength?: number
  
  /** 最大长度(字符串/数组类型) */
  maxLength?: number
  
  /** 正则表达式(字符串类型) */
  pattern?: string
  
  /** 数组项类型(数组类型) */
  items?: ParameterDefinition
  
  /** 对象属性(对象类型) */
  properties?: Record<string, ParameterDefinition>
}

ToolResult

工具执行结果:

typescript
interface ToolResult {
  /** 是否成功 */
  success: boolean
  
  /** 结果内容 */
  content: any
  
  /** 错误信息(失败时) */
  error?: string
  
  /** 执行时间(毫秒) */
  executionTime: number
  
  /** 工具名称 */
  toolName: string
  
  /** 执行时间戳 */
  timestamp: Date
  
  /** 元数据 */
  metadata?: Record<string, any>
}

错误类型

XAIError

基础错误类:

typescript
class XAIError extends Error {
  constructor(
    message: string,
    public code: string,
    public details?: any
  ) {
    super(message)
    this.name = 'XAIError'
  }
}

ErrorCodes

错误代码枚举:

typescript
const ErrorCodes = {
  // 初始化错误
  INITIALIZATION_FAILED: 'INITIALIZATION_FAILED',
  
  // 配置错误
  INVALID_CONFIG: 'INVALID_CONFIG',
  CONFIG_VALIDATION_FAILED: 'CONFIG_VALIDATION_FAILED',
  
  // 适配器错误
  ADAPTER_NOT_FOUND: 'ADAPTER_NOT_FOUND',
  ADAPTER_INITIALIZATION_FAILED: 'ADAPTER_INITIALIZATION_FAILED',
  ADAPTER_REQUEST_FAILED: 'ADAPTER_REQUEST_FAILED',
  
  // 插件错误
  PLUGIN_NOT_FOUND: 'PLUGIN_NOT_FOUND',
  PLUGIN_INITIALIZATION_FAILED: 'PLUGIN_INITIALIZATION_FAILED',
  PLUGIN_EXECUTION_FAILED: 'PLUGIN_EXECUTION_FAILED',
  
  // 工具错误
  TOOL_NOT_FOUND: 'TOOL_NOT_FOUND',
  TOOL_EXECUTION_FAILED: 'TOOL_EXECUTION_FAILED',
  TOOL_TIMEOUT: 'TOOL_TIMEOUT',
  
  // 请求错误
  REQUEST_FAILED: 'REQUEST_FAILED',
  REQUEST_TIMEOUT: 'REQUEST_TIMEOUT',
  INVALID_REQUEST: 'INVALID_REQUEST',
  
  // 认证错误
  AUTHENTICATION_FAILED: 'AUTHENTICATION_FAILED',
  INVALID_API_KEY: 'INVALID_API_KEY',
  
  // 限制错误
  RATE_LIMIT_EXCEEDED: 'RATE_LIMIT_EXCEEDED',
  QUOTA_EXCEEDED: 'QUOTA_EXCEEDED',
  
  // 网络错误
  NETWORK_ERROR: 'NETWORK_ERROR',
  CONNECTION_FAILED: 'CONNECTION_FAILED',
  
  // 其他错误
  UNKNOWN_ERROR: 'UNKNOWN_ERROR',
  INTERNAL_ERROR: 'INTERNAL_ERROR'
} as const

type ErrorCode = typeof ErrorCodes[keyof typeof ErrorCodes]

实用类型

Nullable

可空类型:

typescript
type Nullable<T> = T | null

Optional

可选类型:

typescript
type Optional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>

DeepPartial

深度可选类型:

typescript
type DeepPartial<T> = {
  [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P]
}

AsyncFunction

异步函数类型:

typescript
type AsyncFunction<T extends any[] = any[], R = any> = (...args: T) => Promise<R>

EventListener

事件监听器类型:

typescript
type EventListener<T extends any[] = any[]> = (...args: T) => void | Promise<void>

这些类型定义构成了XAI-SDK的类型系统基础,确保了类型安全和良好的开发体验。

Released under the MIT License.