Skip to main content

A project combining VTK visualization with LLM APIs (Anthropic, OpenAI, NVIDIA NIM)

Project description

VTK Prompt

CI Build and Publish PyPI version Python 3.10+

A command-line interface and web-based UI for generating VTK visualization code using Large Language Models (Anthropic Claude, OpenAI GPT, NVIDIA NIM, and local models).

Screenshot from 2025-06-11 19-02-00

Features

  • Multiple LLM providers: Anthropic Claude, OpenAI GPT, NVIDIA NIM, and local models
  • Interactive web UI with live VTK rendering
  • Retrieval-Augmented Generation (RAG) with VTK examples database
  • Real-time visualization of generated code
  • Token usage tracking and cost monitoring
  • CLI and Python API for integration

Installation

From PyPI (Stable)

pip install vtk-prompt

From TestPyPI (Latest Development)

pip install -i https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ vtk-prompt

From Source

git clone https://github.com/vicentebolea/vtk-prompt.git
cd vtk-prompt
pip install -e .

Quick Start

1. Set up API keys

export ANTHROPIC_API_KEY="your-anthropic-key"
export OPENAI_API_KEY="your-openai-key"  # Optional

2. Launch Web UI (Recommended)

vtk-prompt-ui

Access the UI at http://localhost:8080

3. Or use CLI

# Generate VTK code
vtk-prompt "Create a red sphere"

# With RAG enhancement
vtk-prompt "Create a sphere with custom resolution" --rag

# Different providers
vtk-prompt "Create a blue cube" --provider openai
vtk-prompt "Create a cone" --provider nim --token YOUR_NIM_TOKEN

Usage

Web UI Features

The web interface provides:

  • Model selection: Choose between Claude models (Haiku, Sonnet 4) and other providers
  • Token control: Adjust maximum tokens for responses
  • Usage tracking: Real-time display of input/output tokens and costs
  • RAG integration: Toggle retrieval-augmented generation for better results
  • Live preview: See VTK visualizations rendered in real-time
  • Code export: View, edit, and copy generated VTK code
  • Local & cloud support: Both cloud APIs and local model endpoints

Command Line Interface

# Basic usage
vtk-prompt "Create a red sphere"

# Advanced options
vtk-prompt "Create a textured cone with 32 resolution" \
  --provider anthropic \
  --model claude-3-5-sonnet-20241022 \
  --max-tokens 4000 \
  --rag \
  --verbose

# Using different providers
vtk-prompt "Create a blue cube" --provider openai --model gpt-4o
vtk-prompt "Create a cylinder" --provider nim --model meta/llama3-70b-instruct

RAG (Retrieval Augmented Generation)

Enhance code generation with relevant VTK examples:

  1. Build RAG database (one-time setup):
vtk-build-rag
  1. Test RAG system (optional):
vtk-test-rag "How to create a cube in VTK"
  1. Use RAG in queries:
vtk-prompt "Create a vtkSphereSource with texture mapping" --rag

Python API

from vtk_prompt import VTKPromptClient

client = VTKPromptClient()
code = client.generate_code("Create a red sphere")
print(code)

Configuration

Environment Variables

  • ANTHROPIC_API_KEY - Anthropic Claude API key
  • OPENAI_API_KEY - OpenAI API key (also used for NVIDIA NIM)

Supported Providers & Models

Provider Default Model Base URL
anthropic claude-3-5-haiku-20241022 https://api.anthropic.com/v1
openai gpt-4o https://api.openai.com/v1
nim meta/llama3-70b-instruct https://integrate.api.nvidia.com/v1
custom User-defined User-defined (for local models)

Custom/Local Models

You can use local models via OpenAI-compatible APIs:

# Using Ollama
vtk-prompt "Create a sphere" \
  --provider custom \
  --base-url http://localhost:11434/v1 \
  --model llama2

# Using LM Studio  
vtk-prompt "Create a cube" \
  --provider custom \
  --base-url http://localhost:1234/v1 \
  --model local-model

Development

Setting up development environment

git clone https://github.com/vicentebolea/vtk-prompt.git
cd vtk-prompt
pip install -e ".[all]"

Running tests

# Lint and format
black src/
flake8 src/

# Test installation
vtk-prompt --help
vtk-prompt-ui --help

Building package

python -m build

CLI Reference

usage: vtk-prompt [-h] [--provider {anthropic,openai,nim,custom}] 
                  [-m MODEL] [-k MAX_TOKENS] [-t TOKEN] [--base-url BASE_URL] 
                  [-r] [-v] [--collection COLLECTION] [--database DATABASE] 
                  [--top-k TOP_K] input_string

Generate VTK visualization code using Large Language Models

positional arguments:
  input_string          Description of the VTK visualization to generate

options:
  -h, --help            Show this help message and exit
  -m MODEL, --model MODEL
                        Model name to use
  -k MAX_TOKENS, --max-tokens MAX_TOKENS
                        Maximum number of tokens to generate
  -t TOKEN, --token TOKEN
                        API token (defaults to environment variable)
  --base-url BASE_URL   Base URL for API (for custom/local models)
  -r, --rag             Use Retrieval Augmented Generation
  -v, --verbose         Show generated source code
  --provider {anthropic,openai,nim,custom}
                        LLM provider to use

RAG Options:
  --collection COLLECTION
                        Collection name for RAG (default: vtk-examples)
  --database DATABASE   Database path for RAG (default: ./db/codesage-codesage-large-v2)
  --top-k TOP_K         Number of examples to retrieve (default: 5)

Available Commands

  • vtk-prompt - Main CLI for code generation
  • vtk-prompt-ui - Launch web interface
  • vtk-build-rag - Build RAG database from VTK examples
  • vtk-test-rag - Test RAG functionality
  • gen-vtk-file - Generate VTK XML files
  • rag-chat - Interactive RAG chat interface

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Architecture

  • Core: Python package with CLI and API
  • UI: Trame-based web interface with VTK rendering
  • RAG: ChromaDB + Llama Index for code example retrieval
  • Providers: Unified interface for multiple LLM APIs

Links


Made with care for the VTK and scientific visualization community.

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

vtk_prompt-0.0.3.tar.gz (780.0 kB view details)

Uploaded Source

Built Distribution

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

vtk_prompt-0.0.3-py3-none-any.whl (27.8 kB view details)

Uploaded Python 3

File details

Details for the file vtk_prompt-0.0.3.tar.gz.

File metadata

  • Download URL: vtk_prompt-0.0.3.tar.gz
  • Upload date:
  • Size: 780.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for vtk_prompt-0.0.3.tar.gz
Algorithm Hash digest
SHA256 ae550a3feefc8939942160c65f73c058a5f7f647ecd11c25ad84a7750e224f0e
MD5 a68d8c3192bbc5e33942f4d22e0d4f90
BLAKE2b-256 2db9f4ad54cb4afda357b39aae78d26d2e007fbc30fb64e1c4014579c9dce5e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for vtk_prompt-0.0.3.tar.gz:

Publisher: publish.yml on vicentebolea/vtk-prompt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vtk_prompt-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: vtk_prompt-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 27.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for vtk_prompt-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 1f22250c230b428cdc240ca6349cf48a0572493113bc43ed7a61c2decea00486
MD5 cf5a187ce6836cd0a635c9334d5a9e04
BLAKE2b-256 2b6f4dfedb0c5df527d559013cd1034fbd3f936105ccd74c0647633e3e97f42c

See more details on using hashes here.

Provenance

The following attestation bundles were made for vtk_prompt-0.0.3-py3-none-any.whl:

Publisher: publish.yml on vicentebolea/vtk-prompt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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