Skip to content

agents / Exports / BaseAIProvider

Class: BaseAIProvider<TConfig, TMessage, TResponse>

Base AI provider implementation with proper type constraints All AI providers should extend this class

======================================== CRITICAL IMPLEMENTATION GUIDELINES

ALL AI PROVIDER IMPLEMENTATIONS (OpenAI, Anthropic, Google, etc.) MUST:

  1. EXTEND THIS CLASS:

    typescript
    export class OpenAIProvider extends BaseAIProvider {
        override readonly name = 'openai';
        override readonly version = '1.0.0';
  2. USE IMPORTS FROM @robota-sdk/agents:

    typescript
    import { BaseAIProvider } from '@robota-sdk/agents';
    import type {
        UniversalMessage,
        ChatOptions,
        ToolCall,
        ToolSchema,
        AssistantMessage
    } from '@robota-sdk/agents';
  3. USE OVERRIDE KEYWORD FOR ALL INHERITED METHODS:

    • override async chat(...)
    • override async *chatStream(...)
    • override supportsTools()
    • override validateConfig()
    • override async dispose()
  4. DO NOT REDEFINE TYPES THAT EXIST IN @robota-sdk/agents:

    • UniversalMessage
    • ChatOptions
    • ToolCall
    • ToolSchema
    • AssistantMessage
    • SystemMessage
    • UserMessage
    • ToolMessage
  5. HANDLE MESSAGE CONTENT PROPERLY:

    • For tool calls: content should be null (not empty string)
    • For regular messages: content can be string or null
    • Always preserve null values from API responses
  6. CALL SUPER() IN CONSTRUCTOR:

    typescript
    constructor(options: ProviderOptions) {
        super();
        // provider-specific initialization
    }

This ensures ExecutionService can properly identify providers and prevents type conflicts across the codebase.

========================================

Type parameters

NameTypeDescription
TConfigProviderConfigProvider configuration type (defaults to ProviderConfig for type safety)
TMessageUniversalMessageMessage type (defaults to UniversalMessage for backward compatibility)
TResponseUniversalMessageResponse type (defaults to UniversalMessage for backward compatibility)

Implements

Table of contents

Constructors

Properties

Methods

Constructors

constructor

new BaseAIProvider<TConfig, TMessage, TResponse>(): BaseAIProvider<TConfig, TMessage, TResponse>

Type parameters

NameType
TConfigProviderConfig
TMessageUniversalMessage
TResponseUniversalMessage

Returns

BaseAIProvider<TConfig, TMessage, TResponse>

Properties

name

Readonly Abstract name: string

Implementation of

TypeSafeAIProvider.name

Defined in

packages/agents/src/abstracts/base-ai-provider.ts:110


version

Readonly Abstract version: string

Implementation of

TypeSafeAIProvider.version

Defined in

packages/agents/src/abstracts/base-ai-provider.ts:111

Methods

configure

configure(config): Promise<void>

Configure the provider with type-safe configuration

Parameters

NameType
configTConfig

Returns

Promise<void>

Implementation of

TypeSafeAIProvider.configure

Defined in

packages/agents/src/abstracts/base-ai-provider.ts:117


chat

chat(messages, options?): Promise<TResponse>

Each provider must implement chat using their own native SDK types internally

Parameters

NameTypeDescription
messagesTMessage[]Array of messages from conversation history
options?ChatOptionsChat options including tools, model settings, etc.

Returns

Promise<TResponse>

Promise resolving to a response

Implementation of

TypeSafeAIProvider.chat

Defined in

packages/agents/src/abstracts/base-ai-provider.ts:128


chatStream

chatStream(messages, options?): AsyncIterable<TResponse, any, any>

Each provider must implement streaming chat using their own native SDK types internally

Parameters

NameTypeDescription
messagesTMessage[]Array of messages from conversation history
options?ChatOptionsChat options including tools, model settings, etc.

Returns

AsyncIterable<TResponse, any, any>

AsyncIterable of response chunks

Implementation of

TypeSafeAIProvider.chatStream

Defined in

packages/agents/src/abstracts/base-ai-provider.ts:136


supportsTools

supportsTools(): boolean

Default implementation - most modern providers support tools

Returns

boolean

true if tool calling is supported

Implementation of

TypeSafeAIProvider.supportsTools

Defined in

packages/agents/src/abstracts/base-ai-provider.ts:142


validateConfig

validateConfig(): boolean

Default implementation - providers can override for specific validation

Returns

boolean

true if configuration is valid

Implementation of

TypeSafeAIProvider.validateConfig

Defined in

packages/agents/src/abstracts/base-ai-provider.ts:150


dispose

dispose(): Promise<void>

Default implementation - providers can override for cleanup

Returns

Promise<void>

Implementation of

TypeSafeAIProvider.dispose

Defined in

packages/agents/src/abstracts/base-ai-provider.ts:157

Released under the MIT License.