Skip to main content

Runtime monitoring plugin for fasteval with async sampling and structured logging

Project description

fasteval-observe

Runtime monitoring plugin for fasteval with async sampling and structured logging.

Installation

pip install fasteval-core fasteval-observe

Quick Start

import fasteval as fe
from fasteval_observe import observe
from fasteval_observe.sampling import FixedRateSamplingStrategy

# Monitor 5% of agent calls with structured logging
@observe(sampling=FixedRateSamplingStrategy(rate=0.05))
async def my_agent(query: str) -> str:
    response = await llm.invoke(query)
    return response

# Combine with fasteval evaluation metrics
@observe(
    sampling=FixedRateSamplingStrategy(rate=0.05),
    run_evaluations=True  # Run @fe.* metrics in background
)
@fe.correctness(threshold=0.8)
async def evaluated_agent(query: str) -> str:
    response = await llm.invoke(query)
    return response

Sampling Strategies

Built-in Strategies

  • NoSamplingStrategy - Sample every call (development/debugging)
  • FixedRateSamplingStrategy - Fixed rate sampling (e.g., 1 in N calls)
  • ProbabilisticSamplingStrategy - Random probability-based sampling
  • AdaptiveSamplingStrategy - Adjust rate based on latency/errors
  • TokenBudgetSamplingStrategy - Sample based on token cost
  • ComposableSamplingStrategy - Combine multiple strategies

Custom Strategies

from fasteval_observe.sampling import BaseSamplingStrategy

class MyCustomStrategy(BaseSamplingStrategy):
    def should_sample(self, function_name, args, kwargs, context):
        # Custom logic
        return True

@observe(sampling=MyCustomStrategy())
async def my_agent(query: str) -> str:
    return await process(query)

Configuration

from fasteval_observe import configure_observe, ObserveConfig, set_logger
import logging

configure_observe(ObserveConfig(
    enabled=True,
    flush_interval_seconds=5.0,
    max_queue_size=10000,
    include_inputs=False,  # Privacy: don't log inputs
    include_outputs=False,
))

# Optional: Use custom logger for file output, cloud logging, etc.
my_logger = logging.getLogger("my_app.observations")
my_logger.addHandler(logging.FileHandler("/var/log/observations.jsonl"))
set_logger(my_logger)

Structured Logging

Observations are logged as JSON for easy collection by Kubernetes sidecars, Fluentd, etc:

{
  "timestamp": "2026-02-03T10:15:30.123Z",
  "source": "fasteval_observe",
  "function_name": "my_agent",
  "execution_time_ms": 1234.56,
  "sampling_strategy": "FixedRateSamplingStrategy",
  "metrics": {
    "latency_ms": 1234.56,
    "success": true
  }
}

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fasteval_observe-2.1.1.tar.gz (14.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fasteval_observe-2.1.1-py3-none-any.whl (19.0 kB view details)

Uploaded Python 3

File details

Details for the file fasteval_observe-2.1.1.tar.gz.

File metadata

  • Download URL: fasteval_observe-2.1.1.tar.gz
  • Upload date:
  • Size: 14.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for fasteval_observe-2.1.1.tar.gz
Algorithm Hash digest
SHA256 876399d7bd531b7d81d6f3c8d07e429a1f2ad8c0a3e2fbffd1c38ade872db39f
MD5 9fcb9c90dc0fac635e8ec4882e3cb38f
BLAKE2b-256 6c4e4927c1a76e57bc67f3e4462f2b88e045450dac9655c0b80e28e7af6db77b

See more details on using hashes here.

Provenance

The following attestation bundles were made for fasteval_observe-2.1.1.tar.gz:

Publisher: release.yml on intuit/fasteval

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fasteval_observe-2.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for fasteval_observe-2.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f0e2ebeaac86469d4aec4e41e42299325ec67d6641d88bbb72db7d59f0c1ba0b
MD5 546a37fbeb45a87c80ca6bbe9b8b26e9
BLAKE2b-256 f4564a05b710e40bd82cee4333eee5567af8ac1ea675b7d48fe5bdb7ca0609e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for fasteval_observe-2.1.1-py3-none-any.whl:

Publisher: release.yml on intuit/fasteval

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page