Skip to main content

LLM Summary

Use an LLM to summarize text.

The purpose of the library is to summarize large texts, where core information is captured in the summary

Input: Paragraphs of text

Output: Summary

Install and use library

pip install llm_summary
from llm_summary.inference_api.summary_inference 
import SummaryInferenceProvider

text = "us business leaders ...."

inference_provider = SummaryInferenceProvider(model="llama3.2") 
summary = inference_provider.summarize(text)

print (summary)

Output:

Summary inference completed in 13.31 seconds

summary="Business leaders are donating large sums to Donald Trump's second inaugural fund, with predicted total donations exceeding $107m"

Environment setup

Local LLM - Ollama

Run a local LLM using OLLAMA.

ollama run gemma3:12b

Example

Model: gemma3:27b

import logging
import os
from llm_summary.inference_api.summary_inference import SummaryInferenceProvider
from llm_summary.inference_api.mlflow_config import MlFlowConfig

summarizer = SummaryInferenceProvider(
            model="gemma3:27b",
            strategy="ollama"
            ollama_host="http://localhost:11434"
        )

summarizer.summarize(text=text)
                            summary_text = result.summary

Prompt management

Prompts can vary between models/providers. Version controlling the prompts and annotating the prompt helps with faster evaluation.

MlFlow provides a prompt repository and is used to get the user prompt and system prompt.

E.g. prompts for news article summaries

-e MLFLOW_SYSTEM_PROMPT_ID=SUMMARY_System/@article \
-e MLFLOW_USER_PROMPT_ID=SUMMARY_User/@article \

Data pipelines - Consumers

Two data pipeline examples show how existing mongodb documents can be decorated with a summary:

  • Decorate text with a summary

E.g.

Mongo DB Summary Decorator

In this example text is read from a MongoDb Collection and the a summary is generated. The entry in mongodb is updated with the summary.

The container would read a collection in batches and generates summaries.

docker run -e OLLAMA_MODEL=gemma3:12b \
           -e OLLAMA_HOST=http://ollama:11434 \
           -e MONGODB_CONNECTION_STRING=mongodb://mongodb:27017 \
           -e MLFLOW_SYSTEM_PROMPT_ID=SUMMARY_System/@article \
           -e MLFLOW_USER_PROMPT_ID=SUMMARY_User/@article \
           -e MLFLOW_TRACKING_HOST=http://mlflow:5000
           --network development_network \
           --rm \
           --name summarizer \
           --hostname summarizer \
           mongodb-summarizer

Dependencies

Ollama should be running in a docker container; or a network route should be available.

Run the following for a CPU-Only ollama instance:

docker run -d --rm 
    -v /usr/share/ollama/.ollama:/root/.ollama \
    -p 11434:11434 \
    --network development_network \
    --name ollama \
    --hostname ollama  \
    ollama/ollama

Note: replace the path /usr/share/ollama/.ollama to the host's ollama model path

Evaluation

Due to the sheer amount of model options and inference providers; it is necessary to evaluate.

Evaluation allows methodical selection of hyper parameters:

  • User Prompt (based on model, text source and model provider)
  • System Prompt (based on model, text source and model provider)
  • Model

Evaluation criteria

The summary should contain 'key information' extracted from the larger text; the information can be subjective due to the following:

  • The context (i.e. what is the subject matter, and how the summary is used)
  • Definition 'key information'
  • Writing style of the summary

LLM as a judge

Create an LLM Judge, the judge would judge summaries.

Evaluate the LLM as a judge

The LLM judge is key during evaluation of models/prompts.

Therefore the LLM judge should have a strong Score. The LLM judge will be evaluated using the following metrics:

LLM Judge F1-Score:

  • True positives (TP): the summary is "similar" to the original
  • False positives (FP): the summary contains additional irrelevant information
  • True negatives (TN): the summary does not include trivial information
  • False negatives (FN): the summary is missing significant information

Precision

Proportion of correctly summarized text (accuracy).

High precision means that when the model summarizes, it is likely to be correct.

$$ \begin{aligned} \text{Precision} &= \frac{TP}{TP + FP} \end{aligned} $$

Where:

  • ( TP ) = True Positives
  • ( FP ) = False Positives

Recall

Ability to summarize text.

High recall means the model has summarized significant information from the text.

$$ \begin{aligned} \text{Recall} &= \frac{TP}{TP + FN} \end{aligned} $$

Where:

  • ( TP ) = True Positives
  • ( FN ) = False Negatives

F1 Score

$$ \begin{aligned} F1 &= 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} \end{aligned} $$

Experiments

Publish the evaluation metrics for each "experiment".

ML-Flow is a good tool for analysis.

Metrics

Below are some evaluations, the evaluations are based on the following metrics:

  • LLM Model
  • Quality of summarization
  • Local vs. Cloud
  • Estimate costs

Conclude the evaluation

Pick the metric most significant, then short-list the models, and do a cost analysis.

To evaluate several weights can be given to each of the metric.

E.g. load your metrics and use a ranker to evaluate:

(e.g. Accuracy: 1, Percentage:2, Distance: 3 and Latency: 1)

License

Copyright (C) 2026 Paul Eger

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

Metadata

Release files for llm-summary 0.6.1

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

Source distribution (sdist)

Source distribution for llm-summary 0.6.1
File Size Uploaded
llm_summary-0.6.1.tar.gz 30.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for llm-summary 0.6.1
File Interpreter ABI Platform
llm_summary-0.6.1-py3-none-any.whl Python 3 none any Details

Total release size: 69.1 kB

Release files / llm_summary-0.6.1.tar.gz

Download URL llm_summary-0.6.1.tar.gz
Size 30.7 kB
Tags Source
SHA-256 checksum
How to use checksums
fbe7f049eab90bf3154edc5f8e80b225efaf03efcc6f9c57edd1075ce27226dc
BLAKE2b-256 checksum
How to use checksums
49590f69248c84dd453b72e602df9b47ae1a5f892d6de6542b746664153be98b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.16

Release files / llm_summary-0.6.1-py3-none-any.whl

Download URL llm_summary-0.6.1-py3-none-any.whl
Size 38.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e9d467d6aaad61dc778ad83e73227ee1ba59fa355822401beef30ff524afb263
BLAKE2b-256 checksum
How to use checksums
3813436fde2ecbd0d8252a3fab50c84c748c695c6e37621523e614c2cfbcbf8f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.16

Release history Release notifications | RSS feed

This release

0.6.1 This release

2 release files

0.6.0

2 release files

0.5.0

2 release files

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