abstractions.py 3.0 KB

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