| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- from typing import Optional
-
- import yaml
- from flask_login import current_user
-
- from extensions.ext_database import db
- from models.dataset import PipelineCustomizedTemplate
- from services.rag_pipeline.pipeline_template.pipeline_template_base import PipelineTemplateRetrievalBase
- from services.rag_pipeline.pipeline_template.pipeline_template_type import PipelineTemplateType
-
-
- class CustomizedPipelineTemplateRetrieval(PipelineTemplateRetrievalBase):
- """
- Retrieval recommended app from database
- """
-
- def get_pipeline_templates(self, language: str) -> dict:
- result = self.fetch_pipeline_templates_from_customized(
- tenant_id=current_user.current_tenant_id, language=language
- )
- return result
-
- def get_pipeline_template_detail(self, template_id: str):
- result = self.fetch_pipeline_template_detail_from_db(template_id)
- return result
-
- def get_type(self) -> str:
- return PipelineTemplateType.CUSTOMIZED
-
- @classmethod
- def fetch_pipeline_templates_from_customized(cls, tenant_id: str, language: str) -> dict:
- """
- Fetch pipeline templates from db.
- :param tenant_id: tenant id
- :param language: language
- :return:
- """
- pipeline_customized_templates = (
- db.session.query(PipelineCustomizedTemplate)
- .filter(PipelineCustomizedTemplate.tenant_id == tenant_id, PipelineCustomizedTemplate.language == language)
- .all()
- )
- recommended_pipelines_results = []
- for pipeline_customized_template in pipeline_customized_templates:
- recommended_pipeline_result = {
- "id": pipeline_customized_template.id,
- "name": pipeline_customized_template.name,
- "description": pipeline_customized_template.description,
- "icon": pipeline_customized_template.icon,
- "position": pipeline_customized_template.position,
- "chunk_structure": pipeline_customized_template.chunk_structure,
- }
- recommended_pipelines_results.append(recommended_pipeline_result)
-
- return {"pipeline_templates": recommended_pipelines_results}
-
- @classmethod
- def fetch_pipeline_template_detail_from_db(cls, template_id: str) -> Optional[dict]:
- """
- Fetch pipeline template detail from db.
- :param template_id: Template ID
- :return:
- """
- pipeline_template = (
- db.session.query(PipelineCustomizedTemplate).filter(PipelineCustomizedTemplate.id == template_id).first()
- )
-
- if not pipeline_template:
- return None
-
- return {
- "id": pipeline_template.id,
- "name": pipeline_template.name,
- "icon": pipeline_template.icon,
- "export_data": yaml.safe_load(pipeline_template.yaml_content),
- }
|