Skip to main content

Cheapi (cheap API)

Lightweight wrapper to cache expensive function results in-memory or on disk.

Installation

pip install cheapi

Usage

from cheapi import CachingWrapper
import openai


def _ask_chatgpt(prompt):
    res = openai.ChatCompletion.create(
        model="gpt-4",
        messages=[
            {"role": "system", "content": "You are a helpful assistant for a software engineer."},
            {"role": "user", "content": prompt}
        ],
        temperature=0,
        timeout=10,
    )
    choice, *_ = res["choices"]
    usage = res["usage"]["total_tokens"]
    print(f"OpenAI usage: {usage}")

    result = choice["message"]["content"]
    return result


ash_chatgpt = CachingWrapper(_ask_chatgpt, cache_backend="memory")

for i in range(2):
    print(ash_chatgpt("Write a short joke about caching?") + "\n")

or even simpler:

from cheapi import cached

@cached(cache_backend="memory")
def ask_chatgpt(prompt):
    ...

for i in range(2):
    print(ask_chatgpt("Write a short joke about caching?") + "\n")

Caching backends

Using memory backend is mostly equivalent to using functools.lru_cache but with more configuration. SQLite backend is useful for persistent caching, and is similar to joblib.Memory. Cloud backend is being dreamed of, but not implemented yet.

Why?

NIH + so I could RIIR later.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cheapi-0.1.0.tar.gz (4.0 kB view details)

Uploaded Source

Built Distribution

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

cheapi-0.1.0-py3-none-any.whl (4.0 kB view details)

Uploaded Python 3

File details

Details for the file cheapi-0.1.0.tar.gz.

File metadata

  • Download URL: cheapi-0.1.0.tar.gz
  • Upload date:
  • Size: 4.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.9.11 Darwin/22.2.0

File hashes

Hashes for cheapi-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4168452a5211974c164e590b52bed04ab625592955a4798f85a5e79cf216b993
MD5 6889f4bc29557c412d0c0382f7d325fb
BLAKE2b-256 7c87ce7cb4190c4a2fea5159068b1fe0819d59d4fcad9ec27f7d1e449acd0ceb

See more details on using hashes here.

File details

Details for the file cheapi-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: cheapi-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 4.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.9.11 Darwin/22.2.0

File hashes

Hashes for cheapi-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d5e4a8687305d525c18f1369bc655df08db95f444ef767e0611561873b75fca5
MD5 673b718546a88459e710156c43f165df
BLAKE2b-256 27b2ebc34ce8436e5e5450888aee224beeb20986491f23e860b0ee475f72a7f9

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page