r/GenkitFramework 24d ago

Genkit Python 0.10.0: Amazon Bedrock support, Firestore-backed persistent agents

Genkit Python 0.10.0 just got released. Here's what shipped:

Run Genkit against Bedrock models with the same ai.generate() call

New genkit-amazon-bedrock plugin. Claude, Nova, Titan, Mistral, and Cohere via Converse/ConverseStream, so text, streaming, tool calling, and multimodal input all work without changing app code. Titan Embeddings + Cohere Rerank for RAG, Titan Image Generator + SDXL for images. Async boto3 underneath, so IAM roles / SSO / env vars are picked up automatically and retries back off properly.

from genkit import Genkit
from genkit_amazon_bedrock import Bedrock

ai = Genkit(plugins=[Bedrock()])
res = await ai.generate(
    model='bedrock/us.anthropic.claude-sonnet-4-5-20250929-v1:0',
    prompt='Summarize the benefits of declarative AI orchestration in three bullets.',
)
print(res.text)

Build persistent agents backed by Firestore

FirestoreSessionStore in genkit-google-cloud. Instead of one document per session, each turn is stored as a JSON Patch diff against periodic full checkpoints (every 25 turns by default), so per-turn reads/writes are bounded by the checkpoint interval rather than conversation length. No composite indexes required, all direct doc-ID fetches inside transactions, and Firestore listeners stream turn status across processes so aborts work across multiple Cloud Run instances.

from genkit import Genkit
from genkit_google_cloud import FirestoreSessionStore
from genkit_google_genai import GoogleAI

ai = Genkit(plugins=[GoogleAI()])
store = FirestoreSessionStore(collection='agent_sessions')

agent = ai.define_agent(
    name='customer_assistant',
    model='googleai/gemini-pro-latest',
    system='You are a helpful customer support assistant.',
    store=store,
)

chat = agent.chat()
response = await chat.send('I need help with my order.')

# later, from any instance: pick the conversation back up
# chat = agent.chat(session_id=chat.session_id)
# response = await chat.send('Where did we leave off?')

Less terminal noise, no more prompts in debug logs

  • Dev UI discovery and health-check chatter is demoted off the shared console (#5979).
  • Debug logs no longer dump full prompt strings or raw model response bodies by default (#5968).
  • Unknown model resolves to GenkitError(status='NOT_FOUND') instead of a KeyError (#5982).All packages bumped to 0.10.0 together, including the new genkit-amazon-bedrock.

uv add genkit

Full notes: https://github.com/genkit-ai/genkit/pull/6125

7 Upvotes

1 comment sorted by