abstractions.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. from dataclasses import dataclass
  2. from typing import TYPE_CHECKING
  3. from pydantic import BaseModel
  4. from core.providers import (
  5. AnthropicCompletionProvider,
  6. APSchedulerProvider,
  7. AsyncSMTPEmailProvider,
  8. ClerkAuthProvider,
  9. ConsoleMockEmailProvider,
  10. HatchetOrchestrationProvider,
  11. JwtAuthProvider,
  12. LiteLLMCompletionProvider,
  13. LiteLLMEmbeddingProvider,
  14. MailerSendEmailProvider,
  15. MistralOCRProvider,
  16. OllamaEmbeddingProvider,
  17. OpenAICompletionProvider,
  18. OpenAIEmbeddingProvider,
  19. PostgresDatabaseProvider,
  20. PostgresFileProvider,
  21. R2RAuthProvider,
  22. R2RCompletionProvider,
  23. R2RIngestionProvider,
  24. S3FileProvider,
  25. SendGridEmailProvider,
  26. SimpleOrchestrationProvider,
  27. SupabaseAuthProvider,
  28. UnstructuredIngestionProvider,
  29. )
  30. if TYPE_CHECKING:
  31. from core.main.services.auth_service import AuthService
  32. from core.main.services.graph_service import GraphService
  33. from core.main.services.ingestion_service import IngestionService
  34. from core.main.services.maintenance_service import MaintenanceService
  35. from core.main.services.management_service import ManagementService
  36. from core.main.services.retrieval_service import ( # type: ignore
  37. RetrievalService, # type: ignore
  38. )
  39. class R2RProviders(BaseModel):
  40. auth: (
  41. R2RAuthProvider
  42. | SupabaseAuthProvider
  43. | JwtAuthProvider
  44. | ClerkAuthProvider
  45. )
  46. database: PostgresDatabaseProvider
  47. ingestion: R2RIngestionProvider | UnstructuredIngestionProvider
  48. email: (
  49. AsyncSMTPEmailProvider
  50. | ConsoleMockEmailProvider
  51. | SendGridEmailProvider
  52. | MailerSendEmailProvider
  53. )
  54. embedding: (
  55. LiteLLMEmbeddingProvider
  56. | OpenAIEmbeddingProvider
  57. | OllamaEmbeddingProvider
  58. )
  59. file: PostgresFileProvider | S3FileProvider
  60. completion_embedding: (
  61. LiteLLMEmbeddingProvider
  62. | OpenAIEmbeddingProvider
  63. | OllamaEmbeddingProvider
  64. )
  65. llm: (
  66. AnthropicCompletionProvider
  67. | LiteLLMCompletionProvider
  68. | OpenAICompletionProvider
  69. | R2RCompletionProvider
  70. )
  71. ocr: MistralOCRProvider
  72. orchestration: HatchetOrchestrationProvider | SimpleOrchestrationProvider
  73. scheduler: APSchedulerProvider
  74. class Config:
  75. arbitrary_types_allowed = True
  76. @dataclass
  77. class R2RServices:
  78. auth: "AuthService"
  79. ingestion: "IngestionService"
  80. maintenance: "MaintenanceService"
  81. management: "ManagementService"
  82. retrieval: "RetrievalService"
  83. graph: "GraphService"