Skip to main content

Vadalog API

The Vadalog API provides direct access to the Vadalog reasoning engine for evaluating logic programs and managing execution.


Evaluate Program

Execute a Vadalog program with specified parameters.

import prometheux_chain as px

program = """
@input("products").
@output("expensive_products").
expensive_products(Product, Price) :- products(Product, Price), Price > ?threshold.
"""

parameters = {"threshold": 100}
execution_options = {
"step_by_step": False,
"materialize_intermediate": True,
"debug_mode": False,
"max_iterations": 1000
}

result = px.evaluate_vadalog(
program=program,
parameters=parameters,
execution_options=execution_options
)
print(f"Execution completed in {result['execution_time']}s")
print(f"Results: {result['results']}")

Function Signature

def evaluate_vadalog(
program,
parameters=None,
execution_options=None,
timeout=300
)

Parameters

ParameterTypeRequiredDescription
programstrYesVadalog program code
parametersdictNoProgram parameters
execution_optionsdictNoExecution configuration
timeoutintNoExecution timeout in seconds. Defaults to 300

Execution Options

OptionTypeDescription
step_by_stepboolEnable step-by-step execution
materialize_intermediateboolMaterialize intermediate results
debug_modeboolEnable debug output
max_iterationsintMaximum number of iterations

Returns

The evaluation results data.

Response

{
"data": {
"execution_id": "exec_12345",
"results": {
"expensive_products": [
["Laptop", 1200],
["Smartphone", 800],
["Tablet", 600]
]
},
"execution_time": 0.45,
"iterations": 3,
"memory_usage": "12MB",
"statistics": {
"facts_derived": 150,
"rules_fired": 25
}
},
"message": "Program evaluated successfully",
"status": "success"
}

Stop Evaluation

Force stop a running Vadalog evaluation.

import prometheux_chain as px

# Stop a running Vadalog evaluation
result = px.stop_vadalog_evaluation()
print(result['message'])

Validate Program

Validate a Vadalog program syntax without executing it.

import prometheux_chain as px

program = """
@input("products").
@output("expensive_products").
expensive_products(Product, Price) :- products(Product, Price), Price > 100.
"""

result = px.validate_vadalog(program=program, strict_mode=True)
if result['status'] == 'success':
print("Program is valid!")
print(f"Analysis: {result['analysis']}")
else:
print(f"Validation errors: {result['errors']}")

Function Signature

def validate_vadalog(program, strict_mode=False)

Parameters

ParameterTypeRequiredDescription
programstrYesVadalog program code to validate
strict_modeboolNoEnable strict validation. Defaults to False

Get Execution Status

Check the status of a running or completed evaluation.

import prometheux_chain as px

status = px.get_vadalog_status(execution_id="exec_12345")
print(f"Execution status: {status['status']}")
print(f"Progress: {status['progress']}%")
if status['status'] == 'completed':
print(f"Results available: {len(status['results'])} facts")

Function Signature

def get_vadalog_status(execution_id)

Parameters

ParameterTypeRequiredDescription
execution_idstrYesThe execution ID to check

List Built-in Functions

Get a list of available built-in functions for Vadalog programs.

import prometheux_chain as px

functions = px.list_vadalog_functions(category="math")
print("Available math functions:")
for func in functions['functions']:
print(f" - {func['name']}: {func['description']}")
print(f" Syntax: {func['syntax']}")
print(f" Example: {func['example']}")

Function Signature

def list_vadalog_functions(category="all")

Parameters

ParameterTypeRequiredDescription
categorystrNoFunction category: "all", "math", "string", "date", "aggregation". Defaults to "all"

Explain Program

Get an explanation of how a Vadalog program works.

import prometheux_chain as px

program = """
@input("products").
@output("expensive_products").
expensive_products(Product, Price) :- products(Product, Price), Price > 100.
"""

explanation = px.explain_vadalog(
program=program,
explanation_type="detailed"
)
print("Program Explanation:")
print(explanation['explanation'])
if explanation.get('examples'):
print("\nExamples:")
for example in explanation['examples']:
print(f" - {example}")

Function Signature

def explain_vadalog(
program,
explanation_type="overview",
include_examples=True
)

Parameters

ParameterTypeRequiredDescription
programstrYesVadalog program to explain
explanation_typestrNoType: "overview", "detailed", "step_by_step". Defaults to "overview"
include_examplesboolNoInclude usage examples. Defaults to True

Complete Workflow Example

import prometheux_chain as px
import os

# Set up authentication and configuration
os.environ['PMTX_TOKEN'] = 'my_pmtx_token'
px.config.set('JARVISPY_URL', "https://api.prometheux.ai/jarvispy/my-org/my-user")

# Define a Vadalog program
program = """
@input("products").
@output("expensive_products").
expensive_products(Product, Price) :- products(Product, Price), Price > ?threshold.
"""

# Validate the program first
validation = px.validate_vadalog(program=program, strict_mode=True)
if validation['status'] != 'success':
print(f"Validation failed: {validation['errors']}")
exit(1)

# Get an explanation of the program
explanation = px.explain_vadalog(program=program, explanation_type="overview")
print(f"Program explanation: {explanation['explanation']}")

# Execute the program
result = px.evaluate_vadalog(
program=program,
parameters={"threshold": 100},
execution_options={
"materialize_intermediate": True
}
)

print(f"Execution completed in {result['execution_time']}s")
print(f"Results: {result['results']}")