Skip to content

agent-core / Exports / AbstractAIProvider

Class: AbstractAIProvider<TConfig>

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 AbstractAIProvider {
        override readonly name = 'openai';
        override readonly version = '1.0.0';
  2. USE IMPORTS FROM @robota-sdk/agent-core:

    typescript
    import { AbstractAIProvider } from '@robota-sdk/agent-core';
    import type {
        TUniversalMessage,
        ChatOptions,
        IToolCall,
        ToolSchema,
        AssistantMessage
    } from '@robota-sdk/agent-core';
  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/agent-core:

    • TUniversalMessage
    • ChatOptions
    • IToolCall
    • 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: IProviderOptions) {
        super();
        // provider-specific initialization
    }

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

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

Template

Message type (defaults to TUniversalMessage for backward compatibility)

Template

Response type (defaults to TUniversalMessage for backward compatibility)

Type parameters

NameTypeDescription
TConfigIProviderConfigProvider configuration type (defaults to IProviderConfig for type safety)

Implements

Table of contents

Constructors

Properties

Methods

Constructors

constructor

new AbstractAIProvider<TConfig>(logger?): AbstractAIProvider<TConfig>

Type parameters

NameType
TConfigIProviderConfig

Parameters

NameTypeDefault value
loggerILoggerSilentLogger

Returns

AbstractAIProvider<TConfig>

Defined in

packages/agent-core/src/abstracts/abstract-ai-provider.ts:129

Properties

name

Readonly Abstract name: string

Provider identifier

Implementation of

IAIProvider.name

Defined in

packages/agent-core/src/abstracts/abstract-ai-provider.ts:123


version

Readonly Abstract version: string

Provider version

Implementation of

IAIProvider.version

Defined in

packages/agent-core/src/abstracts/abstract-ai-provider.ts:124

Methods

configure

configure(config): Promise<void>

Configure the provider with type-safe configuration

Parameters

NameType
configTConfig

Returns

Promise<void>

Defined in

packages/agent-core/src/abstracts/abstract-ai-provider.ts:136


chat

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

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

Parameters

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

Returns

Promise<TUniversalMessage>

Promise resolving to a response

Implementation of

IAIProvider.chat

Defined in

packages/agent-core/src/abstracts/abstract-ai-provider.ts:157


chatStream

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

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

Parameters

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

Returns

AsyncIterable<TUniversalMessage, any, any>

AsyncIterable of response chunks

Implementation of

IAIProvider.chatStream

Defined in

packages/agent-core/src/abstracts/abstract-ai-provider.ts:165


generateResponse

generateResponse(payload): Promise<IRawProviderResponse>

Provider-agnostic raw response API.

This is the canonical "raw payload" entrypoint required by the AIProvider contract. The default implementation delegates to chat() and adapts the result into a RawProviderResponse shape.

Parameters

NameType
payloadIProviderRequest

Returns

Promise<IRawProviderResponse>

Implementation of

IAIProvider.generateResponse

Defined in

packages/agent-core/src/abstracts/abstract-ai-provider.ts:177


generateStreamingResponse

generateStreamingResponse(payload): AsyncIterable<IRawProviderResponse, any, any>

Provider-agnostic raw streaming API.

If a provider does not implement chatStream, it does not support streaming.

Parameters

NameType
payloadIProviderRequest

Returns

AsyncIterable<IRawProviderResponse, any, any>

Implementation of

IAIProvider.generateStreamingResponse

Defined in

packages/agent-core/src/abstracts/abstract-ai-provider.ts:198


supportsTools

supportsTools(): boolean

Default implementation - most modern providers support tools

Returns

boolean

true if tool calling is supported

Implementation of

IAIProvider.supportsTools

Defined in

packages/agent-core/src/abstracts/abstract-ai-provider.ts:222


validateConfig

validateConfig(): boolean

Default implementation - providers can override for specific validation

Returns

boolean

true if configuration is valid

Implementation of

IAIProvider.validateConfig

Defined in

packages/agent-core/src/abstracts/abstract-ai-provider.ts:230


dispose

dispose(): Promise<void>

Clean up resources when provider is no longer needed Override this method in subclasses for additional cleanup

Returns

Promise<void>

Implementation of

IAIProvider.dispose

Defined in

packages/agent-core/src/abstracts/abstract-ai-provider.ts:359

Released under the MIT License.