Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
32f8d5a
updated readme
christianchimezie Jan 17, 2026
bd05a72
added markdown
christianchimezie Feb 3, 2026
7e0520b
Add Getting Started and FAQ documentation
ChidiebereNjoku Mar 13, 2026
b54b784
Update Frequently Asked Questions
ChidiebereNjoku Mar 18, 2026
ed49c15
feat(core): implement `AIModelInterface` for unified multi-provider `…
DYung26 Oct 30, 2025
f4fd3d0
feat(utils): add `API` key prompt handling, plot saving, and image en…
DYung26 Oct 30, 2025
93ce1a7
feat(enums): add `StrategyName` enum with round-robin, cost-optimized…
DYung26 Oct 30, 2025
bac3b90
feat(providers): add `AnthropicProvider` for `Claude` model integrati…
DYung26 Oct 30, 2025
56730b1
feat(providers): add `AzureOpenAIProvider` for `Azure`-hosted `OpenAI…
DYung26 Oct 30, 2025
f28b0c0
feat(providers): define abstract `LLMProvider` base class with query,…
DYung26 Oct 30, 2025
ca596f6
feat(providers): add `GeminiProvider` for `Google Gemini` models supp…
DYung26 Oct 30, 2025
dc38751
feat(providers): add `GroqProvider` for fast Groq API access with key…
DYung26 Oct 30, 2025
67f480b
feat(providers): add `GroqProvider` via `OpenAI`-compatible `SDK` end…
DYung26 Oct 30, 2025
f74922a
feat(providers): add `OllamaProvider` for local `OpenAI`-compatible `…
DYung26 Oct 30, 2025
a35793f
feat(providers): add `OpenAIChatProvider` for `OpenAI Chat` models wi…
DYung26 Oct 30, 2025
5c9e2a4
feat(providers): add `OpenAIResponseProvider` for `OpenAI Responses A…
DYung26 Oct 30, 2025
4340513
feat(providers): add `ProviderManager` to orchestrate multiple `LLM` …
DYung26 Oct 30, 2025
4413402
feat(strategies): add `CostOptimizedStrategy` to prioritize cheaper m…
DYung26 Oct 30, 2025
122c4d8
feat(strategies): add `FallbackChainStrategy` to try models in fixed …
DYung26 Oct 30, 2025
c903858
feat(strategies): add `PerformanceOptimizedStrategy` to prioritize hi…
DYung26 Oct 30, 2025
83b527a
feat(strategies): add `RoundRobinStrategy` to evenly cycle through al…
DYung26 Oct 30, 2025
94f4f5d
feat(strategies): define abstract `Strategy` base class for selecting…
DYung26 Oct 30, 2025
af68bec
refactor(explanations): rewrite `PlotExplainer` to use `AIModelInterf…
DYung26 Oct 30, 2025
e32ce09
build(deps): expand requirements with pinned dependency versions and …
DYung26 Oct 30, 2025
7f45902
chore(egg-info): update plotsense metadata, dependencies, authorship,…
DYung26 Oct 30, 2025
2d03b49
refactor(explanations): add default values for `PlotExplainer` init p…
DYung26 Oct 31, 2025
f7eab70
test: add visualization recommender unit tests with mocked APIs
DYung26 Mar 30, 2026
83fd475
test: initialize tests package
DYung26 Mar 30, 2026
99bdb44
test: add shared pytest fixtures and test configuration
DYung26 Mar 30, 2026
0a0869b
test: initialize unit tests package
DYung26 Mar 30, 2026
f9e858e
test: add unit test fixtures
DYung26 Mar 30, 2026
bdd254b
test: add exception inheritance and behavior tests
DYung26 Mar 30, 2026
5928149
test: add PlotExplainer import and creation tests
DYung26 Mar 30, 2026
0da53a7
test: add comprehensive plot generator unit and integration tests
DYung26 Mar 30, 2026
43336e5
test: initialize integration tests package
DYung26 Mar 30, 2026
6ba4a9b
test: add integration test configuration
DYung26 Mar 30, 2026
67079e6
test: add live test scripts for plot explanation
DYung26 Mar 30, 2026
df9d5a2
test: add live test scripts for visualization recommendations
DYung26 Mar 30, 2026
87f5f84
test: add live tests for plot explanation with real APIs
DYung26 Mar 30, 2026
b4169df
test: add live tests for visualization recommendations with real APIs
DYung26 Mar 30, 2026
2d30e3f
refactor(tests): migrate test suite to modular architecture with unit…
DYung26 Mar 30, 2026
bd92233
test: add provider selection unit tests for api_keys source of truth
DYung26 Mar 30, 2026
545e5a1
test: add provider architecture and routing unit tests
DYung26 Mar 30, 2026
2381f2d
refactor(providers,core): restructure provider architecture and updat…
DYung26 Mar 30, 2026
bf6ea6d
chore: add jupyter checkpoint backup of test notebook
DYung26 Apr 4, 2026
abc5ec8
data: add bundled provider registry with models, costs, and performan…
DYung26 Apr 4, 2026
ae7dd5c
docs: add notebook for testing plotkit explanations api with multi-pr…
DYung26 Apr 4, 2026
eb102cb
docs: add notebook for testing plotkit suggestion API with multi-prov…
DYung26 Apr 4, 2026
18f1cac
docs: add notebook for testing multi-provider architecture with diffe…
DYung26 Apr 4, 2026
9b2e2c7
docs: add comprehensive notebook guide for testing explanations, sugg…
DYung26 Apr 4, 2026
5363a93
feat: add registry loader for dynamic provider and model metadata man…
DYung26 Apr 4, 2026
ff1e97c
test: add tests for hidden API key input using getpass module
DYung26 Apr 4, 2026
162bef5
test: add comprehensive tests for dynamic registry metadata loading s…
DYung26 Apr 4, 2026
1eea988
feat(core): refactor provider selection, add registry loader, and imp…
DYung26 Apr 4, 2026
da9df85
fix: remove deprecated mixtral-8x7b-32768 model from groq registry an…
DYung26 Apr 4, 2026
73c2abf
chore: add jupyter notebook checkpoint files for explanation and mult…
DYung26 Apr 4, 2026
d175ec0
fix(registry,notebooks): remove deprecated mixtral model from provide…
DYung26 Apr 4, 2026
c15e322
chore(deps): upgrade google-genai to 1.70.0
DYung26 Apr 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified .coverage
Binary file not shown.
13 changes: 10 additions & 3 deletions test.ipynb → .ipynb_checkpoints/test-checkpoint.ipynb
Original file line number Diff line number Diff line change
@@ -1,15 +1,22 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Test Jupyter Notebook"
]
},
{
"cell_type": "code",
"execution_count": 1,
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# import sys\n",
"# from pathlib import Path\n",
"# root_dir = Path().resolve().parent # goes one level up from `test/`\n",
"# sys.path.insert(0, str(root_dir))"
"# sys.path.insert(0, str(root_dir))\n"
]
},
{
Expand Down Expand Up @@ -303,7 +310,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.13.7"
"version": "3.13.1"
}
},
"nbformat": 4,
Expand Down
123 changes: 123 additions & 0 deletions Frequently Asked Questions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
## Frequently Asked Questions
1. Why is my API key not working?

Ensure your API key is correctly set in your environment variables.

Example:

export GROQ_API_KEY="your_api_key_here"

You can also pass it directly in the code using the api_keys parameter.

2. Can I use my own dataset?

Yes. PlotSense works with any pandas DataFrame.

Example:

import pandas as pd
df = pd.read_csv("your_dataset.csv")
recommendation = recommender(df)


3. Which plots are recommended for categorical variables?

Common plots include:

Bar charts

Boxplots (categorical vs numerical)

PlotSense automatically suggests appropriate plots based on the dataset structure.

4. Do I need a Groq API key to use PlotSense?

Yes. PlotSense uses Groq-hosted LLMs to generate visualization recommendations and explanations.

You can get a free API key at:
https://console.groq.com/keys


5. Can I control which plot gets generated?

Yes. Each recommendation has an index. You can generate a specific plot using that index.

Example:

fig = plotgen(df, 0, recommendation)

6. How do I contribute to PlotSense?

You can contribute by:

Fixing bugs

Adding new plot types

Improving documentation

Suggesting new features

Feel free to open a pull request or issue on GitHub.

7. Why does the plot type sometimes slightly differ from my expectation?

PlotSense uses LLM-based recommendations, which analyze the dataset and propose plots based on statistical relationships and patterns. Results may vary slightly between runs.

8. Can I add my own LLM model?

Currently PlotSense is configured for Groq-hosted models, but the architecture allows adding additional providers by extending the model handlers.

9. What Python version is supported?

PlotSense works best with Python 3.9 or later. Earlier versions may cause dependency issues.

10. What does “ensemble score” mean in the results?

The ensemble score reflects how strongly the models agree on a visualization suggestion.
Higher scores indicate stronger agreement between models.

11. Can PlotSense generate plots without recommendations?

No. PlotSense requires recommendations first.

12. What happens if the API request fails?

If the API request fails, PlotSense will raise an error such as:

PlotSenseAPIError

PlotSenseDataError

PlotSenseConfigError

Ensure your API key and internet connection are working

13. Does PlotSense modify my original dataset?

No. PlotSense works on a copy of the DataFrame, so the original dataset remains unchanged.

14. Can PlotSense work with time-series data?

Yes. If the dataset contains datetime columns, PlotSense may recommend visualizations such as:

Line plots

Scatter plots

Distribution plots over time.

15. Can I use PlotSense in Jupyter Notebook?

Yes. PlotSense works well inside Jupyter Notebook, Google Colab, and Python scripts.

Example:

recommendation = recommender(df)
fig = plotgen(df, 0, recommendation)

16. Can PlotSense work offline?

Currently no.

PlotSense requires internet access because it queries LLM models hosted on Groq.
10 changes: 10 additions & 0 deletions Getting Started.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
## Getting Started

1. Install PlotSense
pip install plotsense

2. Set your GROQ API key
export GROQ_API_KEY="your_key"

3. Run the example script
python examples/ test.ipynb
2 changes: 0 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -278,8 +278,6 @@ We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) f

### 📅 Roadmap

📖 **[View our detailed Technical Roadmap](https://plotsenseai.gitbook.io/plotsense-technical-roadmap/)**

Upcoming features:
- More model integrations
- Automated insight highlighting
Expand Down
Loading
Loading