mirror of
https://github.com/stackblitz/bolt.new
synced 2025-06-26 18:17:50 +00:00
feat: Integrate AWS Bedrock with Claude 3.5 Sonnet, Claude 3 Sonnet, and Claude 3.5 Haiku
This commit is contained in:
parent
d2ba8d3be3
commit
4961d700ad
10
.env.example
10
.env.example
@ -83,6 +83,16 @@ XAI_API_KEY=
|
|||||||
# You only need this environment variable set if you want to use Perplexity models
|
# You only need this environment variable set if you want to use Perplexity models
|
||||||
PERPLEXITY_API_KEY=
|
PERPLEXITY_API_KEY=
|
||||||
|
|
||||||
|
# Get your AWS Bedrock configuration as a JSON string.
|
||||||
|
# The JSON should include the following keys:
|
||||||
|
# - region: The AWS region where Bedrock is available.
|
||||||
|
# - accessKeyId: Your AWS access key ID.
|
||||||
|
# - secretAccessKey: Your AWS secret access key.
|
||||||
|
# - sessionToken (optional): Temporary session token if using an IAM role or temporary credentials.
|
||||||
|
# Example JSON:
|
||||||
|
# {"region": "us-east-1", "accessKeyId": "yourAccessKeyId", "secretAccessKey": "yourSecretAccessKey", "sessionToken": "yourSessionToken"}
|
||||||
|
AWS_BEDROCK_CONFIG=
|
||||||
|
|
||||||
# Include this environment variable if you want more logging for debugging locally
|
# Include this environment variable if you want more logging for debugging locally
|
||||||
VITE_LOG_LEVEL=debug
|
VITE_LOG_LEVEL=debug
|
||||||
|
|
||||||
|
|||||||
@ -22,6 +22,7 @@ const API_KEY_PROVIDERS = [
|
|||||||
'Perplexity',
|
'Perplexity',
|
||||||
'Cohere',
|
'Cohere',
|
||||||
'AzureOpenAI',
|
'AzureOpenAI',
|
||||||
|
'AmazonBedrock',
|
||||||
] as const;
|
] as const;
|
||||||
|
|
||||||
interface ApiKeys {
|
interface ApiKeys {
|
||||||
|
|||||||
82
app/lib/modules/llm/providers/amazon-bedrock.ts
Normal file
82
app/lib/modules/llm/providers/amazon-bedrock.ts
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
import { BaseProvider } from '~/lib/modules/llm/base-provider';
|
||||||
|
import type { ModelInfo } from '~/lib/modules/llm/types';
|
||||||
|
import type { LanguageModelV1 } from 'ai';
|
||||||
|
import type { IProviderSetting } from '~/types/model';
|
||||||
|
import { createAmazonBedrock } from '@ai-sdk/amazon-bedrock';
|
||||||
|
|
||||||
|
interface AWSBedRockConfig {
|
||||||
|
region: string;
|
||||||
|
accessKeyId: string;
|
||||||
|
secretAccessKey: string;
|
||||||
|
sessionToken?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default class AmazonBedrockProvider extends BaseProvider {
|
||||||
|
name = 'AmazonBedrock';
|
||||||
|
getApiKeyLink = 'https://console.aws.amazon.com/iam/home';
|
||||||
|
|
||||||
|
config = {
|
||||||
|
apiTokenKey: 'AWS_BEDROCK_CONFIG',
|
||||||
|
};
|
||||||
|
|
||||||
|
staticModels: ModelInfo[] = [
|
||||||
|
{
|
||||||
|
name: 'anthropic.claude-3-5-sonnet-20240620-v1:0',
|
||||||
|
label: 'Claude 3.5 Sonnet (Bedrock)',
|
||||||
|
provider: 'AmazonBedrock',
|
||||||
|
maxTokenAllowed: 8000,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'anthropic.claude-3-sonnet-20240229-v1:0',
|
||||||
|
label: 'Claude 3 Sonnet (Bedrock)',
|
||||||
|
provider: 'AmazonBedrock',
|
||||||
|
maxTokenAllowed: 8000,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'anthropic.claude-3-5-haiku-20241022-v1:0',
|
||||||
|
label: 'Claude 3.5 Haiku (Bedrock)',
|
||||||
|
provider: 'AmazonBedrock',
|
||||||
|
maxTokenAllowed: 8000,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
getModelInstance(options: {
|
||||||
|
model: string;
|
||||||
|
serverEnv: any;
|
||||||
|
apiKeys?: Record<string, string>;
|
||||||
|
providerSettings?: Record<string, IProviderSetting>;
|
||||||
|
}): LanguageModelV1 {
|
||||||
|
const { model, serverEnv, apiKeys, providerSettings } = options;
|
||||||
|
|
||||||
|
const { apiKey } = this.getProviderBaseUrlAndKey({
|
||||||
|
apiKeys,
|
||||||
|
providerSettings: providerSettings?.[this.name],
|
||||||
|
serverEnv: serverEnv as any,
|
||||||
|
defaultBaseUrlKey: '',
|
||||||
|
defaultApiTokenKey: 'AWS_BEDROCK_CONFIG',
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!apiKey) {
|
||||||
|
throw new Error(`Missing API key for ${this.name} provider`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const parsedConfig: AWSBedRockConfig = JSON.parse(apiKey);
|
||||||
|
|
||||||
|
const { region, accessKeyId, secretAccessKey } = parsedConfig;
|
||||||
|
|
||||||
|
if (!region || !accessKeyId || !secretAccessKey) {
|
||||||
|
throw new Error(
|
||||||
|
`The provided API configuration is incomplete. Ensure that 'region', 'accessKeyId', and 'secretAccessKey' are included.`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const bedrock = createAmazonBedrock({
|
||||||
|
region: parsedConfig.region,
|
||||||
|
accessKeyId: parsedConfig.accessKeyId,
|
||||||
|
secretAccessKey: parsedConfig.secretAccessKey,
|
||||||
|
sessionToken: parsedConfig.sessionToken,
|
||||||
|
});
|
||||||
|
|
||||||
|
return bedrock(model);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -14,6 +14,7 @@ import PerplexityProvider from './providers/perplexity';
|
|||||||
import TogetherProvider from './providers/together';
|
import TogetherProvider from './providers/together';
|
||||||
import XAIProvider from './providers/xai';
|
import XAIProvider from './providers/xai';
|
||||||
import HyperbolicProvider from './providers/hyperbolic';
|
import HyperbolicProvider from './providers/hyperbolic';
|
||||||
|
import AmazonBedrockProvider from './providers/amazon-bedrock';
|
||||||
|
|
||||||
export {
|
export {
|
||||||
AnthropicProvider,
|
AnthropicProvider,
|
||||||
@ -32,4 +33,5 @@ export {
|
|||||||
XAIProvider,
|
XAIProvider,
|
||||||
TogetherProvider,
|
TogetherProvider,
|
||||||
LMStudioProvider,
|
LMStudioProvider,
|
||||||
|
AmazonBedrockProvider,
|
||||||
};
|
};
|
||||||
|
|||||||
@ -35,6 +35,7 @@
|
|||||||
"@ai-sdk/google": "^0.0.52",
|
"@ai-sdk/google": "^0.0.52",
|
||||||
"@ai-sdk/mistral": "^0.0.43",
|
"@ai-sdk/mistral": "^0.0.43",
|
||||||
"@ai-sdk/openai": "^0.0.66",
|
"@ai-sdk/openai": "^0.0.66",
|
||||||
|
"@ai-sdk/amazon-bedrock": "1.0.6",
|
||||||
"@codemirror/autocomplete": "^6.18.3",
|
"@codemirror/autocomplete": "^6.18.3",
|
||||||
"@codemirror/commands": "^6.7.1",
|
"@codemirror/commands": "^6.7.1",
|
||||||
"@codemirror/lang-cpp": "^6.0.2",
|
"@codemirror/lang-cpp": "^6.0.2",
|
||||||
|
|||||||
1075
pnpm-lock.yaml
1075
pnpm-lock.yaml
File diff suppressed because it is too large
Load Diff
1
worker-configuration.d.ts
vendored
1
worker-configuration.d.ts
vendored
@ -16,4 +16,5 @@ interface Env {
|
|||||||
MISTRAL_API_KEY: string;
|
MISTRAL_API_KEY: string;
|
||||||
XAI_API_KEY: string;
|
XAI_API_KEY: string;
|
||||||
PERPLEXITY_API_KEY: string;
|
PERPLEXITY_API_KEY: string;
|
||||||
|
AWS_BEDROCK_CONFIG: string;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user