agents / 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:
EXTEND THIS CLASS:
typescriptexport class OpenAIProvider extends AbstractAIProvider { override readonly name = 'openai'; override readonly version = '1.0.0';USE IMPORTS FROM @robota-sdk/agent-core:
typescriptimport { AbstractAIProvider } from '@robota-sdk/agent-core'; import type { TUniversalMessage, ChatOptions, IToolCall, ToolSchema, AssistantMessage, } from '@robota-sdk/agent-core';USE OVERRIDE KEYWORD FOR ALL INHERITED METHODS:
- override async chat(...)
- override async *chatStream(...)
- override supportsTools()
- override validateConfig()
- override async dispose()
DO NOT REDEFINE TYPES THAT EXIST IN @robota-sdk/agent-core:
- TUniversalMessage
- ChatOptions
- IToolCall
- ToolSchema
- AssistantMessage
- SystemMessage
- UserMessage
- ToolMessage
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
CALL SUPER() IN CONSTRUCTOR:
typescriptconstructor(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
| Name | Type | Description |
|---|---|---|
TConfig | ProviderConfig | Provider configuration type (defaults to ProviderConfig for type safety) |
Implements
TypeSafeAIProvider<TConfig>
Table of contents
Constructors
Properties
Methods
Constructors
constructor
• new AbstractAIProvider<TConfig>(logger?): AbstractAIProvider<TConfig>
Type parameters
| Name | Type |
|---|---|
TConfig | ProviderConfig |
Parameters
| Name | Type | Default value |
|---|---|---|
logger | AbstractLogger | DEFAULT_ABSTRACT_LOGGER |
Returns
AbstractAIProvider<TConfig>
Defined in
packages/agents/src/abstracts/abstract-ai-provider.ts:145
Properties
name
• Readonly Abstract name: string
Implementation of
Defined in
packages/agents/src/abstracts/abstract-ai-provider.ts:139
version
• Readonly Abstract version: string
Implementation of
Defined in
packages/agents/src/abstracts/abstract-ai-provider.ts:140
Methods
configure
▸ configure(config): Promise<void>
Configure the provider with type-safe configuration
Parameters
| Name | Type |
|---|---|
config | TConfig |
Returns
Promise<void>
Implementation of
Defined in
packages/agents/src/abstracts/abstract-ai-provider.ts:152
chat
▸ chat(messages, options?): Promise<TUniversalMessage>
Each provider must implement chat using their own native SDK types internally
Parameters
| Name | Type | Description |
|---|---|---|
messages | TUniversalMessage[] | Array of messages from conversation history |
options? | IChatOptions | Chat options including tools, model settings, etc. |
Returns
Promise<TUniversalMessage>
Promise resolving to a response
Implementation of
Defined in
packages/agents/src/abstracts/abstract-ai-provider.ts:171
chatStream
▸ chatStream(messages, options?): AsyncIterable<TUniversalMessage, any, any>
Each provider must implement streaming chat using their own native SDK types internally
Parameters
| Name | Type | Description |
|---|---|---|
messages | TUniversalMessage[] | Array of messages from conversation history |
options? | IChatOptions | Chat options including tools, model settings, etc. |
Returns
AsyncIterable<TUniversalMessage, any, any>
AsyncIterable of response chunks
Implementation of
Defined in
packages/agents/src/abstracts/abstract-ai-provider.ts:179
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
| Name | Type |
|---|---|
payload | IProviderRequest |
Returns
Promise<IRawProviderResponse>
Implementation of
TypeSafeAIProvider.generateResponse
Defined in
packages/agents/src/abstracts/abstract-ai-provider.ts:188
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
| Name | Type |
|---|---|
payload | IProviderRequest |
Returns
AsyncIterable<IRawProviderResponse, any, any>
Implementation of
TypeSafeAIProvider.generateStreamingResponse
Defined in
packages/agents/src/abstracts/abstract-ai-provider.ts:209
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/abstract-ai-provider.ts:233
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/abstract-ai-provider.ts:241
dispose
▸ dispose(): Promise<void>
Clean up resources when provider is no longer needed Override this method in subclasses for additional cleanup
Returns
Promise<void>