Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

datasource_content_preview.py 2.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. from flask_restx import ( # type: ignore
  2. Resource, # type: ignore
  3. reqparse,
  4. )
  5. from werkzeug.exceptions import Forbidden
  6. from controllers.console import api
  7. from controllers.console.datasets.wraps import get_rag_pipeline
  8. from controllers.console.wraps import account_initialization_required, setup_required
  9. from libs.login import current_user, login_required
  10. from models import Account
  11. from models.dataset import Pipeline
  12. from services.rag_pipeline.rag_pipeline import RagPipelineService
  13. class DataSourceContentPreviewApi(Resource):
  14. @setup_required
  15. @login_required
  16. @account_initialization_required
  17. @get_rag_pipeline
  18. def post(self, pipeline: Pipeline, node_id: str):
  19. """
  20. Run datasource content preview
  21. """
  22. if not isinstance(current_user, Account):
  23. raise Forbidden()
  24. parser = reqparse.RequestParser()
  25. parser.add_argument("inputs", type=dict, required=True, nullable=False, location="json")
  26. parser.add_argument("datasource_type", type=str, required=True, location="json")
  27. parser.add_argument("credential_id", type=str, required=False, location="json")
  28. args = parser.parse_args()
  29. inputs = args.get("inputs")
  30. if inputs is None:
  31. raise ValueError("missing inputs")
  32. datasource_type = args.get("datasource_type")
  33. if datasource_type is None:
  34. raise ValueError("missing datasource_type")
  35. rag_pipeline_service = RagPipelineService()
  36. preview_content = rag_pipeline_service.run_datasource_node_preview(
  37. pipeline=pipeline,
  38. node_id=node_id,
  39. user_inputs=inputs,
  40. account=current_user,
  41. datasource_type=datasource_type,
  42. is_published=True,
  43. credential_id=args.get("credential_id"),
  44. )
  45. return preview_content, 200
  46. api.add_resource(
  47. DataSourceContentPreviewApi,
  48. "/rag/pipelines/<uuid:pipeline_id>/workflows/published/datasource/nodes/<string:node_id>/preview",
  49. )