This page provides practical code examples for implementing smart rules with the knowledge base. For broader documentation and concepts, see the Smart Rules Documentation.
You can nest these statements to create even more complex logic, such as:
- (folder_A OR folder_B) AND mime_type = PDF
- (title CONTAINS "report") AND (year = 2024 OR year = 2025)
# Update metadata for all files matching the filterupdated_contents=kb_service.update_contents_metadata(additional_metadata={"department":"legal","classification":"confidential","last_reviewed":"2025-01-01"},metadata_filter=metadata_filter)print(f"Updated metadata for {len(updated_contents)} files")
# Remove specific metadata keys from all matching filesupdated_contents=kb_service.remove_contents_metadata(keys_to_remove=["temp_status","processing_id","draft_version"],metadata_filter=metadata_filter)print(f"Removed metadata from {len(updated_contents)} files")
Best practice: Test your filter with get_paginated_content_infos() first to see which files will be affected and what metadata they currently have.
# %%frompathlibimportPathfromdotenvimportdotenv_valuesfromunique_toolkitimport(KnowledgeBaseService,)fromunique_toolkit.smart_rules.compileimport(Operator,Statement,)kb_service=KnowledgeBaseService.from_settings()demo_env_vars=dotenv_values(Path(__file__).parent/"demo.env")scope_id=demo_env_vars.get("UNIQUE_SCOPE_ID")or"unknown"smart_rule_folder_content=Statement(operator=Operator.EQUALS,value=f"{scope_id}",path=["folderId"])metadata_filter=smart_rule_folder_content.model_dump(mode="json")# Update metadata for all files matching the filterupdated_contents=kb_service.update_contents_metadata(additional_metadata={"department":"legal","classification":"confidential","last_reviewed":"2025-01-01",},metadata_filter=metadata_filter,)print(f"Updated metadata for {len(updated_contents)} files")
# %%frompathlibimportPathfromdotenvimportdotenv_valuesfromunique_toolkitimport(KnowledgeBaseService,)fromunique_toolkit.smart_rules.compileimport(Operator,Statement,)kb_service=KnowledgeBaseService.from_settings()demo_env_vars=dotenv_values(Path(__file__).parent/"demo.env")scope_id=demo_env_vars.get("UNIQUE_SCOPE_ID")or"unknown"smart_rule_folder_content=Statement(operator=Operator.EQUALS,value=f"{scope_id}",path=["folderId"])metadata_filter=smart_rule_folder_content.model_dump(mode="json")# Remove specific metadata keys from all matching filesupdated_contents=kb_service.remove_contents_metadata(keys_to_remove=["temp_status","processing_id","draft_version"],metadata_filter=metadata_filter,)print(f"Removed metadata from {len(updated_contents)} files")