@onioneko/kiki-llm-bedrock
v0.1.3
Published
AWS Bedrock LLM provider middleware for @onioneko/kiki-core
Downloads
314
Maintainers
Readme
@onioneko/kiki-llm-bedrock
Kiki · Middleware framework for LLM agents
npm install @onioneko/kiki-llm-bedrockAWS Bedrock LLM provider as middleware. Calls the Bedrock Converse API and pushes the assistant response onto ctx.messages, then calls next() to allow response-processing middleware downstream. Works with any Bedrock-hosted model (Claude, Llama, Mistral, etc.).
Usage
import { compose } from "@onioneko/kiki-core";
import { createBedrockMiddleware } from "@onioneko/kiki-llm-bedrock";
const chain = compose([
createBedrockMiddleware({ model: "anthropic.claude-sonnet-4-6" }),
]);
const ctx = {
messages: [{ role: "user", content: "What is 2 + 2?" }],
system: "Be concise.",
};
await chain(ctx);
// ctx.messages[1] is the assistant responseConfiguration
model is required. Other fields are optional with sensible defaults. Authentication uses the standard AWS credential chain (env vars, IAM role, SSO, etc.).
createBedrockMiddleware({
model: "anthropic.claude-sonnet-4-6", // required
region: "us-east-1", // or AWS_REGION env var
maxTokens: 16384, // default: 16384
client: bedrockClient, // optional: injected BedrockRuntimeClient (for testing)
});Behavior
- Non-terminal — calls
next()after pushing the response, allowing response-processing middleware to be composed after the LLM. - Converse API — uses the unified
ConverseCommand, not the low-levelInvokeModelCommand. Model-agnostic. - Multi-modal — handles both
stringandContentBlock[]message content. Images are sent as bytes (base64-decoded). - No URL images — Bedrock Converse only supports bytes and S3 locations, not direct URLs. URL-type images are skipped.
- AWS credentials — uses the standard AWS credential chain. No API key config needed.
- Config precedence — explicit config > defaults.
Exports
createBedrockMiddleware(config)— Factory function returning aMiddlewareBedrockConfig— Configuration type- Re-exports from
@onioneko/kiki-types:Message,ConversationContext,ContentBlock,TextBlock,ImageBlock
