|
1 | 1 | import os
|
2 | 2 | import time
|
3 | 3 | from uuid import UUID
|
4 |
| -from models.chat import ChatHistory |
| 4 | + |
5 | 5 | from auth.auth_bearer import AuthBearer, get_current_user
|
6 |
| -from fastapi import APIRouter, Depends, Request |
| 6 | +from fastapi import APIRouter, Depends, HTTPException, Request |
7 | 7 | from llm.brainpicking import BrainPicking
|
8 |
| -from fastapi import HTTPException |
9 |
| -from models.chat import Chat |
| 8 | +from llm.OpenAiFunctionBasedAnswerGenerator.OpenAiFunctionBasedAnswerGenerator import ( |
| 9 | + OpenAiFunctionBasedAnswerGenerator, |
| 10 | +) |
| 11 | +from models.chat import Chat, ChatHistory |
10 | 12 | from models.chats import ChatQuestion
|
11 | 13 | from models.settings import common_dependencies
|
12 | 14 | from models.users import User
|
13 |
| -from repository.chat.get_chat_history import get_chat_history |
14 |
| -from repository.chat.update_chat import update_chat, ChatUpdatableProperties |
15 |
| -from repository.chat.create_chat import create_chat, CreateChatProperties |
16 |
| -from utils.users import ( |
17 |
| - fetch_user_id_from_credentials, |
18 |
| - update_user_request_count, |
19 |
| -) |
20 |
| - |
21 |
| - |
| 15 | +from repository.chat.create_chat import CreateChatProperties, create_chat |
22 | 16 | from repository.chat.get_chat_by_id import get_chat_by_id
|
23 |
| - |
| 17 | +from repository.chat.get_chat_history import get_chat_history |
24 | 18 | from repository.chat.get_user_chats import get_user_chats
|
| 19 | +from repository.chat.update_chat import ChatUpdatableProperties, update_chat |
25 | 20 | from repository.chat.update_chat_history import update_chat_history
|
26 |
| - |
27 |
| - |
28 |
| -from llm.OpenAiFunctionBasedAnswerGenerator.OpenAiFunctionBasedAnswerGenerator import ( |
29 |
| - OpenAiFunctionBasedAnswerGenerator, |
30 |
| -) |
| 21 | +from utils.users import fetch_user_id_from_credentials, update_user_request_count |
31 | 22 |
|
32 | 23 | chat_router = APIRouter()
|
33 | 24 |
|
@@ -117,21 +108,25 @@ async def update_chat_metadata_handler(
|
117 | 108 | # helper method for update and create chat
|
118 | 109 | def check_user_limit(
|
119 | 110 | email,
|
| 111 | + user_openai_api_key: str = None, |
120 | 112 | ):
|
121 |
| - date = time.strftime("%Y%m%d") |
122 |
| - max_requests_number = os.getenv("MAX_REQUESTS_NUMBER") |
123 |
| - commons = common_dependencies() |
124 |
| - userItem = fetch_user_stats(commons, User(email=email), date) |
125 |
| - old_request_count = userItem["requests_count"] |
126 |
| - |
127 |
| - update_user_request_count( |
128 |
| - commons, email, date, requests_count=old_request_count + 1 |
129 |
| - ) |
130 |
| - if old_request_count >= float(max_requests_number): |
131 |
| - raise HTTPException( |
132 |
| - status_code=429, |
133 |
| - detail="You have reached the maximum number of requests for today.", |
| 113 | + if user_openai_api_key is None: |
| 114 | + date = time.strftime("%Y%m%d") |
| 115 | + max_requests_number = os.getenv("MAX_REQUESTS_NUMBER") |
| 116 | + commons = common_dependencies() |
| 117 | + userItem = fetch_user_stats(commons, User(email=email), date) |
| 118 | + old_request_count = userItem["requests_count"] |
| 119 | + |
| 120 | + update_user_request_count( |
| 121 | + commons, email, date, requests_count=old_request_count + 1 |
134 | 122 | )
|
| 123 | + if old_request_count >= float(max_requests_number): |
| 124 | + raise HTTPException( |
| 125 | + status_code=429, |
| 126 | + detail="You have reached the maximum number of requests for today.", |
| 127 | + ) |
| 128 | + else: |
| 129 | + pass |
135 | 130 |
|
136 | 131 |
|
137 | 132 | # create new chat
|
@@ -160,8 +155,8 @@ async def create_question_handler(
|
160 | 155 | current_user: User = Depends(get_current_user),
|
161 | 156 | ) -> ChatHistory:
|
162 | 157 | try:
|
163 |
| - check_user_limit(current_user.email) |
164 | 158 | user_openai_api_key = request.headers.get("Openai-Api-Key")
|
| 159 | + check_user_limit(current_user.email, user_openai_api_key) |
165 | 160 | openai_function_compatible_models = [
|
166 | 161 | "gpt-3.5-turbo-0613",
|
167 | 162 | "gpt-4-0613",
|
|
0 commit comments