abstractions.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. from dataclasses import dataclass
  2. from typing import TYPE_CHECKING, Any
  3. from pydantic import BaseModel
  4. from core.agent import R2RRAGAgent, R2RStreamingRAGAgent
  5. from core.database import PostgresDatabaseProvider
  6. from core.pipelines import RAGPipeline, SearchPipeline
  7. from core.pipes import (
  8. EmbeddingPipe,
  9. GraphClusteringPipe,
  10. GraphCommunitySummaryPipe,
  11. GraphDeduplicationPipe,
  12. GraphDeduplicationSummaryPipe,
  13. GraphDescriptionPipe,
  14. GraphExtractionPipe,
  15. GraphSearchSearchPipe,
  16. GraphStoragePipe,
  17. ParsingPipe,
  18. RAGPipe,
  19. SearchPipe,
  20. StreamingRAGPipe,
  21. VectorStoragePipe,
  22. )
  23. from core.providers import (
  24. AsyncSMTPEmailProvider,
  25. ConsoleMockEmailProvider,
  26. HatchetOrchestrationProvider,
  27. LiteLLMCompletionProvider,
  28. LiteLLMEmbeddingProvider,
  29. OllamaEmbeddingProvider,
  30. OpenAICompletionProvider,
  31. OpenAIEmbeddingProvider,
  32. R2RAuthProvider,
  33. R2RIngestionProvider,
  34. SendGridEmailProvider,
  35. SimpleOrchestrationProvider,
  36. SupabaseAuthProvider,
  37. UnstructuredIngestionProvider,
  38. )
  39. if TYPE_CHECKING:
  40. from core.main.services.auth_service import AuthService
  41. from core.main.services.graph_service import GraphService
  42. from core.main.services.ingestion_service import IngestionService
  43. from core.main.services.management_service import ManagementService
  44. from core.main.services.retrieval_service import RetrievalService
  45. class R2RProviders(BaseModel):
  46. auth: R2RAuthProvider | SupabaseAuthProvider
  47. database: PostgresDatabaseProvider
  48. ingestion: R2RIngestionProvider | UnstructuredIngestionProvider
  49. embedding: (
  50. LiteLLMEmbeddingProvider
  51. | OpenAIEmbeddingProvider
  52. | OllamaEmbeddingProvider
  53. )
  54. llm: LiteLLMCompletionProvider | OpenAICompletionProvider
  55. orchestration: HatchetOrchestrationProvider | SimpleOrchestrationProvider
  56. email: (
  57. AsyncSMTPEmailProvider
  58. | ConsoleMockEmailProvider
  59. | SendGridEmailProvider
  60. )
  61. class Config:
  62. arbitrary_types_allowed = True
  63. class R2RPipes(BaseModel):
  64. parsing_pipe: ParsingPipe
  65. embedding_pipe: EmbeddingPipe
  66. graph_search_pipe: GraphSearchSearchPipe
  67. graph_extraction_pipe: GraphExtractionPipe
  68. graph_storage_pipe: GraphStoragePipe
  69. graph_description_pipe: GraphDescriptionPipe
  70. graph_clustering_pipe: GraphClusteringPipe
  71. graph_deduplication_pipe: GraphDeduplicationPipe
  72. graph_deduplication_summary_pipe: GraphDeduplicationSummaryPipe
  73. graph_community_summary_pipe: GraphCommunitySummaryPipe
  74. rag_pipe: RAGPipe
  75. streaming_rag_pipe: StreamingRAGPipe
  76. vector_storage_pipe: VectorStoragePipe
  77. vector_search_pipe: Any # TODO - Fix
  78. class Config:
  79. arbitrary_types_allowed = True
  80. class R2RPipelines(BaseModel):
  81. search_pipeline: SearchPipeline
  82. rag_pipeline: RAGPipeline
  83. streaming_rag_pipeline: RAGPipeline
  84. class Config:
  85. arbitrary_types_allowed = True
  86. class R2RAgents(BaseModel):
  87. rag_agent: R2RRAGAgent
  88. streaming_rag_agent: R2RStreamingRAGAgent
  89. class Config:
  90. arbitrary_types_allowed = True
  91. @dataclass
  92. class R2RServices:
  93. auth: "AuthService"
  94. ingestion: "IngestionService"
  95. management: "ManagementService"
  96. retrieval: "RetrievalService"
  97. graph: "GraphService"