This LLM model is tailored for the real estate industry, focusing on home pricing inquiries and related data questions.
Defines subscription pricing tiers for the API.
- BASIC: Entry-level plan with minimal access.
- PROFESSIONAL: Mid-tier plan offering advanced features.
- ENTERPRISE: Premium plan with full access to all features.
class PricingPlan(Enum):
BASIC = 'basic'
PROFESSIONAL = 'professional'
ENTERPRISE = 'enterprise'
Describes the type of message in chat communication.
- USER: Messages from the user.
- BOT: Messages from the bot.
class MessageType(Enum):
USER = "user_message"
BOT = "bot_message"
Represents the basic structure of an HTTP response.
- status: Integer representing the HTTP status code (e.g., 200 for success, 404 for not found).
class HTTPResponse(BaseModel):
status: int
Defines user login credentials.
- email: User's email address.
- password: User's password.
class User(BaseModel):
email: str
password: str
Extends the User
model with additional fields for user registration.
- fname: User’s first name.
- sname: User’s surname.
class SignUpUser(User):
fname: str
sname: str
Generic form model including basic contact information.
- name: Name of the form submitter.
- email: Email of the form submitter.
class Form(BaseModel):
name: str
email: str
Extends Form
with fields for contacting the sales team.
- phone: Contact phone number.
- employees: Number of employees in the submitter's organization (minimum value: 1).
- message: Message to the sales team.
class ContactSalesForm(Form):
phone: str
employees: int = Field(ge=1)
message: str
Model for handling payment information during the checkout process.
- card_number: Credit card number (16 digits).
- expiry: Expiry date of the card (MM/YY).
- cvv: Card CVV number (3 digits).
- pricing_plan: Subscription plan selected by the user (Enum:
PricingPlan
).
class CheckoutForm(Form):
card_number: str = Field(min_length=16, max_length=16)
expiry: str
cvv: str = Field(min_length=3, max_length=3)
pricing_plan: PricingPlan
Parameters required to create a new chat room.
- admin_id: Unique ID of the room admin.
- room_name: Name of the room (maximum length: 20 characters).
class CreateRoomRequest(BaseModel):
admin_id: int
room_name: str = Field(max_length=20)
Base model for chat messages within rooms.
- message: Content of the message.
- room_id: ID of the room where the message is sent.
class Message(BaseModel):
message: str
room_id: int
Extends Message
to include the type of message (Enum: MessageType
).
- type: Specifies whether the message is from a user or bot.
class ChatMessage(Message):
type: str
Model for editing an existing chat message.
- message_id: Unique ID of the message to be edited.
class EditMessage(Message):
message_id: int
Basic model for requesting room information.
- room_name: Name of the room.
- admin_id: Admin's user ID.
class RoomRequest(BaseModel):
room_name: str
admin_id: int
Request model for loading chat history in a specific room.
- room_id: ID of the room whose chat history is to be loaded.
class LoadChatRequest(BaseModel):
room_id: int
Model used for submitting chat-based inquiries in a room.
- room_id: ID of the room where the question is being asked.
- question: User's inquiry or message.
- type: The type of message (Enum:
MessageType
).
class ChatRequest(BaseModel):
room_id: int
question: str
type: str
GET /
Returns a basic status check.
Response:
- 200 OK:
{"status_code": 200, "detail": "Success"}
POST /contact-sales
Submits a contact sales form.
Request Body:
{
"email": "string",
"name": "string",
"message": "string"
}
email
(string): User's email address.name
(string): User's name.message
(string): Message from the user.
Responses:
- 200 OK:
{"detail": "We'll Contact You Soon"}
- 409 Conflict:
{"detail": "User has already contacted sales"}
- 500 Internal Server Error:
{"detail": "Internal Server Error"}
Error Handling:
- 422 Unprocessable Entity: If form fields are not submitted correctly.
POST /checkout
Updates the pricing plan for the user.
Request Body:
{
"email": "string",
"pricing_plan": "string"
}
email
(string): User's email address.pricing_plan
(string): Selected pricing plan.
Responses:
- 200 OK:
{"detail": "Payment Successful"}
- 404 Not Found:
{"detail": "Please sign up"}
- 500 Internal Server Error:
{"detail": "Internal Server Error, please try again"}
POST /create-room
Creates a new room.
Request Body:
{
"admin_id": "integer",
"room_name": "string"
}
admin_id
(integer): ID of the user creating the room.room_name
(string): Name of the room.
Responses:
- 200 OK:
{"room_id": "integer"}
- 401 Unauthorized:
{"detail": "Must have a billing account"}
- 405 Method Not Allowed:
{"detail": "Room already exists"}
- 412 Precondition Failed:
{"detail": "You've reached your limit"}
- 500 Internal Server Error:
{"detail": "Internal Server Error. Please try again"}
POST /chat/get-response
Gets a response from the LLM (Language Model).
Request Body:
{
"room_id": "integer",
"message": "string"
}
room_id
(integer): ID of the chat room.message
(string): Message from the user.
Responses:
- 200 OK:
{"response": "string"}
- 500 Internal Server Error:
{"detail": "Something went wrong, please try again"}
POST /chat/add-chat
Adds a new chat message.
Request Body:
{
"room_id": "integer",
"message": "string",
"type": "string"
}
room_id
(integer): ID of the chat room.message
(string): The chat message.type
(string): Type of the message (e.g., 'user', 'bot').
Responses:
- 200 OK:
{"message_id": "integer"}
- 400 Bad Request:
{"detail": "Invalid message type"}
- 500 Internal Server Error:
{"detail": "Internal Server Error"}
PUT /chat/edit-chat
Edits an existing chat message.
Request Body:
{
"message_id": "integer",
"message": "string"
}
message_id
(integer): ID of the message to be edited.message
(string): New message content.
Responses:
- 200 OK:
{"detail": "Message Edited"}
- 403 Forbidden:
{"detail": "Message doesn't exist"}
- 500 Internal Server Error:
{"detail": "Something went wrong"}
POST /chat/load-chats
Loads chat messages for a room.
Request Body:
{
"room_id": "integer"
}
- `room_id
` (integer): ID of the chat room.
Responses:
- 200 OK:
{"chats": [{"type": "string", "message": "string"}]}
- 404 Not Found:
{"detail": "No messages exist for room"}
- 500 Internal Server Error:
{"detail": "Internal server error, please try again"}
POST /auth/signup
Registers a new user.
Request Body:
{
"email": "string",
"password": "string",
"name": "string"
}
email
(string): User's email address.password
(string): User's password.name
(string): User's name.
Responses:
- 200 OK:
{"user_id": "integer"}
- 409 Conflict:
{"detail": "User already exists"}
- 500 Internal Server Error:
{"detail": "Something went wrong"}
POST /auth/login
Logs in an existing user.
Request Body:
{
"email": "string",
"password": "string"
}
email
(string): User's email address.password
(string): User's password.
Responses:
- 200 OK:
{"user_id": "integer"}
- 401 Unauthorized:
{"detail": "Invalid credentials"}
- 409 Conflict:
{"detail": "User doesn't exist"}
- 410 Gone:
{"detail": "Invalid credentials"}
- Python 3.1
- LangChain Knowledge
To set up dependencies, run the following command after cloning the repository:
pip install -r requirements.txt
- Email: [email protected]
- Discord: zenzjt