Skip to main content

A collection of LogitsProcessors to customize and enhance LLM behavior for specific tasks.

Project description

PyPI version License: MIT

logits-processor-zoo

Struggling to get LLMs to follow your instructions? LogitsProcessorZoo offers a zoo of tools to use LLMs for specific tasks, beyond just grammar enforcement!

Installation

pip install logits-processor-zoo

Supported Frameworks

  • transformers
  • vLLM
  • TensorRT-LLM (>=0.20.0)

Usage

import vllm
from logits_processor_zoo.vllm import GenLengthLogitsProcessor, CiteFromPromptLogitsProcessor, ForceLastPhraseLogitsProcessor

model = vllm.LLM(
            model_name,
            trust_remote_code=True,
            dtype="half",
            enforce_eager=True
        )
tokenizer = model.get_tokenizer()
        
logits_processors = [
    CiteFromPromptLogitsProcessor(tokenizer, boost_factor=2.0),
    GenLengthLogitsProcessor(tokenizer, boost_factor=-0.2, p=1),
    ForceLastPhraseLogitsProcessor("\n\nReferences:\n", tokenizer)
]


gen_output = model.generate(
            prompts,
            vllm.SamplingParams(
                n=1,
                temperature=0,
                seed=0,
                skip_special_tokens=True,
                max_tokens=64,
                logits_processors=logits_processors
            ),
            use_tqdm=False
        )

For the detailed examples in each framework, please have a look at lpz_examples directory.

Available Logits Processors

GenLengthLogitsProcessor

A logits processor that adjusts the likelihood of the end-of-sequence (EOS) token based on the length of the generated sequence, encouraging or discouraging shorter answers.

CiteFromPromptLogitsProcessor

A logits processor which boosts or diminishes the likelihood of tokens present in the prompt (and optionally EOS token) to encourage the model to generate tokens similar to those seen in the prompt or vice versa.

ForceLastPhraseLogitsProcessor

A logits processor which forces LLMs to use the given phrase before they finalize their answers. Most common use cases can be providing references, thanking user with context etc.

MultipleChoiceLogitsProcessor

A logits processor to answer multiple choice questions with one of the choices. A multiple choice question is like:

I am getting a lot of calls during the day. What is more important for me to consider when I buy a new phone?
0. Camera
1. Screen resolution
2. Operating System
3. Battery

The goal is to make LLM generate "3" as an answer.

TriggerPhraseLogitsProcessor

A logits processor which triggers phrases when it encounters a given token or after a specified time. One common use case is to force writing python code just after thinking:

trigger_python = TriggerPhraseLogitsProcessor(phrase="\n```python", trigger_token_phrase="</think>", 
                                              tokenizer=tokenizer, trigger_count=1, trigger_after=True)

PreventHallucinationLogitsProcessor

A logits processor that mitigates hallucinated model outputs by enforcing a predefined fallback phrase when token confidence falls below a specified threshold.

MaxTimeLogitsProcessor

A logits processor that enforces the end-of-sentence (EOS) token after a specified maximum time passes, optionally waiting for a new line or a full stop. Useful for controlling generation time and ensuring responses complete within time constraints.

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

logits_processor_zoo-0.2.1.tar.gz (19.8 kB view details)

Uploaded Source

Built Distribution

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

logits_processor_zoo-0.2.1-py3-none-any.whl (44.5 kB view details)

Uploaded Python 3

File details

Details for the file logits_processor_zoo-0.2.1.tar.gz.

File metadata

  • Download URL: logits_processor_zoo-0.2.1.tar.gz
  • Upload date:
  • Size: 19.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.10.17 Linux/5.4.95-050495-generic

File hashes

Hashes for logits_processor_zoo-0.2.1.tar.gz
Algorithm Hash digest
SHA256 f67c2641aa08dddb93b780633d0cd7b2804e4d3439d5dcc004fd0440b99deabb
MD5 f9b2e9f1c252cb139f9b608344cbc895
BLAKE2b-256 cc918035fec7a3d30d888b02fb15855912ef3eeff28610d24327ecf960e89ef1

See more details on using hashes here.

File details

Details for the file logits_processor_zoo-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: logits_processor_zoo-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 44.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.10.17 Linux/5.4.95-050495-generic

File hashes

Hashes for logits_processor_zoo-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 cfca87212cc5e1f5fc757938c9241a2f1e8c20a064efe8ac9f30a9ddd7e7205a
MD5 29ed1830472b7d97c84eb85d58652fb2
BLAKE2b-256 dd45c2d82e58f52261bd49e8038676096804848e7b5576e42985b459686b782e

See more details on using hashes here.

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