responses.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  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 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 LogEntry(BaseModel):
  17. key: str
  18. value: Any
  19. timestamp: datetime
  20. class LogResponse(BaseModel):
  21. run_id: UUID
  22. entries: list[LogEntry]
  23. timestamp: Optional[datetime]
  24. user_id: Optional[UUID]
  25. class ServerStats(BaseModel):
  26. start_time: datetime
  27. uptime_seconds: float
  28. cpu_usage: float
  29. memory_usage: float
  30. class AnalyticsResponse(BaseModel):
  31. analytics_data: Optional[dict] = None
  32. filtered_logs: dict[str, Any]
  33. class SettingsResponse(BaseModel):
  34. config: dict[str, Any]
  35. prompts: dict[str, Any]
  36. r2r_project_name: str
  37. # r2r_version: str
  38. class ChunkResponse(BaseModel):
  39. id: UUID
  40. document_id: UUID
  41. owner_id: UUID
  42. collection_ids: list[UUID]
  43. text: str
  44. metadata: dict[str, Any]
  45. vector: Optional[list[float]] = None
  46. class CollectionResponse(BaseModel):
  47. id: UUID
  48. owner_id: Optional[UUID]
  49. name: str
  50. description: Optional[str]
  51. graph_cluster_status: str
  52. graph_sync_status: str
  53. created_at: datetime
  54. updated_at: datetime
  55. user_count: int
  56. document_count: int
  57. class ConversationResponse(BaseModel):
  58. id: UUID
  59. created_at: datetime
  60. user_id: Optional[UUID] = None
  61. name: Optional[str] = None
  62. class VerificationResult(BaseModel):
  63. verification_code: str
  64. expiry: datetime
  65. message: Optional[str] = None
  66. class ResetDataResult(BaseModel):
  67. reset_token: str
  68. expiry: datetime
  69. message: Optional[str] = None
  70. class MessageResponse(BaseModel):
  71. id: UUID
  72. message: Message
  73. metadata: dict[str, Any] = {}
  74. class ApiKey(BaseModel):
  75. public_key: str
  76. api_key: str
  77. key_id: str
  78. name: Optional[str] = None
  79. class ApiKeyNoPriv(BaseModel):
  80. public_key: str
  81. key_id: str
  82. name: Optional[str] = None
  83. updated_at: datetime
  84. # Chunk Responses
  85. WrappedChunkResponse = R2RResults[ChunkResponse]
  86. WrappedChunksResponse = PaginatedR2RResult[list[ChunkResponse]]
  87. # Collection Responses
  88. WrappedCollectionResponse = R2RResults[CollectionResponse]
  89. WrappedCollectionsResponse = PaginatedR2RResult[list[CollectionResponse]]
  90. # Conversation Responses
  91. WrappedConversationMessagesResponse = R2RResults[list[MessageResponse]]
  92. WrappedConversationResponse = R2RResults[ConversationResponse]
  93. WrappedConversationsResponse = PaginatedR2RResult[list[ConversationResponse]]
  94. WrappedMessageResponse = R2RResults[MessageResponse]
  95. WrappedMessagesResponse = PaginatedR2RResult[list[MessageResponse]]
  96. # Document Responses
  97. WrappedDocumentResponse = R2RResults[DocumentResponse]
  98. WrappedDocumentsResponse = PaginatedR2RResult[list[DocumentResponse]]
  99. # Prompt Responses
  100. WrappedPromptResponse = R2RResults[PromptResponse]
  101. WrappedPromptsResponse = PaginatedR2RResult[list[PromptResponse]]
  102. # System Responses
  103. WrappedSettingsResponse = R2RResults[SettingsResponse]
  104. WrappedServerStatsResponse = R2RResults[ServerStats]
  105. # User Responses
  106. WrappedUserResponse = R2RResults[User]
  107. WrappedUsersResponse = PaginatedR2RResult[list[User]]
  108. WrappedAPIKeyResponse = R2RResults[ApiKey]
  109. WrappedAPIKeysResponse = PaginatedR2RResult[list[ApiKeyNoPriv]]
  110. # TODO: anything below this hasn't been reviewed
  111. WrappedLogsResponse = R2RResults[list[LogResponse]]
  112. WrappedAnalyticsResponse = R2RResults[AnalyticsResponse]
  113. WrappedVerificationResult = R2RResults[VerificationResult]
  114. WrappedResetDataResult = R2RResults[ResetDataResult]