Back to Mem0

AWS Bedrock

docs/components/llms/models/aws_bedrock.mdx

2.0.194.6 KB
Original Source

Setup

  • Before using the AWS Bedrock LLM, make sure you have the appropriate model access from Bedrock Console.
  • Model availability is per-region. anthropic.claude-sonnet-4-20250514-v1:0 supports on-demand inference in us-east-1 and ap-southeast-4; from any other region, use the cross-region inference profile ID us.anthropic.claude-sonnet-4-20250514-v1:0 instead.
  • Install the AWS SDK for your language: pip install boto3 (Python) or npm install @aws-sdk/client-bedrock-runtime (TypeScript).
  • Both SDKs fall back to the standard AWS credential chain (environment variables, ~/.aws/credentials, or an attached IAM role), so exporting AWS_REGION, AWS_ACCESS_KEY_ID, and AWS_SECRET_ACCESS_KEY is the quickest way to get started. In TypeScript you can also pass credentials inline with awsRegion, awsAccessKeyId, awsSecretAccessKey, and awsSessionToken, as shown below.

Usage

<CodeGroup> ```python Python import os from mem0 import Memory

os.environ['AWS_REGION'] = 'us-east-1' os.environ["AWS_ACCESS_KEY_ID"] = "xx" os.environ["AWS_SECRET_ACCESS_KEY"] = "xx"

config = { "llm": { "provider": "aws_bedrock", "config": { "model": "anthropic.claude-sonnet-4-20250514-v1:0", "temperature": 0.2, "max_tokens": 2000, } } }

m = Memory.from_config(config) messages = [ {"role": "user", "content": "I'm planning to watch a movie tonight. Any recommendations?"}, {"role": "assistant", "content": "How about thriller movies? They can be quite engaging."}, {"role": "user", "content": "I’m not a big fan of thriller movies but I love sci-fi movies."}, {"role": "assistant", "content": "Got it! I'll avoid thriller recommendations and suggest sci-fi movies in the future."} ] m.add(messages, user_id="alice", metadata={"category": "movies"})


```typescript TypeScript
import { Memory } from 'mem0ai/oss';

const config = {
  llm: {
    provider: 'aws_bedrock',
    config: {
      model: 'anthropic.claude-sonnet-4-20250514-v1:0',
      temperature: 0.2,
      maxTokens: 2000,
      // Optional. Omit these to use the default AWS credential chain.
      awsRegion: process.env.AWS_REGION,
      awsAccessKeyId: process.env.AWS_ACCESS_KEY_ID,
      awsSecretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
    },
  },
};

const memory = new Memory(config);
const messages = [
    {"role": "user", "content": "I'm planning to watch a movie tonight. Any recommendations?"},
    {"role": "assistant", "content": "How about thriller movies? They can be quite engaging."},
    {"role": "user", "content": "I’m not a big fan of thriller movies but I love sci-fi movies."},
    {"role": "assistant", "content": "Got it! I'll avoid thriller recommendations and suggest sci-fi movies in the future."}
];
await memory.add(messages, { userId: 'alice', metadata: { category: 'movies' } });
</CodeGroup> <Note> `@aws-sdk/client-bedrock-runtime` is an optional peer dependency of `mem0ai`, so npm will not install it for you. The TypeScript provider loads it lazily and throws a clear error on the first request if the package is missing. </Note> <Note> The TypeScript provider calls the Bedrock [Converse API](https://docs.aws.amazon.com/bedrock/latest/userguide/conversation-inference.html), a single uniform interface across the current Bedrock model families. Streaming and `InvokeModel`-only models are not supported yet. </Note>

Application inference profiles

Bedrock resolves the model family from the model identifier. An application inference profile ARN ends in an opaque ID, so there is nothing to resolve from. Set provider_override (Python) / providerOverride (TypeScript) when your model is one:

<CodeGroup> ```python Python config = { "llm": { "provider": "aws_bedrock", "config": { "model": "arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/abc123xyz", "provider_override": "anthropic", } } } ```
typescript
const config = {
  llm: {
    provider: 'aws_bedrock',
    config: {
      model: 'arn:aws:bedrock:us-east-1:123456789012:application-inference-profile/abc123xyz',
      providerOverride: 'anthropic',
    },
  },
};
</CodeGroup>

Without it, initialization raises Unknown provider in model (Python: ValueError; TypeScript: Error). Plain model IDs and cross-region inference profiles such as us.anthropic.claude-sonnet-4-20250514-v1:0 still resolve automatically and need no override.

Config

All available parameters for the aws_bedrock config are present in Master List of All Params in Config.