Skip to main content

Plomp Python Module

Project description

Plomp

A small python module for managing and debugging agent contexts.

Just plomp it in and prompt away and get progress tracking and visibility into what your agents.

Overview

Plomp is a tiny library designed to easily integrate into python programs which invoke an LLM over multiple steps and provide some useful benefits such as visualizing progress and making context retrival easier.

Plomp has three main goals:

  1. Provide simple observability into execution multistep LLM prompts ("agents" if you must)
  2. Track and manage context retrieval
  3. Integrate easily into existing code in an unopinionated way

Example Usage

For a detailed example look I have a sample project which simulates the game survivor which uses plomp, the rendered progress can be seen here https://michaelgiba.github.io/survivor/static/plomp.html with the repo here https://github.com/michaelgiba/survivor

A simpler example below:

import plomp

@plomp.wrap_prompt_fn()
def prompt_llm(prompt: str) -> str:
    return "<EXAMPLE LLM RESPONSE>"

llm_response = prompt_llm("What's the weather today?")

for i in range(4):
    plomp.record_event(
        {
            "plomp_display_event_type": "weather_data_accessed",
            "plomp_display_text": f"accessed weather data from API: {i + 1}/10",
            "value": random.random(),
        },
        tags={"tool": "weather_api"},
    )

past_weather_events = plomp.buffer().filter(tags_filter={"tool": ["weather_api"]}).last(3)
past_weather_events.record(tags={"type": "recent_weather_queries"})

llm_response = prompt_llm(
    f"How has the temperature changed over the last three samples?: "
    + str(past_weather_events.to_dict())
)

plomp.write_html(plomp.buffer(), "progress.html")

Plomp UI Example

This would produce a self-contained HTML page which looks like

Structure

Plomp revolves around a centralized buffer which stores three different types of sequential records:

  1. "Events": Discrete events which happened that could useful future context for decision making
  2. "Queries": An expression which matches previous events based on user provided logic
  3. "Prompts": A record of a prompt to an LLM and the response recieved

Installation

Plomp only requires Python3.10+ and its only dependency is typeguard

pip install plomp

Developing

To experiment locally with the UI you can run cd frontend && npm run dev.

Note the project is pretty new so if you see a bug please feel free to file an issue or make a PR.

Contributions

All contributions are welcome. There are a number of things that need to be added:

  1. Concurrency support
  2. More frontend features
  3. Better API documentation
  4. Optional live progress reloading instead of only static HTML files for realtime playback
  5. Or anything else valuable

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

plomp-0.1.4.tar.gz (28.9 kB view details)

Uploaded Source

Built Distribution

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

plomp-0.1.4-py3-none-any.whl (25.0 kB view details)

Uploaded Python 3

File details

Details for the file plomp-0.1.4.tar.gz.

File metadata

  • Download URL: plomp-0.1.4.tar.gz
  • Upload date:
  • Size: 28.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.13

File hashes

Hashes for plomp-0.1.4.tar.gz
Algorithm Hash digest
SHA256 446c7a03f9c263457a303547fea39c11dd05d9f87aa9572976b83af0b05d6e8b
MD5 44e30a5bdb0824f0394d182968812415
BLAKE2b-256 8d6ff51add579940c399a2760d3a9e3332fdbf66e31242ecc815f0ca118287c7

See more details on using hashes here.

File details

Details for the file plomp-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: plomp-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 25.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.13

File hashes

Hashes for plomp-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 0baf0e43f6523191624078c9c0aa50f59796a36a1c07926367c74a3759ef43b0
MD5 f02ff6fc08d2acc2eb0cc8ca326633cd
BLAKE2b-256 e9ca5cd8cf4687a54274e134bcf416e2c4dcf8c0ec5dc4e49f4e4afc729e2c5b

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