Phase 4.4: Context-aware entity filtering in Step 1

- OntologyGenerator.generate() now accepts template_filter_rules parameter
- When template_id is provided, API loads filter rules from templates.json
- Filter rules injected into ontology system prompt:
  - exclude_self: don't create entity for the business/brand that uploaded data
  - exclude_types: don't create specific entity types
  - focus: guide LLM to focus on specific entity categories
- API endpoint accepts template_id in form data
This commit is contained in:
Kunthawat Greethong
2026-06-26 11:46:37 +07:00
parent 166ef73ad2
commit c9f76babeb
2 changed files with 53 additions and 8 deletions

View File

@@ -154,9 +154,27 @@ def generate_ontology():
simulation_requirement = request.form.get('simulation_requirement', '')
project_name = request.form.get('project_name', 'Unnamed Project')
additional_context = request.form.get('additional_context', '')
template_id = request.form.get('template_id', '')
logger.debug(f"项目名称: {project_name}")
logger.debug(f"模拟需求: {simulation_requirement[:100]}...")
if template_id:
logger.debug(f"Template: {template_id}")
# Load template filter rules if template_id provided
template_filter_rules = None
if template_id:
import json as _json
_templates_path = os.path.join(os.path.dirname(__file__), '..', 'templates.json')
try:
with open(_templates_path, 'r', encoding='utf-8') as _f:
_templates = _json.load(_f)['templates']
for _tmpl in _templates:
if _tmpl['id'] == template_id:
template_filter_rules = _tmpl.get('entity_filter', {})
break
except Exception:
pass
if not simulation_requirement:
return jsonify({
@@ -218,7 +236,8 @@ def generate_ontology():
ontology = generator.generate(
document_texts=document_texts,
simulation_requirement=simulation_requirement,
additional_context=additional_context if additional_context else None
additional_context=additional_context if additional_context else None,
template_filter_rules=template_filter_rules
)
# 保存本体到项目