responses.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. from datetime import datetime
  2. from typing import Any, Optional
  3. from uuid import UUID
  4. from pydantic import BaseModel
  5. from shared.abstractions.document import DocumentResponse
  6. from shared.abstractions.llm import Message
  7. from shared.abstractions.user import Token, User
  8. from shared.api.models.base import PaginatedR2RResult, R2RResults
  9. class PromptResponse(BaseModel):
  10. id: UUID
  11. name: str
  12. template: str
  13. created_at: datetime
  14. updated_at: datetime
  15. input_types: dict[str, str]
  16. class ServerStats(BaseModel):
  17. start_time: datetime
  18. uptime_seconds: float
  19. cpu_usage: float
  20. memory_usage: float
  21. class SettingsResponse(BaseModel):
  22. config: dict[str, Any]
  23. prompts: dict[str, Any]
  24. r2r_project_name: str
  25. # r2r_version: str
  26. class ChunkResponse(BaseModel):
  27. id: UUID
  28. document_id: UUID
  29. owner_id: UUID
  30. collection_ids: list[UUID]
  31. text: str
  32. metadata: dict[str, Any]
  33. vector: Optional[list[float]] = None
  34. class CollectionResponse(BaseModel):
  35. id: UUID
  36. owner_id: Optional[UUID]
  37. name: str
  38. description: Optional[str]
  39. graph_cluster_status: str
  40. graph_sync_status: str
  41. created_at: datetime
  42. updated_at: datetime
  43. user_count: int
  44. document_count: int
  45. class ConversationResponse(BaseModel):
  46. id: UUID
  47. created_at: datetime
  48. user_id: Optional[UUID] = None
  49. name: Optional[str] = None
  50. class MessageResponse(BaseModel):
  51. id: UUID
  52. message: Message
  53. metadata: dict[str, Any] = {}
  54. class ApiKey(BaseModel):
  55. public_key: str
  56. api_key: str
  57. key_id: str
  58. name: Optional[str] = None
  59. class ApiKeyNoPriv(BaseModel):
  60. public_key: str
  61. key_id: str
  62. name: Optional[str] = None
  63. updated_at: datetime
  64. description: Optional[str] = None
  65. class LoginResponse(BaseModel):
  66. access_token: Token
  67. refresh_token: Token
  68. class UsageLimit(BaseModel):
  69. used: int
  70. limit: int
  71. remaining: int
  72. class StorageTypeLimit(BaseModel):
  73. limit: int
  74. used: int
  75. remaining: int
  76. class StorageLimits(BaseModel):
  77. chunks: StorageTypeLimit
  78. documents: StorageTypeLimit
  79. collections: StorageTypeLimit
  80. class RouteUsage(BaseModel):
  81. route_per_min: UsageLimit
  82. monthly_limit: UsageLimit
  83. class Usage(BaseModel):
  84. global_per_min: UsageLimit
  85. monthly_limit: UsageLimit
  86. routes: dict[str, RouteUsage]
  87. class SystemDefaults(BaseModel):
  88. global_per_min: int
  89. route_per_min: Optional[int]
  90. monthly_limit: int
  91. class LimitsResponse(BaseModel):
  92. storage_limits: StorageLimits
  93. system_defaults: SystemDefaults
  94. user_overrides: dict
  95. effective_limits: SystemDefaults
  96. usage: Usage
  97. # Chunk Responses
  98. WrappedChunkResponse = R2RResults[ChunkResponse]
  99. WrappedChunksResponse = PaginatedR2RResult[list[ChunkResponse]]
  100. # Collection Responses
  101. WrappedCollectionResponse = R2RResults[CollectionResponse]
  102. WrappedCollectionsResponse = PaginatedR2RResult[list[CollectionResponse]]
  103. # Conversation Responses
  104. WrappedConversationMessagesResponse = R2RResults[list[MessageResponse]]
  105. WrappedConversationResponse = R2RResults[ConversationResponse]
  106. WrappedConversationsResponse = PaginatedR2RResult[list[ConversationResponse]]
  107. WrappedMessageResponse = R2RResults[MessageResponse]
  108. WrappedMessagesResponse = PaginatedR2RResult[list[MessageResponse]]
  109. # Document Responses
  110. WrappedDocumentResponse = R2RResults[DocumentResponse]
  111. WrappedDocumentsResponse = PaginatedR2RResult[list[DocumentResponse]]
  112. # Prompt Responses
  113. WrappedPromptResponse = R2RResults[PromptResponse]
  114. WrappedPromptsResponse = PaginatedR2RResult[list[PromptResponse]]
  115. # System Responses
  116. WrappedSettingsResponse = R2RResults[SettingsResponse]
  117. WrappedServerStatsResponse = R2RResults[ServerStats]
  118. # User Responses
  119. WrappedUserResponse = R2RResults[User]
  120. WrappedUsersResponse = PaginatedR2RResult[list[User]]
  121. WrappedAPIKeyResponse = R2RResults[ApiKey]
  122. WrappedAPIKeysResponse = PaginatedR2RResult[list[ApiKeyNoPriv]]
  123. WrappedLoginResponse = R2RResults[LoginResponse]
  124. WrappedLimitsResponse = R2RResults[LimitsResponse]