# ------------------------------------------------------------------
# Workaround for Starlette expecting query_string as bytes
# ------------------------------------------------------------------
import starlette.datastructures as _sd
_original_init = _sd.URL.__init__
def _patched_init(self, url="", scope=None, **kwargs):
if scope is not None:
scope = dict(scope)
qs = scope.get("query_string")
if isinstance(qs, str):
scope["query_string"] = qs.encode("latin-1")
return _original_init(self, url=url, scope=scope, **kwargs)
_sd.URL.__init__ = _patched_init
# ------------------------------------------------------------------
# Gradio app
# ------------------------------------------------------------------
import gradio as gr
def respond(message, history):
response = f"You said: {message}\nAnd I say I love learning AI Engineering with SuperDataScience!"
return response
gr.ChatInterface(fn=respond).launch()
# Same syntax as requirements.txt