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.0.0.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.0.0-py3-none-any.whl (19.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: fasteval_observe-2.0.0.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.0.0.tar.gz
Algorithm Hash digest
SHA256 c85ac1d27b852dd33faae78bb8f9ec637ecb41109ade4bfb66d0e3791be17b91
MD5 e2f5380bb7abcfecc1c98189562c5589
BLAKE2b-256 cb5865431551d2df68a7bf90c6fc68383ccb0b1aadf385510696fea95d047751

See more details on using hashes here.

Provenance

The following attestation bundles were made for fasteval_observe-2.0.0.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.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for fasteval_observe-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a9685a453a8febede7150450d3dc8ad42c90dac0cc917c0c8de7b76f702480c3
MD5 4da410e93febc20b0c3dc1f67527bcef
BLAKE2b-256 efb61da0850717fd8559c7be0e28a5a6b66afa19e8fe450e280428d6e11825da

See more details on using hashes here.

Provenance

The following attestation bundles were made for fasteval_observe-2.0.0-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