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

Uploaded Python 3

File details

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

File metadata

  • Download URL: fasteval_observe-2.1.2.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.2.tar.gz
Algorithm Hash digest
SHA256 d8814962a11e151534115e0e302c505b4790a842738201324b4dcd7e16df83db
MD5 50880f81182b8b74bc7f6445fb1ee0db
BLAKE2b-256 01adb99bbdd43c3e3905cc2e3301c79082be4d37402dff9e605a6f137366340d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fasteval_observe-2.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7d9b35ae931395876da534f8f4629797d16ecabfe2317e655be6517d2114c30f
MD5 2b5e21ca4641bd3b9e6311deff15aa76
BLAKE2b-256 c86d0f4a98b0f63dfaf6db5538d58ff375e158696276f96755fb54096d6cded7

See more details on using hashes here.

Provenance

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