🚀 CostEstimator for OpenAI with tqdm integration 💸
The CostEstimator class offers a convenient way to estimate the cost of using OpenAI's gpt-3.5 and gpt-4 models. It is intended to be used in a loop with tqdm to track and display the cost estimation in real-time.
🌟 Features:
- tqdm Integration: Seamlessly integrates into
tqdmpowered loops and displays the cost of each API call and the accumulated total cost. - Model Synonyms: Easily switch between model versions or names. 🔄
- Mock Responses: Generate fake 🤖 API responses to estimate costs without making actual API requests.
- Cost Breakdown: Display the estimated 💰 cost per request and the accumulated cost.
🛠 Usage:
The CostEstimator class was designed to be used in Jupyter Notebooks, see the example notebook for a demonstration.
-
Decorate your API call function:
import openai from gpt_cost_estimator import CostEstimator @CostEstimator() def query_openai(model, messages, **kwargs): args_to_remove = ['mock', 'completion_tokens'] for arg in args_to_remove: if arg in kwargs: del kwargs[arg] return openai.ChatCompletion.create( model = model, messages = messages, **kwargs)
-
Call the API from within a loop:
for message in tqdm(messages): response = query_openai(model="gpt-3.5-turbo-0613", messages=[message], mock=False) # Or if you're mocking the API call: response = query_openai(model="gpt-3.5-turbo-0613", messages=[message], mock=True) print() # We need to print a newline to show the total cost
-
Reset Total Cost:
CostEstimator.reset()
-
Read Total Cost:
CostEstimator.get_total_cost()
-
** NEW Price Override**
from cost_estimator import CostEstimator # Define custom prices for models custom_prices = { "gpt-4o-mini": {"input": 0.0002, "output": 0.0007}, } # Instantiate the CostEstimator with custom prices estimator = CostEstimator(price_overrides=custom_prices) # Use the estimator as usual @estimator def query_openai(model, messages, **kwargs): args_to_remove = ['mock', 'completion_tokens'] for arg in args_to_remove: if arg in kwargs: del kwargs[arg] return openai.ChatCompletion.create( model = model, messages = messages, **kwargs)
📌 Dependencies:
tiktoken: Used to determine the number of tokens in a string without making an API call.openai: Official OpenAI Python client.tqdm: Provides the real-time progress bar that displays the cost details. Essential for user-friendly cost tracking.lorem_text: Generates mock API responses.
🔧 Installation:
Install via pip
pip install gpt-cost-estimator
Manual Installation
pip install tiktoken openai tqdm lorem_text
Clone this repository and import the CostEstimator in your script.
How tqdm is Integrated:
The progress bar powered by tqdm provides instant feedback for every API call. Whether you're mocking the call or connecting to the real API, you'll see the cost of the current request and the total expenditure so far. It offers a visual and user-friendly way to monitor costs.
📝 Notes:
- Ensure the pricing details in the estimator match OpenAI's official pricing.
- Always test the estimator with your specific use cases to ensure accuracy.
- The progress bar will appear in your Jupyter notebook or console where the script runs.
Change Log:
- 2024-01-26 Updated prices and added additional models.
- 2024-11-25 Updated prices, added new models. Added price override.
📜 License:
The MIT License is a permissive open-source license. It allows for reuse of code with minimal restrictions, while requiring only attribution and inclusion of the original license. 🔄🔓💼
Release files for gpt-cost-estimator 0.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| gpt_cost_estimator-0.7.tar.gz | 5.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gpt_cost_estimator-0.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.2 kB
Release files / gpt_cost_estimator-0.7.tar.gz
| Download URL | gpt_cost_estimator-0.7.tar.gz |
|---|---|
| Size | 5.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ca51e4bec42fbf190bf34fa0662c5d1047776156797f26fcd3bd8901b1e4c148
|
|
BLAKE2b-256 checksum How to use checksums |
4c8c9cc7c57cceee42f4bdad66382458b51ad4af2899308ed6a10a9c9d0d056c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/5.1.1 CPython/3.12.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 25, 2024.
Transparency logRelease files / gpt_cost_estimator-0.7-py3-none-any.whl
| Download URL | gpt_cost_estimator-0.7-py3-none-any.whl |
|---|---|
| Size | 6.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
692544be4ab44ec177497ced19fb29dc8baaba6ba9e3ec91cfc85b0b3c344394
|
|
BLAKE2b-256 checksum How to use checksums |
7cae875531d47f7fce1108257a6b82025f7a293e74ca6b098a545946c993890a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/5.1.1 CPython/3.12.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 25, 2024.
Transparency log