View Filter API Reference¶
Filtering network context to extract specific context levels for LLM queries.
Overview¶
The ViewFilter class extracts variable information according to view
definitions (minimal, standard, rich) from a network context. This
allows controlling how much context is provided to LLMs.
PromptDetail¶
Enumeration of context levels for filtering.
class PromptDetail(str, Enum):
MINIMAL = "minimal" # Variable names only
STANDARD = "standard" # Names with basic descriptions
RICH = "rich" # Full metadata and context
Example:
from causaliq_knowledge.graph import PromptDetail
level = PromptDetail.STANDARD
print(level.value) # "standard"
ViewFilter¶
Filter network context to extract specific view levels.
Constructor¶
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
context |
NetworkContext |
- | The network context to filter |
use_llm_names |
bool |
True |
Output llm_name as 'name' field |
Example:
from causaliq_knowledge.graph import NetworkContext, ViewFilter
context = NetworkContext.load("model.json")
view_filter = ViewFilter(context)
# Use benchmark names instead of LLM names
view_filter = ViewFilter(context, use_llm_names=False)
Properties¶
context -> NetworkContext¶
Return the network context.
Methods¶
get_include_fields(level: PromptDetail) -> list[str]¶
Get the fields to include for a given view level.
Parameters:
| Parameter | Type | Description |
|---|---|---|
level |
PromptDetail |
The prompt detail level |
Returns: list[str] - Field names to include.
Example:
from causaliq_knowledge.graph import ViewFilter, PromptDetail
filter = ViewFilter(context)
# Get fields for minimal view
fields = filter.get_include_fields(PromptDetail.MINIMAL)
# ["name"]
# Get fields for standard view
fields = filter.get_include_fields(PromptDetail.STANDARD)
# ["name", "type", "short_description", "states"]
filter_variable(variable: VariableSpec, level: PromptDetail) -> dict¶
Filter a single variable to include only specified fields.
Parameters:
| Parameter | Type | Description |
|---|---|---|
variable |
VariableSpec |
The variable to filter |
level |
PromptDetail |
The prompt detail level |
Returns: dict - Dictionary with only the included fields.
Example:
filter = ViewFilter(context)
var = context.variables[0]
minimal = filter.filter_variable(var, PromptDetail.MINIMAL)
# {"name": "smoking"}
standard = filter.filter_variable(var, PromptDetail.STANDARD)
# {"name": "smoking", "type": "binary", "short_description": "..."}
filter_variables(level: PromptDetail) -> list[dict]¶
Filter all variables to the specified view level.
Parameters:
| Parameter | Type | Description |
|---|---|---|
level |
PromptDetail |
The prompt detail level |
Returns: list[dict] - List of filtered variable dictionaries.
Example:
filter = ViewFilter(context)
# Get minimal view of all variables
minimal_vars = filter.filter_variables(PromptDetail.MINIMAL)
# [{"name": "smoking"}, {"name": "cancer"}, ...]
# Get rich view with full context
rich_vars = filter.filter_variables(PromptDetail.RICH)
get_variable_names() -> list[str]¶
Get all variable names from the context.
Returns: list[str] - List of variable names.
get_domain() -> str¶
Get the domain from the context.
Returns: str - The domain string.
get_context_summary(level: PromptDetail) -> dict¶
Get a complete context summary for LLM prompts.
Parameters:
| Parameter | Type | Description |
|---|---|---|
level |
PromptDetail |
The prompt detail level for variable filtering |
Returns: dict - Dictionary with domain, network, and filtered variables.
Example:
filter = ViewFilter(context)
summary = filter.get_context_summary(PromptDetail.STANDARD)
# {
# "domain": "epidemiology",
# "network": "cancer",
# "variables": [
# {"name": "smoking", "type": "binary", ...},
# {"name": "cancer", "type": "binary", ...},
# ]
# }
Usage Patterns¶
Generating LLM Context¶
from causaliq_knowledge.graph import NetworkContext, ViewFilter, PromptDetail
import json
# Load network context and create filter
context = NetworkContext.load("model.json")
filter = ViewFilter(context)
# Get context for LLM prompt
summary = filter.get_context_summary(PromptDetail.STANDARD)
# Format for prompt
prompt = f"""
Domain: {summary['domain']}
Variables:
{json.dumps(summary['variables'], indent=2)}
Please generate a causal graph for these variables.
"""
Comparing Prompt Detail Levels¶
from causaliq_knowledge.graph import ViewFilter, PromptDetail
filter = ViewFilter(context)
# Compare information at different levels
for level in PromptDetail:
vars = filter.filter_variables(level)
fields = set()
for v in vars:
fields.update(v.keys())
print(f"{level.value}: {sorted(fields)}")
# minimal: ['name']
# standard: ['name', 'short_description', 'states', 'type']
# rich: ['extended_description', 'name', 'role', 'short_description', ...]
Custom Prompt Details¶
Network context can define custom prompt detail configurations: