MatteoScript commited on
Commit
77d78c0
·
verified ·
1 Parent(s): bfa725d

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +26 -25
main.py CHANGED
@@ -36,32 +36,42 @@ class InputData(BaseModel):
36
  max_new_tokens: int = 2000
37
  top_p: float = 0.95
38
  repetition_penalty: float = 1.0
39
-
40
- class InputDataAsync(InputData):
41
  NumeroGenerazioni: int = 1
42
  StringaSplit: str = '********'
43
  NumeroCaratteriSplitInstruction: int = 30000
 
 
44
 
45
  class PostSpazio(BaseModel):
46
  nomeSpazio: str
47
  input: str = ''
48
  api_name: str = "/chat"
 
 
 
49
 
50
  #--------------------------------------------------- Generazione TESTO ------------------------------------------------------
51
  @app.post("/Genera")
52
  def generate_text(request: Request, input_data: InputData):
53
- temperature = input_data.temperature
54
- max_new_tokens = input_data.max_new_tokens
55
- top_p = input_data.top_p
56
- repetition_penalty = input_data.repetition_penalty
57
- input_text = generate_input_text(input_data)
58
- max_new_tokens = min(max_new_tokens, 29500 - len(input_text))
59
- print(f"{datetime.now()} - Input Text: {input_text}")
60
- history = []
61
- generated_response = generate(input_text, history, temperature, max_new_tokens, top_p, repetition_penalty)
62
- print(f"{datetime.now()} - Response Text: {generated_response}")
63
- return {"response": generated_response}
64
-
 
 
 
 
 
 
65
  def generate_input_text(input_data):
66
  if input_data.instruction.startswith("http"):
67
  try:
@@ -124,7 +134,6 @@ def format_prompt(message, history):
124
  #--------------------------------------------------- Generazione TESTO ASYNC ------------------------------------------------------
125
  @app.post("/GeneraAsync")
126
  def generate_textAsync(request: Request, input_data: InputDataAsync):
127
- print(input_data.input)
128
  result_data = asyncio.run(GeneraTestoAsync("https://matteoscript-fastapi.hf.space/Genera", input_data))
129
  return {"response": result_data}
130
 
@@ -144,13 +153,10 @@ async def make_request(session, token, data, url, max_retries=3):
144
  print(result_data)
145
  return result_data
146
  except (asyncio.TimeoutError, aiohttp.ClientError, requests.exceptions.HTTPError) as e:
147
- print(f"Error: {e}.")
148
-
149
  if isinstance(e, (asyncio.TimeoutError, requests.exceptions.HTTPError)) and e.response.status in [502, 504]:
150
- print("Skipping retries for this error.")
151
  break
152
 
153
- print("Retrying...")
154
  await asyncio.sleep(1)
155
  raise Exception("Max retries reached or skipping retries. Unable to make the request.")
156
 
@@ -165,7 +171,6 @@ async def make_request_old(session, token, data, url):
165
  result_data = await response.json()
166
  except aiohttp.ContentTypeError:
167
  result_data = await response.text()
168
- print(result_data)
169
  return result_data
170
 
171
  async def CreaListaInput(input_data):
@@ -176,7 +181,6 @@ async def CreaListaInput(input_data):
176
  input_data.instruction = resp.text
177
  except requests.exceptions.RequestException as e:
178
  input_data.instruction = ""
179
- print(input_data.instruction)
180
  try:
181
  lista_dizionari = []
182
  nuova_lista_dizionari = []
@@ -187,7 +191,6 @@ async def CreaListaInput(input_data):
187
  nuova_lista_dizionari = DividiInstructionText(input_data)
188
  except json.JSONDecodeError:
189
  nuova_lista_dizionari = DividiInstructionText(input_data)
190
- print(nuova_lista_dizionari)
191
  return nuova_lista_dizionari
192
 
193
  def split_at_space_or_dot(input_string, length):
@@ -196,7 +199,6 @@ def split_at_space_or_dot(input_string, length):
196
  valid_positions = [pos for pos in positions if pos >= 0]
197
  lastpos = max(valid_positions) if valid_positions else length
198
  indice_divisione = int(lastpos)
199
- print(indice_divisione)
200
  return indice_divisione + 1
201
 
202
  def DividiInstructionJSON(lista_dizionari, input_data):
@@ -271,8 +273,7 @@ async def GeneraTestoAsync(url, input_data):
271
  tasks = []
272
  ListaInput = await CreaListaInput(input_data)
273
  for data in ListaInput:
274
- print('------------------------------------------------------------------------------------------------')
275
- print(data)
276
  tasks.extend([make_request(session, token, data, url) for _ in range(input_data.NumeroGenerazioni)])
277
  return await asyncio.gather(*tasks)
278
 
 
36
  max_new_tokens: int = 2000
37
  top_p: float = 0.95
38
  repetition_penalty: float = 1.0
39
+ Async: bool = false
 
40
  NumeroGenerazioni: int = 1
41
  StringaSplit: str = '********'
42
  NumeroCaratteriSplitInstruction: int = 30000
43
+
44
+ class InputDataAsync(InputData):
45
 
46
  class PostSpazio(BaseModel):
47
  nomeSpazio: str
48
  input: str = ''
49
  api_name: str = "/chat"
50
+
51
+ def LoggaTesto(type, text)
52
+ print(f"{datetime.now()}: ----------------------------------| {type} |-----------------------------------\n{text}\n\n")
53
 
54
  #--------------------------------------------------- Generazione TESTO ------------------------------------------------------
55
  @app.post("/Genera")
56
  def generate_text(request: Request, input_data: InputData):
57
+ LoggaTesto("INPUT", input_data.input)
58
+ if not input_data.Async:
59
+ temperature = input_data.temperature
60
+ max_new_tokens = input_data.max_new_tokens
61
+ top_p = input_data.top_p
62
+ repetition_penalty = input_data.repetition_penalty
63
+ input_text = generate_input_text(input_data)
64
+ max_new_tokens = min(max_new_tokens, 29500 - len(input_text))
65
+ history = []
66
+ generated_response = generate(input_text, history, temperature, max_new_tokens, top_p, repetition_penalty)
67
+ LoggaTesto("RISPOSTA SINCRONA", generated_response)
68
+ return {"response": generated_response}
69
+ else:
70
+ input_data.Async = false
71
+ result_data = asyncio.run(GeneraTestoAsync("https://matteoscript-fastapi.hf.space/Genera", input_data))
72
+ LoggaTesto("RISPOSTA ASINCRONA FINALE", result_data)
73
+ return {"response": result_data}
74
+
75
  def generate_input_text(input_data):
76
  if input_data.instruction.startswith("http"):
77
  try:
 
134
  #--------------------------------------------------- Generazione TESTO ASYNC ------------------------------------------------------
135
  @app.post("/GeneraAsync")
136
  def generate_textAsync(request: Request, input_data: InputDataAsync):
 
137
  result_data = asyncio.run(GeneraTestoAsync("https://matteoscript-fastapi.hf.space/Genera", input_data))
138
  return {"response": result_data}
139
 
 
153
  print(result_data)
154
  return result_data
155
  except (asyncio.TimeoutError, aiohttp.ClientError, requests.exceptions.HTTPError) as e:
156
+ LoggaTesto("ERRORE ASYNC", {e})
 
157
  if isinstance(e, (asyncio.TimeoutError, requests.exceptions.HTTPError)) and e.response.status in [502, 504]:
 
158
  break
159
 
 
160
  await asyncio.sleep(1)
161
  raise Exception("Max retries reached or skipping retries. Unable to make the request.")
162
 
 
171
  result_data = await response.json()
172
  except aiohttp.ContentTypeError:
173
  result_data = await response.text()
 
174
  return result_data
175
 
176
  async def CreaListaInput(input_data):
 
181
  input_data.instruction = resp.text
182
  except requests.exceptions.RequestException as e:
183
  input_data.instruction = ""
 
184
  try:
185
  lista_dizionari = []
186
  nuova_lista_dizionari = []
 
191
  nuova_lista_dizionari = DividiInstructionText(input_data)
192
  except json.JSONDecodeError:
193
  nuova_lista_dizionari = DividiInstructionText(input_data)
 
194
  return nuova_lista_dizionari
195
 
196
  def split_at_space_or_dot(input_string, length):
 
199
  valid_positions = [pos for pos in positions if pos >= 0]
200
  lastpos = max(valid_positions) if valid_positions else length
201
  indice_divisione = int(lastpos)
 
202
  return indice_divisione + 1
203
 
204
  def DividiInstructionJSON(lista_dizionari, input_data):
 
273
  tasks = []
274
  ListaInput = await CreaListaInput(input_data)
275
  for data in ListaInput:
276
+ LoggaTesto("RICHIESTA ASINCRONA", data)
 
277
  tasks.extend([make_request(session, token, data, url) for _ in range(input_data.NumeroGenerazioni)])
278
  return await asyncio.gather(*tasks)
279