Skip to main content

Record your llm calls and make your notebooks fast again.

Reason this release was yanked:

incorrect version

Project description

reclm

When building AI based tooling and packaging we often call LLMs while prototyping and testing our code. A single LLM call can take 100’s of ms to run and the output isn’t deterministic. This can really slow down development especially if our notebook contains many LLM calls 😞.

While LLMs are new, working with external APIs in our code isn’t. Plenty of tooling already exists that make working with APIs much easier. For example, Python’s unittest mock object is commonly used to simulate or mock an API call so that it returns a hardcoded response. This works really well in the traditional Python development workflow and can make our tests fast and predictable.

However, it doesn’t work well in the nbdev workflow where oftentimes we’ll want to quickly run all cells in our notebook while we’re developing our code. While we can use mocks in our test cells we don’t want our exported code cells to be mocked. This leaves us with two choices:

  • we temporarily mock our exported code cells but undo the mocking before we export these cells.
  • we do nothing and just live with notebooks that take a long time to run.

Both options are pretty terrible as they pull us out of our flow state and slow down development 😞.

reclm builds on the underlying idea of mocks but adapts them to the nbdev workflow.

Usage

To use reclm

  • install the package: pip install git+https://github.com/AnswerDotAI/reclm.git
  • import the package from reclm.core import enable_reclm in each notebook
  • add enable_reclm() to the top of each notebook

Note: enable_reclm should be added after you import the OpenAI and/or Anthropic SDK.

Every LLM call you make using OpenAI/Anthropic will now be cached in nbs/reclm.json.

Tests

nbdev_test will automatically read from the cache. However, if your notebooks contain LLM calls that haven’t been cached, nbdev_test will call the OpenAI/Anthropic APIs and then cache the responses.

Cleaning the cache

It is recommended that you clean the cache before committing it.

To clean the cache, run update_reclm_cache from your project’s root directory.

Note: Your LLM request/response data is stored in your current working directory in a file called reclm.json. All request headers are removed so it is safe to include this file in your version control system (e.g. git). In fact, it is expected that you’ll include this file in your vcs.

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

reclm-0.0.2.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

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

reclm-0.0.2-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

File details

Details for the file reclm-0.0.2.tar.gz.

File metadata

  • Download URL: reclm-0.0.2.tar.gz
  • Upload date:
  • Size: 10.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.8

File hashes

Hashes for reclm-0.0.2.tar.gz
Algorithm Hash digest
SHA256 cac338bd9871ab587715434e231a38a4ce1e19e7ab71d0ee60a655b4dddddd1a
MD5 87f1ba36f80af77e22bfe2b7e1fa5bc9
BLAKE2b-256 a5f5452f41314347951e4e440aafc052c8b44a999893b38961b157a600ee8304

See more details on using hashes here.

File details

Details for the file reclm-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: reclm-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 9.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.8

File hashes

Hashes for reclm-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a85a2d121655d65e78997052e4f24b882373d052b7fa90a7dc5511d46c655810
MD5 4743ea6bb613e1067ac9fe08e63adb69
BLAKE2b-256 8067bde6cddbf59af6c2b20e45ec07a1eef5b31e91306fe7bf373b137a0572fa

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