56 lines
1.3 KiB
TypeScript
56 lines
1.3 KiB
TypeScript
import { loadApiKey } from '../spec';
|
|
import { AnthropicMessagesLanguageModel } from './anthropic-messages-language-model';
|
|
import {
|
|
AnthropicMessagesModelId,
|
|
AnthropicMessagesSettings,
|
|
} from './anthropic-messages-settings';
|
|
|
|
/**
|
|
* Anthropic provider.
|
|
*/
|
|
export class Anthropic {
|
|
readonly baseUrl?: string;
|
|
readonly apiKey?: string;
|
|
|
|
constructor(
|
|
options: {
|
|
baseUrl?: string;
|
|
apiKey?: string;
|
|
generateId?: () => string;
|
|
} = {},
|
|
) {
|
|
this.baseUrl = options.baseUrl;
|
|
this.apiKey = options.apiKey;
|
|
}
|
|
|
|
private get baseConfig() {
|
|
return {
|
|
baseUrl: this.baseUrl ?? 'https://api.anthropic.com/v1',
|
|
headers: () => ({
|
|
'anthropic-version': '2023-06-01',
|
|
'anthropic-beta': 'tools-2024-04-04',
|
|
'x-api-key': loadApiKey({
|
|
apiKey: this.apiKey,
|
|
environmentVariableName: 'ANTHROPIC_API_KEY',
|
|
description: 'Anthropic',
|
|
}),
|
|
}),
|
|
};
|
|
}
|
|
|
|
messages(
|
|
modelId: AnthropicMessagesModelId,
|
|
settings: AnthropicMessagesSettings = {},
|
|
) {
|
|
return new AnthropicMessagesLanguageModel(modelId, settings, {
|
|
provider: 'anthropic.messages',
|
|
...this.baseConfig,
|
|
});
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Default Anthropic provider instance.
|
|
*/
|
|
export const anthropic = new Anthropic();
|