@robota-sdk/agent-provider-anthropic
v3.0.0-beta.53
Published
Anthropic Claude integration for Robota SDK - Claude 3, Claude 2, function calling, and tool integration with Anthropic's API
Downloads
5,056
Maintainers
Readme
@robota-sdk/agent-provider-anthropic
Anthropic Claude provider for the Robota SDK. Implements AbstractAIProvider with support for Claude models, streaming, tool calling, and server-side web search.
Installation
npm install @robota-sdk/agent-provider-anthropic @anthropic-ai/sdkPeer dependency: @robota-sdk/agent-core
Quick Start
import { Robota } from '@robota-sdk/agent-core';
import { AnthropicProvider } from '@robota-sdk/agent-provider-anthropic';
const provider = new AnthropicProvider({
apiKey: process.env.ANTHROPIC_API_KEY,
});
const agent = new Robota({
name: 'Assistant',
aiProviders: [provider],
defaultModel: {
provider: 'anthropic',
model: 'claude-sonnet-4-6',
systemMessage: 'You are a helpful assistant.',
},
});
const response = await agent.run('Hello!');Supported Models
claude-opus-4-6(1M context)claude-sonnet-4-6(200K context)claude-haiku-4-5(200K context)
Features
Streaming
provider.onTextDelta = (delta) => process.stdout.write(delta);
const response = await agent.run('Write a poem');
// Text streams in real-time, response is the complete textWeb Search
Server-side web search via Anthropic's web_search_20250305 tool:
provider.enableWebTools = true;
provider.onServerToolUse = (name, input) => {
console.log(`Searching: ${input.query}`);
};Tool Calling
Tool calls are handled automatically by the Robota execution loop. The provider converts between the universal message format and Anthropic's input_schema-based tool format.
Configuration
const provider = new AnthropicProvider({
apiKey: 'sk-ant-...', // API key
timeout: 60000, // Request timeout (ms)
baseURL: 'https://...', // Custom base URL
client: anthropicClient, // Pre-configured SDK client
executor: remoteExecutor, // Delegate to remote executor
});Public API
Exports
| Export | Kind | Description |
| ------------------------------- | --------- | ------------------------------------------------------------------------- |
| AnthropicProvider | class | Anthropic provider implementing AbstractAIProvider |
| IAnthropicProviderOptions | interface | Constructor options: apiKey, timeout, baseURL, client, executor |
| TAnthropicProviderOptionValue | type | Union type for valid provider option values |
| createAnthropicProvider | function | Stub — placeholder for future factory pattern (currently returns void) |
api-types.ts is an internal module and is not part of the public API.
AnthropicProvider Instance Fields
| Field | Type | Default | Description |
| ----------------- | --------------------- | ------- | ------------------------------ |
| enableWebTools | boolean | false | Include web search server tool |
| onTextDelta | TTextDeltaCallback? | — | Streaming text callback |
| onServerToolUse | function? | — | Server tool execution callback |
Always-Streaming Policy
The provider always uses the streaming API (messages.stream) internally, even when no onTextDelta callback is set. This prevents the 10-minute HTTP timeout that can occur during long-running tool loops with non-streaming requests. The complete response text is assembled from the streamed chunks.
Abort Signal Support
Pass an AbortSignal via IChatOptions.signal. When aborted during streaming, the provider returns partial content accumulated so far with stopReason: 'aborted'.
Output Token Limits
When IChatOptions.maxTokens is not specified, the provider uses the model's maxOutput from the CLAUDE_MODELS registry in agent-core as the default.
Known Limitations
chatStream()does not applyenableWebTools, system message extraction, oronServerToolUse(usechat()for full feature support)validateConfig()returns false for executor-based providers (functional but reports invalid)
License
MIT
