Skip to main content
Change of provenance

The repository or configuration that created this release differ from a previous release. View details.

GLLM Evaluator SDK

A comprehensive evaluation framework for Generative AI applications including LLM outputs, AI Agent responses, and RAG (Retrieval-Augmented Generation) systems.

Overview

The GLLM Evaluator SDK provides a robust, extensible framework designed to make AI evaluation as simple and seamless as possible across the GDP Labs ecosystem. Built with integration-first philosophy, it enables teams to easily assess the quality of generated content from any AI system while seamlessly connecting with experiment tracking and observability platforms.

Philosophy

Easy Evaluation Everywhere: Standardize evaluation practices across all GDP Labs AI applications with minimal setup and maximum flexibility.

Integration-First Design: Built to work seamlessly with your existing experiment tracking, observability, and MLOps infrastructure.

Extensible by Design: Add new evaluators, metrics, and integrations without breaking existing workflows.

Key Features

  • 🌐 GDP Labs Ecosystem Ready: Standardized evaluation framework across all internal AI applications
  • 🔌 Seamless Integration: Easy integration with experiment tracking and observability platforms
  • 🚀 Async-First Design: High-performance async evaluation with parallel processing
  • 🔧 Extensible Architecture: Easy to add new evaluators and metrics for any use case
  • 🤖 LLM as a Judge: Advanced language models for nuanced, contextual evaluation
  • 📐 Traditional Metrics: Support for classical evaluation metrics and custom scoring functions
  • 🔗 Popular Evaluator Integration: Integration with popular evaluators such as DeepEval
  • ⚡ Zero-Config Start: Get started with sensible defaults, customize as needed

Installation

Prerequisites

Mandatory:

  1. Python 3.11+ — Install here
  2. pip — Install here
  3. uv — Install here
  4. gcloud CLI (for authentication) — Install here, then log in using:
    gcloud auth login
    

Install from Artifact

Because gllm-evals is a private library hosted in a secure Google Cloud repository, you must provide an access token to install it. The command below handles this authorization inline by using an access token from the gcloud CLI.

uv pip install --extra-index-url https://oauth2accesstoken:$(gcloud auth print-access-token)@glsdk.gdplabs.id/gen-ai-internal/simple/ gllm-evals

Local Development Setup

Prerequisites

  1. Python 3.11+ — Install here

  2. pip — Install here

  3. uv — Install here

  4. gcloud CLI — Install here, then log in using:

    gcloud auth login
    
  5. Git — Install here

  6. Trivy — Install here (required by the pre-push git hook, which runs a vulnerability scan on changed libraries before every push)

  7. Access to the GDP Labs SDK GitHub repository


1. Clone Repository

git clone git@github.com:GDP-ADMIN/gl-sdk.git
cd gl-sdk/libs/gllm-evals

2. Setup Authentication

Because gllm-evals is a private library, you first need to configure uv to authenticate with our secure Google Cloud repositories. Set the following environment variables to authenticate with internal package indexes:

export UV_INDEX_GEN_AI_INTERNAL_USERNAME=oauth2accesstoken
export UV_INDEX_GEN_AI_INTERNAL_PASSWORD="$(gcloud auth print-access-token)"

3. Quick Setup

Run:

make setup

4. Activate Virtual Environment

source .venv/bin/activate

Local Development Utilities

The following Makefile commands are available for quick operations:

Install uv

make install-uv

Install Pre-Commit

make install-pre-commit

This installs both the pre-commit and pre-push git hooks from the repository-root .pre-commit-config.yaml. The pre-push hook runs unit tests, a changed-line coverage check, and a Trivy vulnerability scan for every changed library before a push completes, so make sure Trivy is installed and gcloud auth login is active.

Install Dependencies

make install

Update Dependencies

make update

Run Tests

make test

Adding the Package

Once authorization is configured, you can add gllm-evals to your project:

uv add gllm-evals

Dependencies

The SDK requires:

  • gllm-core and gllm-inference for LLM interactions
  • pydantic for data validation

Quick Start

Basic Usage

import asyncio
import os
from gllm_evals.evaluator.geval_generation_evaluator import GEvalGenerationEvaluator

async def main():
    # Initialize the evaluator
    evaluator = GEvalGenerationEvaluator(
        model_credentials=os.getenv("GOOGLE_API_KEY")
    )

    # Prepare evaluation data
    data = {
        "query": "What is the capital of France?",
        "expected_response": "Paris is the capital of France.",
        "generated_response": "The capital of France is Paris.",
        "retrieved_context": "Paris is the capital and largest city of France."
    }

    # Evaluate
    result = await evaluator.evaluate(data)
    print(result)

if __name__ == "__main__":
    asyncio.run(main())

Multimodal Evaluation

Use [ATTACHMENT:<id-or-uri>] placeholders in evaluation fields when the judge needs image context. Attachments may be declared by ID through LLMTestCase.attachments, or referenced inline with https://, http://, file://, or data: URIs.

import asyncio

from gllm_evals import AttachmentRef, LLMTestCase, evaluate
from gllm_evals.evaluator.geval_generation_evaluator import GEvalGenerationEvaluator


async def main():
    data = [
        LLMTestCase(
            input="Describe this image: [ATTACHMENT:sample_image]",
            actual_output="The image shows a mountain landscape.",
            expected_output="A mountainous outdoor landscape is visible.",
            retrieved_context=["Reference image: [ATTACHMENT:sample_image]"],
            attachments={
                "sample_image": AttachmentRef(
                    uri="https://picsum.photos/id/29/640/480.jpg",
                    mime_type="image/jpeg",
                )
            },
        )
    ]

    results = await evaluate(data=data, evaluators=[GEvalGenerationEvaluator()])
    print(results)


if __name__ == "__main__":
    asyncio.run(main())

You can place image placeholders in input, actual_output, expected_output, retrieved_context, and expected_context. The evaluator resolves placeholders before invoking the judge; unresolved placeholders fail validation instead of being sent as raw text.

For CSV and spreadsheet datasets, put row-level attachments in an attachments JSON cell:

input,actual_output,expected_output,attachments
"Describe [ATTACHMENT:image_1]","A mountain landscape.","A mountain landscape.","{""image_1"":{""uri"":""https://picsum.photos/id/29/640/480.jpg"",""mime_type"":""image/jpeg""}}"

See examples/evaluate/example_multimodal_evaluate_from_csv.py for a runnable CSV example that references bundled local image files, including a chart image used for a chart-comprehension question.

Inline URI and data URL placeholders are also supported without a named attachment entry:

LLMTestCase(
    input="Describe [ATTACHMENT:https://example.com/image.jpg]",
    actual_output="A product photo.",
)

Pass multimodal=False to suppress multimodal judging rules on the metrics that expose the option — LMBasedMetric and the GEval-family metrics (DeepEvalGEvalMetric and its subclasses, e.g. groundedness, completeness, and redundancy). Placeholder resolution still occurs, so raw [ATTACHMENT:...] text is not sent to the judge.

Dataset Evaluation

import asyncio
import os
from gllm_evals.dataset.dict_dataset import DictDataset
from gllm_evals.evaluator.geval_generation_evaluator import GEvalGenerationEvaluator
from gllm_evals.runner import Runner
from gllm_evals.experiment_tracker.csv_experiment_tracker import CSVExperimentTracker

async def dataset_evaluation():
    # Initialize evaluator
    evaluator = GEvalGenerationEvaluator(
        model_credentials=os.getenv("GOOGLE_API_KEY"),
        run_parallel=True  # Enable parallel processing
    )

    # Create dataset
    dataset = DictDataset([
        {
            "query": "What is the capital of France?",
            "expected_response": "Paris",
            "generated_response": "Paris is the capital of France.",
            "retrieved_context": "Paris is the capital of France."
        },
        {
            "query": "What is 1 + 1?",
            "expected_response": "2",
            "generated_response": "The answer is 2.",
            "retrieved_context": "1 + 1 equals 2."
        }
    ])

    # Run evaluation
    runner = Runner(evaluator, batch_size=10)
    results = await runner.evaluate(dataset)

    # Track results
    tracker = CSVExperimentTracker(score_key="generation/score")
    tracker.log_batch(results)

    print(f"Evaluation Results: {tracker.get_results()}")

if __name__ == "__main__":
    asyncio.run(dataset_evaluation())

Using Jev with GEval

Every GEval metric (built-in and custom DeepEvalGEvalMetric) accepts a decisions-model (DM) invoker such as TypeSafe Jev in models and fallback_models, next to regular LM invokers. Set OPENROUTER_API_KEY first.

import os

from gllm_inference.dm_invoker import build_dm_invoker
from gllm_inference.lm_invoker import build_lm_invoker
from gllm_evals.metrics.generation.geval_completeness import GEvalCompletenessMetric

jev = build_dm_invoker(
    model_id="openrouter/typesafe/jev-1.14",
    credentials=os.getenv("OPENROUTER_API_KEY"),
    config={"provider": {"order": ["typesafe"], "allow_fallbacks": False}},
)
deepseek = build_lm_invoker(
    model_id="openrouter/deepseek/deepseek-v4.1-flash-1017",
    credentials=os.getenv("OPENROUTER_API_KEY"),
    config={"provider": {"order": ["inference-net"], "allow_fallbacks": False}},
)

metric = GEvalCompletenessMetric(models=jev)                                         # Jev only
metric = GEvalCompletenessMetric(models=jev, fallback_models=[deepseek])             # Jev, then an LM
metric = GEvalCompletenessMetric(models=[jev, jev, jev])                             # three judges, majority vote

result = await metric.evaluate(row)
result.score                    # normalized score in [0, 1]
result.decision.choice          # e.g. "3", the rubric score Jev chose
result.decision.confidence      # e.g. 0.99
result.decision.probabilities   # e.g. {"1": 0.0, "2": 0.01, "3": 0.99}
  • Fallback is per complete attempt, in the configured order. A judge that raises an invoker error, times out, or gives an unusable answer (a choice that was not offered) hands the row to the next judge. If exactly one judge was tried and failed, its own error is raised; if two or more failed, EvalJudgesExhaustedError is raised with every attempt in children. A configuration, input or unsupported-operation failure stops the chain at once.

  • result.decision is set only when a single Jev judge produced the score. With several judges it is None on the aggregate; each judge's own entry keeps its decision.

  • Fewshot, evaluation_steps, custom GEval and thresholds behave as with an LM judge. Jev receives only the configured steps, never steps another LM generated. For a criteria-only custom metric, Jev judges from the criteria and the rubric.

  • YAML suites: give a model entry type: dm (type defaults to lm):

    evaluators:
      - class_name: GEvalGenerationEvaluator
        models:
          - type: dm
            model_id: openrouter/typesafe/jev-1.14
            credentials: ${OPENROUTER_API_KEY}
            config:
              provider:
                order: [typesafe]
                allow_fallbacks: false
    
  • GEval only. Every other metric (LM-based, the other DeepEval metrics) raises NotImplementedError naming the metric when handed a DM invoker, and so do the evaluators built on them (for example LMBasedRetrievalEvaluator).

  • Fallback scope. The chain moves on when a judge's invoker fails or times out, when Jev's answer is unusable, and when an LM judge returns invalid JSON. Other errors, such as a row missing a required field, are raised.

  • Rows with images. Jev cannot take images, so it is skipped for such a row and an image-capable LM in fallback_models judges it. If no configured judge can, the row fails with EvalUnsupportedOperationError. A capability probe that fails for an operational reason (authentication, rate limit, connection, timeout) raises that failure instead and is never read as "this judge cannot take images".

  • Token usage is reported per model; no cost is calculated for Jev.

  • get_full_prompt returns the Jev request as JSON when Jev is the primary judge.

Custom Metrics

Create domain-specific metrics easily:

from gllm_evals.metrics.metric import BaseMetric
from gllm_evals.types import LLMTestCase, MetricOutput

class DomainSpecificMetric(BaseMetric):
    """Custom metric for domain-specific evaluation."""

    name = "domain_accuracy"

    async def _evaluate(self, data: LLMTestCase) -> MetricOutput:
        # Your domain-specific evaluation logic
        score = self.calculate_domain_score(data)
        return {"score": score, "explanation": "Domain-specific reasoning"}

_evaluate always receives one row. metric.evaluate([...]) scores each row with its own _evaluate call and returns one result per row; an error raised for a row is raised from the list call.

Error Handling

Every error the SDK raises on purpose is a gllm_core.exceptions.BaseError with a stable code. gllm-evals' own errors are BaseEvalError subclasses with codes GLLM-EVAL-*, and each also inherits the closest built-in exception (for example EvalConfigurationError is a ValueError), so existing except ValueError blocks keep working. Errors from gllm-inference (GLLM-INF-*) pass through unchanged.

Class Code Typical cause
EvalConfigurationError GLLM-EVAL-CONFIGURATION Invalid option, metric setup, suite document or credentials setup
EvalInputError GLLM-EVAL-INPUT Invalid row, dataset content or attachment
EvalDependencyUnavailableError GLLM-EVAL-DEPENDENCY-UNAVAILABLE Missing or incompatible optional integration
EvalUnsupportedOperationError GLLM-EVAL-UNSUPPORTED-OPERATION Row type, media, judge type or feature the component or judge does not support
EvalUnsupportedSyncOperationError GLLM-EVAL-UNSUPPORTED-SYNC-OPERATION A synchronous path was called on an async-only component. A subclass of EvalUnsupportedOperationError
EvalResourceNotFoundError GLLM-EVAL-RESOURCE-NOT-FOUND Missing file, worksheet or remote object
EvalAccessError GLLM-EVAL-ACCESS Authentication failed or permission denied
EvalConnectionError GLLM-EVAL-CONNECTION Connection could not be made or was lost; retryable
EvalTimeoutError GLLM-EVAL-TIMEOUT Request or retry deadline expired
EvalRateLimitError GLLM-EVAL-RATE-LIMIT A non-inference service throttled the request
EvalServiceError GLLM-EVAL-SERVICE A non-inference service failed or rejected the request
EvalServiceUnavailableError GLLM-EVAL-SERVICE-UNAVAILABLE A non-inference service failed temporarily (HTTP 500, 502, 503 and 504); retryable. A subclass of EvalServiceError
EvalIOError GLLM-EVAL-IO Local read, write or cleanup failed
EvalSerializationError GLLM-EVAL-SERIALIZATION SDK-owned artifact could not be encoded or decoded
EvalJudgeResponseError GLLM-EVAL-JUDGE-RESPONSE A judge answered, but the answer is unusable
EvalResultContractError GLLM-EVAL-RESULT-CONTRACT A metric or evaluator returned a result of the wrong shape
EvalAggregationError GLLM-EVAL-AGGREGATION Results could not be combined, e.g. every metric or judge failed
EvalJudgesExhaustedError GLLM-EVAL-JUDGES-EXHAUSTED Two or more judges in a fallback chain failed
EvalExecutionError GLLM-EVAL-EXECUTION Unexpected failure; give support the reference ID

Each error also has recovery guidance (retryable, and retry_after_seconds when the service reported one) and, once it has been recorded, a reference_id.

Handle errors by class or code, never by message text. Messages are written for people and may change. Every message says what happened and then what to do next, whether it is a class's default message or a more specific one.

from gllm_core.exceptions import BaseError
from gllm_evals import evaluate
from gllm_evals.exceptions import EvalConfigurationError, EvalInputError

try:
    result = await evaluate(data="data.csv", evaluators=[evaluator])
except EvalInputError as error:           # the caller can fix the data
    print(error.code, error.message)
except EvalConfigurationError as error:   # the caller can fix the setup
    print(error.code, error.message)
except BaseError as error:                # any other normalized failure
    if error.recovery.get("retryable"):
        ...  # retry later
    raise

A failed row does not raise. When an evaluator or metric fails on a row, the run continues and that result carries an error record (an ErrorInfo model) instead of a score, with code, message (safe to show), reference_id, error_type, origin, recovery, component, operation and children (the failures it summarizes). A failed evaluator's result is keyed by the evaluator's name, like a successful one. Use is_failed_result to tell a failure from a valid low score:

from gllm_evals.exceptions import is_failed_result

for row in result.results:
    for evaluator_result in row:
        for name, output in evaluator_result.items():
            if is_failed_result(output):
                print(name, output.error.code, output.error.reference_id)

Result fields, messages and log records never contain row content, prompts, file paths, URLs, credentials or the upstream error text. Handled failures are logged once on the gllm_evals.errors logger with the code in extra["error_code"]; the original exception stays available as __cause__ on a raised error. Direct Pydantic model construction (for example LLMTestCase(...)) still raises pydantic.ValidationError.

See examples/example_error_handling.py for a runnable walkthrough.

Architecture

Core Components

1. Evaluators

  • BaseEvaluator: Abstract base class for all evaluators - extend for any evaluation scenario
  • GEvalGenerationEvaluator: Production-ready GEval-backed evaluator for text generation quality with rule-based scoring

2. Metrics

  • BaseMetric: Abstract base class for metrics - create custom metrics for any domain
  • LMBasedMetric: Generic LM-powered metric evaluation with customizable prompts

3. Datasets

  • BaseDataset: Abstract base class for datasets - support any data format
  • DictDataset: Simple dictionary-based dataset implementation

4. Runner

  • Runner: Runner class for dataset evaluation

Metrics

Below is a list of metrics that are currently supported by the SDK.

Metric Description Type Score Range
LMBasedMetric An all purpose metric that can be used to evaluate any metric that can be expressed as a LM prompt LM-based -
DeepEvalGEvalMetric A versatile evaluation metric framework that can be used to create custom evaluation metrics with configurable criteria, evaluation steps, and rubrics LM-based -
GEvalCompletenessMetric A metric that can be used to evaluate the completeness of the generated output DeepEval GEval 1-3
GEvalRedundancyMetric A metric that can be used to evaluate the redundancy of the generated output DeepEval GEval 1-3
GEvalGroundednessMetric A metric that can be used to evaluate the groundedness of the generated output DeepEval GEval 1-3
GEvalLanguageConsistencyMetric A metric that can be used to evaluate language consistency between query and generated response DeepEval GEval 0-1
GEvalRefusalMetric A metric that can be used to evaluate refusal behavior from query and expected response DeepEval GEval 0-1
GEvalRefusalAlignmentMetric A metric that can be used to evaluate refusal alignment between expected and generated responses DeepEval GEval 0-1

Evaluators

Below is a list of evaluators that are currently supported by the SDK.

Evaluator Description Type
GEvalGenerationEvaluator An evaluator that can be used to evaluate the quality of the generated output LLM-based

Datasets

Below is a list of datasets that are currently supported by the SDK.

Dataset Description
DictDataset A dataset that loads data from a dictionary
HuggingFaceDataset A dataset that loads data from a HuggingFace dataset

Metadata

Release files for gllm-evals-binary 0.1.42

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Change of provenance

The repository or configuration that created these release files differ from that of a previous release.

We recommend inspecting the repository and configuration before proceeding. View details.

Built distributions (wheels)

Table of built distributions (wheels) for gllm-evals-binary 0.1.42
File Actions
gllm_evals_binary-0.1.42-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for gllm_evals_binary-0.1.42-cp313-cp313-win_amd64.whl
gllm_evals_binary-0.1.42-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details for gllm_evals_binary-0.1.42-cp313-cp313-manylinux_2_28_x86_64.whl
gllm_evals_binary-0.1.42-cp313-cp313-macosx_13_0_arm64.whl CPython 3.13 CPython 3.13 macOS 13.0+ ARM64 Details for gllm_evals_binary-0.1.42-cp313-cp313-macosx_13_0_arm64.whl
gllm_evals_binary-0.1.42-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for gllm_evals_binary-0.1.42-cp312-cp312-win_amd64.whl
gllm_evals_binary-0.1.42-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details for gllm_evals_binary-0.1.42-cp312-cp312-manylinux_2_28_x86_64.whl
gllm_evals_binary-0.1.42-cp312-cp312-macosx_13_0_arm64.whl CPython 3.12 CPython 3.12 macOS 13.0+ ARM64 Details for gllm_evals_binary-0.1.42-cp312-cp312-macosx_13_0_arm64.whl
gllm_evals_binary-0.1.42-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for gllm_evals_binary-0.1.42-cp311-cp311-win_amd64.whl
gllm_evals_binary-0.1.42-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details for gllm_evals_binary-0.1.42-cp311-cp311-manylinux_2_28_x86_64.whl
gllm_evals_binary-0.1.42-cp311-cp311-macosx_13_0_arm64.whl CPython 3.11 CPython 3.11 macOS 13.0+ ARM64 Details for gllm_evals_binary-0.1.42-cp311-cp311-macosx_13_0_arm64.whl

Total release size: 27.8 MB

Release files / gllm_evals_binary-0.1.42-cp313-cp313-win_amd64.whl

Change of provenance

This file belongs to a release with changed provenance: the repository or configuration that created the release files differ from that of a previous release.

We recommend inspecting the repository and configuration before proceeding. View details.

Download URL gllm_evals_binary-0.1.42-cp313-cp313-win_amd64.whl
Size 2.6 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
6fd61cbb7d0cb66e623982d795a34b9ca29eabc66cc22357ee7176b8b1e7a1c6
BLAKE2b-256 checksum
How to use checksums
a4b4964582bfd5181b8849ececfc916dc34756ad20961fc67333bcfca896f190
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.

Transparency log

Release files / gllm_evals_binary-0.1.42-cp313-cp313-manylinux_2_28_x86_64.whl

Change of provenance

This file belongs to a release with changed provenance: the repository or configuration that created the release files differ from that of a previous release.

We recommend inspecting the repository and configuration before proceeding. View details.

Download URL gllm_evals_binary-0.1.42-cp313-cp313-manylinux_2_28_x86_64.whl
Size 3.9 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
cedc0dbc6c030e21d43de0231f422108c31a8cfe7058a6c0dd2aa86bdbba9b35
BLAKE2b-256 checksum
How to use checksums
e0c5b76acb7736e40f05269b1f4a5a65b6316a8bcf1bab3ece37f3d8294e2cf6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"AlmaLinux","version":"8.10","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by Google Cloud, verified by PyPI on Oct 28, 2026.

Transparency log

Release files / gllm_evals_binary-0.1.42-cp313-cp313-macosx_13_0_arm64.whl

Change of provenance

This file belongs to a release with changed provenance: the repository or configuration that created the release files differ from that of a previous release.

We recommend inspecting the repository and configuration before proceeding. View details.

Download URL gllm_evals_binary-0.1.42-cp313-cp313-macosx_13_0_arm64.whl
Size 3.1 MB
Tags CPython 3.13 macOS 13.0+ ARM64
SHA-256 checksum
How to use checksums
e7573f0cbee8114e349950778ec47ea7be25156185fb4b4f5d6862de7e4428c8
BLAKE2b-256 checksum
How to use checksums
d47581c6a4217aa00d75fb988830ff3716d72c390bd555ac24e66451c5d18ce1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.

Transparency log

Release files / gllm_evals_binary-0.1.42-cp312-cp312-win_amd64.whl

Change of provenance

This file belongs to a release with changed provenance: the repository or configuration that created the release files differ from that of a previous release.

We recommend inspecting the repository and configuration before proceeding. View details.

Download URL gllm_evals_binary-0.1.42-cp312-cp312-win_amd64.whl
Size 2.6 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
2ba4346088a227fbca7127391e59db580b9815f13fbc2e32b0f9969181335012
BLAKE2b-256 checksum
How to use checksums
7f4dc454f7d70f5bb536b980f870886a1003852907a25c0fd8443a1365eb8d37
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.

Transparency log

Release files / gllm_evals_binary-0.1.42-cp312-cp312-manylinux_2_28_x86_64.whl

Change of provenance

This file belongs to a release with changed provenance: the repository or configuration that created the release files differ from that of a previous release.

We recommend inspecting the repository and configuration before proceeding. View details.

Download URL gllm_evals_binary-0.1.42-cp312-cp312-manylinux_2_28_x86_64.whl
Size 3.8 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
60566574399b4ed84d0a78591576f0162d97aee5f77fb987cc36ba60b7bb1225
BLAKE2b-256 checksum
How to use checksums
0d4ce40d0fcb06f40447c374283ad854f452c541b47b4871fe2d59aa1d78d3c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"AlmaLinux","version":"8.10","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by Google Cloud, verified by PyPI on Oct 28, 2026.

Transparency log

Release files / gllm_evals_binary-0.1.42-cp312-cp312-macosx_13_0_arm64.whl

Change of provenance

This file belongs to a release with changed provenance: the repository or configuration that created the release files differ from that of a previous release.

We recommend inspecting the repository and configuration before proceeding. View details.

Download URL gllm_evals_binary-0.1.42-cp312-cp312-macosx_13_0_arm64.whl
Size 3.0 MB
Tags CPython 3.12 macOS 13.0+ ARM64
SHA-256 checksum
How to use checksums
96c6328e5b186bbb2bc948f9af9ee4a38c0fba28bc4587081dffdb5f3e5bc31f
BLAKE2b-256 checksum
How to use checksums
b52ca604dbd0792a2524b444ad88db5323a44d71296b6242768d463218065958
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.

Transparency log

Release files / gllm_evals_binary-0.1.42-cp311-cp311-win_amd64.whl

Change of provenance

This file belongs to a release with changed provenance: the repository or configuration that created the release files differ from that of a previous release.

We recommend inspecting the repository and configuration before proceeding. View details.

Download URL gllm_evals_binary-0.1.42-cp311-cp311-win_amd64.whl
Size 2.6 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
8d2be7ce39e9dace1fe70f4b638be1b227c412911d4a67a7b1f5166c582408e1
BLAKE2b-256 checksum
How to use checksums
d7c37a3d288299554c7dba34167268abb1bdd7751cbf519c93e8d6b1de982021
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.

Transparency log

Release files / gllm_evals_binary-0.1.42-cp311-cp311-manylinux_2_28_x86_64.whl

Change of provenance

This file belongs to a release with changed provenance: the repository or configuration that created the release files differ from that of a previous release.

We recommend inspecting the repository and configuration before proceeding. View details.

Download URL gllm_evals_binary-0.1.42-cp311-cp311-manylinux_2_28_x86_64.whl
Size 3.4 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
1d91bcbc352e435b969be22479bfdb18253181c29df995a0af7ed9424f013153
BLAKE2b-256 checksum
How to use checksums
2cbfff502a37676d0b0b324400046176e7058fdff31c8367a93e6e171a621731
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.4 {"installer":{"name":"uv","version":"0.13.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"AlmaLinux","version":"8.10","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by Google Cloud, verified by PyPI on Oct 28, 2026.

Transparency log

Release files / gllm_evals_binary-0.1.42-cp311-cp311-macosx_13_0_arm64.whl

Change of provenance

This file belongs to a release with changed provenance: the repository or configuration that created the release files differ from that of a previous release.

We recommend inspecting the repository and configuration before proceeding. View details.

Download URL gllm_evals_binary-0.1.42-cp311-cp311-macosx_13_0_arm64.whl
Size 2.9 MB
Tags CPython 3.11 macOS 13.0+ ARM64
SHA-256 checksum
How to use checksums
b7e2ef7818f43e3d49173c9a8f51d7f46b1a8067525c237a775c360713e70bb9
BLAKE2b-256 checksum
How to use checksums
42fb01138d181d341517d76efb4b1fe517d635e0de2bfb2c89d071405504eedb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.

Transparency log

Security for gllm-evals-binary 0.1.42

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Change of provenance

The repository that created this release differs from a previous release.

While this could reflect a routine change by the project maintainers, it may also indicate that the release files have been compromised.

Account

  • Added 0.1.42 gdplabs-registry@gdp-labs.iam.gserviceaccount.com
Select from 9 files

Attestation for gllm_evals_binary-0.1.42-cp313-cp313-win_amd64.whl

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page