Logging Agent Runs
For non-blocking uploads of AgentRun
objects, create an AgentRunWriter
object with docent.init()
. It will automatically create a new collection to write to, or you can pass an existing collection_id
.
import os
import docent
writer = docent.init(
collection_name="elicitation-run",
collection_id="optional-existing-collection-id",
api_key=os.getenv("DOCENT_API_KEY"), # is default and can be omitted
# Uncomment and adjust these if you're self-hosting
# server_url="http://localhost:8889",
# web_url="http://localhost:3001",
)
Then pass a list of AgentRun
objects to writer.log_agent_runs()
.
By default, the background queue has a max size of 20,000 runs. log_agent_runs
will block the calling thread when the queue is full, but you can pass queue_maxsize <= 0
to make the queue size infinite.
To override defaults, manually create an AgentRunWriter
instance:
from docent.agent_run_writer import AgentRunWriter
writer = AgentRunWriter(
...
# Maximum async workers processing runs from the queue
num_workers: int = 2,
# Maximum number of runs in the queue
queue_maxsize: int = 20_000
# How often (in seconds) to flush accumulated batches
flush_interval: float = 1.0
# Maximum number of agent runs per request to backend
batch_size: int = 1_000
# Timeout (in seconds) to wait for shutdown
shutdown_timeout: int = 60
)
Finally, call .finish()
The AgentRunWriter
thread will persist up to shutdown_timeout
seconds to finish uploading queued runs, after which it will cancel pending requests and close the thread. Call .finish(force=True)
to close the thread immediately.