Async MongoDB for Agent

Kern supports using MongoDB asynchronously as a storage backend for Agents, with the AsyncMongoDb class.

Usage

You need to provide either db_url or client. The following example uses db_url.

Run MongoDB

Install docker desktop and run MongoDB on port 27017 using:

1docker run -d \
2 --name local-mongo \
3 -p 27017:27017 \
4 -e MONGO_INITDB_ROOT_USERNAME=mongoadmin \
5 -e MONGO_INITDB_ROOT_PASSWORD=secret \
6 mongo
1"""
2Run `uv pip install kern-ai openai motor pymongo` to install dependencies.
3"""
4from kern.agent import Agent
5from kern.db.mongo import AsyncMongoDb
6from kern.tools.hackernews import HackerNewsTools
7
8# MongoDB connection settings
9db_url = "mongodb://localhost:27017"
10
11db = AsyncMongoDb(db_url=db_url)
12
13agent = Agent(
14 db=db,
15 tools=[HackerNewsTools()],
16 add_history_to_context=True,
17)
18agent.print_response("How many people live in Canada?")
19agent.print_response("What is their national anthem called?")

Params

ParameterTypeDefaultDescription
idOptional[str]-The ID of the database instance. UUID by default.
db_clientOptional[MongoClient]-The MongoDB client to use.
db_nameOptional[str]-The name of the database to use.
db_urlOptional[str]-The database URL to connect to.
session_collectionOptional[str]-Name of the collection to store sessions.
memory_collectionOptional[str]-Name of the collection to store memories.
metrics_collectionOptional[str]-Name of the collection to store metrics.
eval_collectionOptional[str]-Name of the collection to store evaluation runs.
knowledge_collectionOptional[str]-Name of the collection to store knowledge documents.
traces_collectionOptional[str]-Name of the collection to store traces.
spans_collectionOptional[str]-Name of the collection to store spans.