Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
6 changes: 4 additions & 2 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
OPENAI_API_KEY=ADD_YOUR_KEY_HERE

# API INFO TO RUN /notebooks/tutorials/intro_for_model_developers_EXECUTED.ipynb
PLATFORM_API_KEY=ADD_YOUR_API_KEY_HERE
PLATFORM_API_SECRET=ADD_YOUR_API_SECRET_HERE
VM_API_HOST=<api_host>
VM_API_KEY=<api_key>
VM_API_SECRET=<api_secret>
VM_API_MODEL=<model>
16 changes: 15 additions & 1 deletion .github/actions/demo-notebook/action.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
name: Execute demo notebook
description: Installs python3, validmind, checks dependencies then executes ONLY the Intro for Model Developers notebook with development heap tracking

inputs: {}
inputs:
env_file:
description: "Load the created .env file"
required: true

runs:
using: "composite"
Expand All @@ -26,10 +29,21 @@ runs:
pip install pycairo
pip check

- name: Ensure .env file is available
shell: bash
id: find_env
run: |
if [ ! -f "${{ inputs.env_file }}" ]; then
echo "Error: .env file not found at ${{ inputs.env_file }}"
exit 1
fi

- name: Execute ONLY the Intro for Model Developers notebook with heap development
shell: bash
if: ${{ steps.find_env.outcome == 'success' }}
run: |
cd site
source ../${{ inputs.env_file }}
quarto render --profile exe-demo notebooks/tutorials/intro_for_model_developers_EXECUTED.ipynb &> render_errors.log || {
echo "Execute for intro_for_model_developers_EXECUTED.ipynb failed";
cat render_errors.log;
Expand Down
16 changes: 15 additions & 1 deletion .github/actions/prod-notebook/action.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
name: Execute prod notebook
description: Installs python3, validmind, checks dependencies then executes ONLY the Intro for Model Developers notebook with production heap tracking

inputs: {}
inputs:
env_file:
description: "Load the created .env file"
required: true

runs:
using: "composite"
Expand All @@ -26,10 +29,21 @@ runs:
pip install pycairo
pip check

- name: Ensure .env file is available
shell: bash
id: find_env
run: |
if [ ! -f "${{ inputs.env_file }}" ]; then
echo "Error: .env file not found at ${{ inputs.env_file }}"
exit 1
fi

- name: Execute ONLY the Intro for Model Developers notebook with heap production
shell: bash
if: ${{ steps.find_env.outcome == 'success' }}
run: |
cd site
source ../${{ inputs.env_file }}
quarto render --profile exe-prod notebooks/tutorials/intro_for_model_developers_EXECUTED.ipynb &> render_errors.log || {
echo "Execute for intro_for_model_developers_EXECUTED.ipynb failed";
cat render_errors.log;
Expand Down
16 changes: 15 additions & 1 deletion .github/actions/staging-notebook/action.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
name: Execute staging notebook
description: Installs python3, validmind, checks dependencies then executes ONLY the Intro for Model Developers notebook with staging heap tracking

inputs: {}
inputs:
env_file:
description: "Load the created .env file"
required: true

runs:
using: "composite"
Expand All @@ -26,10 +29,21 @@ runs:
pip install pycairo
pip check

- name: Ensure .env file is available
shell: bash
id: find_env
run: |
if [ ! -f "${{ inputs.env_file }}" ]; then
echo "Error: .env file not found at ${{ inputs.env_file }}"
exit 1
fi

- name: Execute ONLY the Intro for Model Developers notebook with heap staging
shell: bash
if: ${{ steps.find_env.outcome == 'success' }}
run: |
cd site
source ../${{ inputs.env_file }}
quarto render --profile exe-staging notebooks/tutorials/intro_for_model_developers_EXECUTED.ipynb &> render_errors.log || {
echo "Execute for intro_for_model_developers_EXECUTED.ipynb failed";
cat render_errors.log;
Expand Down
26 changes: 13 additions & 13 deletions .github/workflows/deploy-docs-prod.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,23 +30,23 @@ jobs:
exit 1;
}

# See if site/notebooks/ has updates
- name: Filter changed files
uses: dorny/paths-filter@v2
id: filter
with:
filters: |
notebooks:
- 'site/notebooks/**'
- name: Create .env file
id: create_env
run: |
touch .env
echo VM_API_HOST=${{ secrets.PLATFORM_API_HOST }} >> .env
echo VM_API_KEY=${{ secrets.PLATFORM_API_KEY }} >> .env
echo VM_API_SECRET=${{ secrets.PLATFORM_API_SECRET }} >> .env
echo VM_API_MODEL=${{ secrets.PLATFORM_DEV_MODEL }} >> .env
cat .env

# If yes then execute the prod notebook
# Only execute the prod notebook if .env file is created
- name: Execute prod Intro for Model Developers notebook
if: steps.filter.outputs.notebooks == 'true'
if: ${{ steps.create_env.outcome == 'success' }}
uses: ./.github/actions/prod-notebook
id: execute-prod-notebook
env:
PLATFORM_API_KEY: ${{ secrets.PLATFORM_API_KEY }}
PLATFORM_API_SECRET: ${{ secrets.PLATFORM_API_SECRET }}
with:
env_file: .env

# Prod bucket is in us-east-1
- name: Configure AWS credentials
Expand Down
26 changes: 13 additions & 13 deletions .github/workflows/deploy-docs-staging.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,23 +30,23 @@ jobs:
exit 1;
}

# See if site/notebooks/ has updates
- name: Filter changed files
uses: dorny/paths-filter@v2
id: filter
with:
filters: |
notebooks:
- 'site/notebooks/**'
- name: Create .env file
id: create_env
run: |
touch .env
echo VM_API_HOST=${{ secrets.PLATFORM_API_HOST }} >> .env
echo VM_API_KEY=${{ secrets.PLATFORM_API_KEY }} >> .env
echo VM_API_SECRET=${{ secrets.PLATFORM_API_SECRET }} >> .env
echo VM_API_MODEL=${{ secrets.PLATFORM_DEV_MODEL }} >> .env
cat .env

# If yes then execute the staging notebook
# Only execute the staging notebook if .env file is created
- name: Execute staging Intro for Model Developers notebook
if: steps.filter.outputs.notebooks == 'true'
if: ${{ steps.create_env.outcome == 'success' }}
uses: ./.github/actions/staging-notebook
id: execute-staging-notebook
env:
PLATFORM_API_KEY: ${{ secrets.PLATFORM_API_KEY }}
PLATFORM_API_SECRET: ${{ secrets.PLATFORM_API_SECRET }}
with:
env_file: .env

# Staging bucket is in us-west-2
- name: Configure AWS credentials
Expand Down
24 changes: 19 additions & 5 deletions .github/workflows/validate-docs-site.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,22 +30,36 @@ jobs:
}

# See if site/notebooks/ has updates
# Checks the current PR branch against the target branch
- name: Filter changed files
uses: dorny/paths-filter@v2
id: filter
with:
base: ${{ github.event.pull_request.base_ref }}
ref: ${{ github.head_ref }}
filters: |
notebooks:
- 'site/notebooks/**'

# If yes then execute the demo notebook
- name: Execute demo Intro for Model Developers notebook
# If yes then create the .env file for use in execution step
- name: Create .env file
if: steps.filter.outputs.notebooks == 'true'
id: create_env
run: |
touch .env
echo VM_API_HOST=${{ secrets.PLATFORM_API_HOST }} >> .env
echo VM_API_KEY=${{ secrets.PLATFORM_API_KEY }} >> .env
echo VM_API_SECRET=${{ secrets.PLATFORM_API_SECRET }} >> .env
echo VM_API_MODEL=${{ secrets.PLATFORM_DEV_MODEL }} >> .env
cat .env

# Only execute the demo notebook if .env file is created
- name: Execute demo Intro for Model Developers notebook
if: ${{ steps.create_env.outcome == 'success' }}
uses: ./.github/actions/demo-notebook
id: execute-demo-notebook
env:
PLATFORM_API_KEY: ${{ secrets.PLATFORM_API_KEY }}
PLATFORM_API_SECRET: ${{ secrets.PLATFORM_API_SECRET }}
with:
env_file: .env

- name: Test for warnings or errors
run: |
Expand Down
6 changes: 4 additions & 2 deletions internal/templates/videos/index.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,13 @@ filters:

# Intros for training modules

# Documenting Models 101 {background-color="#083E44" background-image="home-hero.svg"}
# Developer Fundamentals {background-color="#083E44" background-image="home-hero.svg"}

_docs.validmind.ai/training_

# Validating Models 101 {background-color="#083E44" background-image="home-hero.svg"}
# Train a model {background-color="#083E44" background-image="home-hero.svg"}

# Validating Models 101 {backgrouqnd-color="#083E44" background-image="home-hero.svg"}

_docs.validmind.ai/training_

Expand Down
17 changes: 12 additions & 5 deletions site/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@ DEST_DIR_NB := notebooks
DEST_DIR_PYTHON := _site/validmind
DEST_DIR_TESTS := tests
GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD)
PROFILE := exe-demo
FILE_PATH := notebooks/tutorials/intro_for_model_developers_EXECUTED.ipynb

# Define .PHONY target for help section
.PHONY: help clean clone notebooks python-docs docs-site deploy-demo deploy-demo-branch delete-demo-branch deploy-prod deploy-staging release-notes
.PHONY: help clean clone notebooks python-docs docs-site deploy-demo deploy-demo-branch delete-demo-branch deploy-prod deploy-staging release-notes execute

# Help section
help:
Expand All @@ -24,6 +26,7 @@ help:
@echo " deploy-staging Deploy docs staging site to s3://docs-ci-cd-staging/site/"
@echo " help Display this help message (default target)"
@echo " release-notes Generate release notes from pull requests since latest tag and update _quarto.yml"
@echo " execute Execute a Jupyter Notebook (must have valid .env credentials set up in root)"

# Clean up source directory
clean:
Expand All @@ -41,8 +44,8 @@ notebooks:
@rm -f notebooks.zip
@rm -rf $(DEST_DIR_NB)/ && mkdir -p $(DEST_DIR_NB)
@cp -r $(SRC_DIR)/notebooks/. $(DEST_DIR_NB)/
@echo "Checking out intro_for_model_developers_EXECUTED.ipynb from main ..."
@git checkout main -- notebooks/tutorials/intro_for_model_developers_EXECUTED.ipynb
@echo "Duplicating notebooks/tutorials/intro_for_model_developers.ipynb for execution"
@cp notebooks/tutorials/intro_for_model_developers.ipynb notebooks/tutorials/intro_for_model_developers_EXECUTED.ipynb
@echo "Copying LICENSE into notebooks ..."
@cp -r $(SRC_DIR)/LICENSE $(DEST_DIR_NB)/
@rm -rf $(DEST_DIR_NB)/code_sharing
Expand Down Expand Up @@ -77,8 +80,6 @@ get-source: clean clone notebooks python-docs test-descriptions
# Get all source files
docs-site: clean clone notebooks python-docs test-descriptions
quarto render --profile development
# quarto render notebooks/how_to/explore_tests.ipynb --execute
# quarto render notebooks/how_to/explore_test_suites.ipynb --execute

# Deployment to https://docs-demo.vm.validmind.ai/
deploy-demo:
Expand Down Expand Up @@ -120,3 +121,9 @@ deploy-staging:
# Generate release notes
release-notes:
@python ../release-scripts/generate_release_objects.py

# Execute a Jupyter Notebook
# Will default to `exe-demo` profile & the `notebooks/tutorials/intro_for_model_developers_EXECUTED.ipynb` if no input provided
# To override: make execute PROFILE=select-profile FILE_PATH=notebooks/notebook-path-here.ipynb
execute:
quarto render --profile $(PROFILE) $(FILE_PATH)
18 changes: 13 additions & 5 deletions site/_quarto.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ project:

website:
announcement:
content: "[**{{< fa book-open-reader >}} Validating Generative AI**](https://validmind.com/download-whitepaper-validating-generative-ai/) — Read our original technical brief created in collaboration with Parker & Lawrence Growth Advisory"
content: "[**{{< fa book-open-reader >}} EU AI Act Compliance**](https://validmind.com/download-whitepaper-the-eu-ai-act/) — Read our original regulation brief on how the EU AI Act aims to balance innovation with safety and accountability, setting standards for responsible AI use"
position: below-navbar
favicon: validmind.png
title: "ValidMind"
Expand Down Expand Up @@ -324,13 +324,21 @@ website:
contents:
- faq/faq.qmd
- text: "---"
- faq/faq-models.qmd
- faq/faq-inventory.qmd
- faq/faq-documentation.qmd
- text: "Access & permissions"
file: faq/faq-organizations.qmd
- faq/faq-workflows.qmd
- text: "Inventory & activity"
file: faq/faq-inventory.qmd
- text: "Documentation & templates"
file: faq/faq-documentation.qmd
- text: "Validation & findings"
file: faq/faq-validation.qmd
- faq/faq-collaboration.qmd
- text: "Monitoring & reporting"
file: faq/faq-reporting.qmd
- faq/faq-testing.qmd
- faq/faq-integrations.qmd
- text: "Data and privacy"
- text: "Data & privacy"
file: faq/faq-privacy.qmd

- title: "Support"
Expand Down
7 changes: 7 additions & 0 deletions site/about/deployment/_deployment-available-options.qmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Our deployment options provide a balance of control and cost-efficiency while integrating seamlessly with your infrastructure. For added flexibility, you can deploy on Amazon Web Services (AWS), Google Cloud Platform (GCP), or Microsoft Azure.

We offer two deployment models:

- **Multi-tenant cloud** — Multiple organizations (tenants) share infrastructure while keeping data isolated, providing cost-efficiency and scalability. For secure connectivity, a private link can be established to ensure traffic stays within your network, avoiding the public internet.

- **{{< var validmind.vpv >}} (VPV)** — A single-tenant architecture where one organization uses dedicated infrastructure, offering greater control, customization, and enhanced security. This option is ideal for high-compliance needs, and secure connectivity can also be established via a private link.
8 changes: 1 addition & 7 deletions site/about/deployment/deployment-options.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,7 @@ Choose the {{< var vm.product >}} deployment option that best suits your organiz

## Available options

Our deployment options provide a balance of control and cost-efficiency while integrating seamlessly with your infrastructure. For added flexibility, you can deploy on Amazon Web Services (AWS), Google Cloud Platform (GCP), or Microsoft Azure.

We offer two deployment models:

- **Multi-tenant cloud** — Multiple organizations (tenants) share infrastructure while keeping data isolated, providing cost-efficiency and scalability. For secure connectivity, a private link can be established to ensure traffic stays within your network, avoiding the public internet.

- **{{< var validmind.vpv >}} (VPV)** — A single-tenant architecture where one organization uses dedicated infrastructure, offering greater control, customization, and enhanced security. This option is ideal for high-compliance needs, and secure connectivity can also be established via a private link.
{{< include _deployment-available-options.qmd >}}

## Architecture overview

Expand Down
4 changes: 3 additions & 1 deletion site/about/fine-print/data-privacy-policy.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ aliases:
- ../guide/data-privacy-policy.html
---

This page outlines {{< var vm.product >}}'s data privacy policy, explaining how we protect your personal information. Our goal is to provide transparency about our data handling practices and to demonstrate our commitment to protecting your privacy and data security.
This page outlines {{< var vm.product >}}'s data privacy policy, explaining how we protect your personal information.

Our goal is to provide transparency about our data handling practices and to demonstrate our commitment to protecting your privacy and data security.

## What is {{< var vm.product >}}'s data privacy policy?

Expand Down
Loading