|
19 | 19 | from ..strategy.strategy_base import StrategyBase
|
20 | 20 | from ..utils.func import get_valid_enum_names, get_datetime_with_tz
|
21 | 21 |
|
| 22 | +GENAI_RESPONSE_POOLING_LIMIT = 20 |
| 23 | + |
22 | 24 |
|
23 | 25 | class AlgoBullsConnection:
|
24 | 26 | """
|
@@ -94,48 +96,57 @@ def set_generative_ai_keys(self, api_key, secret_key, token_key):
|
94 | 96 | self.api.openai_key = api_key
|
95 | 97 | return 'SUCCESS' or 'FAILURE'
|
96 | 98 |
|
| 99 | + def get_genai_response_pooling(self, no_of_tries, user_prompt, chat_gpt_model): |
| 100 | + if no_of_tries < GENAI_RESPONSE_POOLING_LIMIT: |
| 101 | + try: |
| 102 | + if no_of_tries > 1: |
| 103 | + response = self.api.get_genai_response(user_prompt, chat_gpt_model) |
| 104 | + else: |
| 105 | + response = self.api.handle_genai_response_timeout() |
| 106 | + |
| 107 | + except AlgoBullsAPIGatewayTimeoutErrorException: |
| 108 | + response = self.get_genai_response_pooling(no_of_tries + 1) |
| 109 | + else: |
| 110 | + response = {'message': 'Somthing went wrong please try again'} |
| 111 | + return response |
| 112 | + |
97 | 113 | def start_chat(self, chat_gpt_model):
|
98 | 114 | while True:
|
99 | 115 | user_prompt = str(input())
|
100 | 116 | if user_prompt.lower() == 'exit':
|
101 | 117 | print("Thanks for the chat")
|
102 | 118 | return
|
103 |
| - |
104 |
| - response = self.api.get_genai(user_prompt, chat_gpt_model) |
105 |
| - while response['status_code'] == 504: |
106 |
| - response = self.api.get_genai_response() |
107 |
| - |
| 119 | + response = self.get_genai_response_pooling(1, user_prompt, chat_gpt_model) |
108 | 120 | print(f"GenAI: {response['message']}")
|
109 | 121 |
|
110 |
| - def continue_from_previous_session(self, page_no): |
| 122 | + def continue_from_previous_sessions(self): |
111 | 123 | """
|
112 | 124 | display previous sessions
|
113 | 125 | Returns:
|
114 | 126 |
|
115 | 127 | """
|
116 |
| - customer_genai_sessions = self.api.get_genai_sessions(page_no) |
| 128 | + customer_genai_sessions = self.api.get_genai_sessions() |
117 | 129 | for i, session in enumerate(customer_genai_sessions):
|
118 |
| - print(f"Session {i}: ID: {session['id']}, Started: {session['last_user_prompt']}") |
119 |
| - |
120 |
| - if len(customer_genai_sessions) < 20: |
121 |
| - print("End") |
122 |
| - else: |
123 |
| - print(f"Type 'next' to view the next 20 sessions.") |
| 130 | + print(f"Session {i}: Started: {session['timestamp_created']}, Title: {session['first_user_prompt']}") |
124 | 131 |
|
125 |
| - user_input = input("Enter session number or 'next': ") |
126 |
| - if user_input.lower() == "next" and len(customer_genai_sessions) > 20: |
127 |
| - self.continue_from_previous_session(page_no=page_no + 1) |
128 |
| - elif user_input.isdigit() and 1 <= int(user_input) <= len(customer_genai_sessions): |
129 |
| - selected_session_index = page_no + int(user_input) - 1 |
130 |
| - selected_session_id = customer_genai_sessions[selected_session_index]["id"] |
131 |
| - self.api.genai_api_key = selected_session_id |
| 132 | + while True: |
| 133 | + user_input = int(input("Enter session number")) |
| 134 | + if not isinstance(user_input, int): |
| 135 | + print('Argument "user_input" should be a int') |
| 136 | + elif 1 <= int(user_input) <= len(customer_genai_sessions): |
| 137 | + selected_session_index = int(user_input) - 1 |
| 138 | + selected_session_id = customer_genai_sessions[selected_session_index]["id"] |
| 139 | + self.api.genai_session_id = selected_session_id |
| 140 | + break |
| 141 | + else: |
| 142 | + print("Please select a valid session number.") |
132 | 143 |
|
133 | 144 | def initiate_chat(self, start_fresh=None, chat_gpt_model=None):
|
134 | 145 | if start_fresh:
|
135 | 146 | # reset session
|
136 |
| - self.api.genai_api_key = None |
| 147 | + self.api.genai_session_id = None |
137 | 148 | elif start_fresh is not None:
|
138 |
| - self.continue_from_previous_session(page_no=1) |
| 149 | + self.continue_from_previous_sessions() |
139 | 150 |
|
140 | 151 | self.start_chat(chat_gpt_model)
|
141 | 152 |
|
|
0 commit comments