MCPcopy
hub / github.com/lm-sys/FastChat / bot_response

Function bot_response

fastchat/serve/gradio_web_server.py:357–529  ·  view source on GitHub ↗
(
    state,
    temperature,
    top_p,
    max_new_tokens,
    request: gr.Request,
    apply_rate_limit=True,
)

Source from the content-addressed store, hash-verified

355
356
357def bot_response(
358 state,
359 temperature,
360 top_p,
361 max_new_tokens,
362 request: gr.Request,
363 apply_rate_limit=True,
364):
365 ip = get_ip(request)
366 logger.info(f"bot_response. ip: {ip}")
367 start_tstamp = time.time()
368 temperature = float(temperature)
369 top_p = float(top_p)
370 max_new_tokens = int(max_new_tokens)
371
372 if state.skip_next:
373 # This generate call is skipped due to invalid inputs
374 state.skip_next = False
375 yield (state, state.to_gradio_chatbot()) + (no_change_btn,) * 5
376 return
377
378 if apply_rate_limit:
379 ret = is_limit_reached(state.model_name, ip)
380 if ret is not None and ret["is_limit_reached"]:
381 error_msg = RATE_LIMIT_MSG + "\n\n" + ret["reason"]
382 logger.info(f"rate limit reached. ip: {ip}. error_msg: {ret['reason']}")
383 state.conv.update_last_message(error_msg)
384 yield (state, state.to_gradio_chatbot()) + (no_change_btn,) * 5
385 return
386
387 conv, model_name = state.conv, state.model_name
388 model_api_dict = (
389 api_endpoint_info[model_name] if model_name in api_endpoint_info else None
390 )
391 images = conv.get_images()
392
393 if model_api_dict is None:
394 # Query worker address
395 ret = requests.post(
396 controller_url + "/get_worker_address", json={"model": model_name}
397 )
398 worker_addr = ret.json()["address"]
399 logger.info(f"model_name: {model_name}, worker_addr: {worker_addr}")
400
401 # No available worker
402 if worker_addr == "":
403 conv.update_last_message(SERVER_ERROR_MSG)
404 yield (
405 state,
406 state.to_gradio_chatbot(),
407 disable_btn,
408 disable_btn,
409 disable_btn,
410 enable_btn,
411 enable_btn,
412 )
413 return
414

Callers 2

bot_response_multiFunction · 0.90
bot_response_multiFunction · 0.90

Calls 12

load_imageFunction · 0.90
get_ipFunction · 0.85
model_worker_stream_iterFunction · 0.85
get_conv_log_filenameFunction · 0.85
update_last_messageMethod · 0.80
get_imagesMethod · 0.80
get_promptMethod · 0.80
writeMethod · 0.80
is_limit_reachedFunction · 0.70
to_gradio_chatbotMethod · 0.45
dictMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…