(
state0,
state1,
temperature,
top_p,
max_new_tokens,
request: gr.Request,
)
| 209 | |
| 210 | |
| 211 | def bot_response_multi( |
| 212 | state0, |
| 213 | state1, |
| 214 | temperature, |
| 215 | top_p, |
| 216 | max_new_tokens, |
| 217 | request: gr.Request, |
| 218 | ): |
| 219 | logger.info(f"bot_response_multi (named). ip: {get_ip(request)}") |
| 220 | |
| 221 | if state0.skip_next: |
| 222 | # This generate call is skipped due to invalid inputs |
| 223 | yield ( |
| 224 | state0, |
| 225 | state1, |
| 226 | state0.to_gradio_chatbot(), |
| 227 | state1.to_gradio_chatbot(), |
| 228 | ) + (no_change_btn,) * 6 |
| 229 | return |
| 230 | |
| 231 | states = [state0, state1] |
| 232 | gen = [] |
| 233 | for i in range(num_sides): |
| 234 | gen.append( |
| 235 | bot_response( |
| 236 | states[i], |
| 237 | temperature, |
| 238 | top_p, |
| 239 | max_new_tokens, |
| 240 | request, |
| 241 | ) |
| 242 | ) |
| 243 | |
| 244 | is_gemini = [] |
| 245 | for i in range(num_sides): |
| 246 | is_gemini.append(states[i].model_name in ["gemini-pro", "gemini-pro-dev-api"]) |
| 247 | |
| 248 | chatbots = [None] * num_sides |
| 249 | iters = 0 |
| 250 | while True: |
| 251 | stop = True |
| 252 | iters += 1 |
| 253 | for i in range(num_sides): |
| 254 | try: |
| 255 | # yield gemini fewer times as its chunk size is larger |
| 256 | # otherwise, gemini will stream too fast |
| 257 | if not is_gemini[i] or (iters % 30 == 1 or iters < 3): |
| 258 | ret = next(gen[i]) |
| 259 | states[i], chatbots[i] = ret[0], ret[1] |
| 260 | stop = False |
| 261 | except StopIteration: |
| 262 | pass |
| 263 | yield states + chatbots + [disable_btn] * 6 |
| 264 | if stop: |
| 265 | break |
| 266 | |
| 267 | |
| 268 | def flash_buttons(): |
nothing calls this directly
no test coverage detected
searching dependent graphs…