{"cells": [{"cell_type": "markdown", "id": "302934307671667531413257853548643485645", "metadata": {}, "source": ["# Gradio Demo: chatbot_core_components_simple"]}, {"cell_type": "code", "execution_count": null, "id": "272996653310673477252411125948039410165", "metadata": {}, "outputs": [], "source": ["!pip install -q gradio "]}, {"cell_type": "code", "execution_count": null, "id": "288918539441861185822528903084949547379", "metadata": {}, "outputs": [], "source": ["import gradio as gr\n", "import random\n", "\n", "# Chatbot demo with multimodal input (text, markdown, LaTeX, code blocks, image, audio, & video). Plus shows support for streaming text.\n", "\n", "color_map = {\n", " \"harmful\": \"crimson\",\n", " \"neutral\": \"gray\",\n", " \"beneficial\": \"green\",\n", "}\n", "\n", "def html_src(harm_level):\n", " return f\"\"\"\n", "
\n", "
\n", " {harm_level}\n", "
\n", "
\n", "\"\"\"\n", "\n", "def print_like_dislike(x: gr.LikeData):\n", " print(x.index, x.value, x.liked)\n", "\n", "def add_message(history, message):\n", " for x in message[\"files\"]:\n", " history.append({\"role\": \"user\", \"content\": {\"path\": x}})\n", " if message[\"text\"] is not None:\n", " history.append({\"role\": \"user\", \"content\": message['text']})\n", " return history, gr.MultimodalTextbox(value=None, interactive=False)\n", "\n", "def bot(history, response_type):\n", " if response_type == \"gallery\":\n", " msg = {\"role\": \"assistant\",\n", " \"content\": gr.Gallery(\n", " [\n", " \"https://github.com/gradio-app/gradio/raw/main/gradio/media_assets/images/bus.png\",\n", " \"https://github.com/gradio-app/gradio/raw/main/gradio/media_assets/images/bus.png\",\n", " ])\n", " }\n", " elif response_type == \"image\":\n", " msg = {\"role\": \"assistant\",\n", " \"content\": gr.Image(\n", " \"https://github.com/gradio-app/gradio/raw/main/gradio/media_assets/images/bus.png\"\n", " )\n", " }\n", " elif response_type == \"video\":\n", " msg = {\"role\": \"assistant\",\n", " \"content\": gr.Video(\"https://github.com/gradio-app/gradio/raw/main/gradio/media_assets/videos/world.mp4\",\n", " label=\"test\")\n", " }\n", " elif response_type == \"audio\":\n", " msg = {\"role\": \"assistant\",\n", " \"content\": gr.Audio(\"https://github.com/gradio-app/gradio/raw/main/gradio/media_assets/audio/audio_sample.wav\")\n", " }\n", " elif response_type == \"html\":\n", " msg = {\"role\": \"assistant\",\n", " \"content\": gr.HTML(\n", " html_src(random.choice([\"harmful\", \"neutral\", \"beneficial\"]))\n", " )\n", " }\n", " elif response_type == \"model3d\":\n", " msg = {\"role\": \"assistant\", \"content\": gr.Model3D(\n", " \"https://github.com/gradio-app/gradio/raw/main/gradio/media_assets/models3d/Fox.gltf\"\n", " )}\n", " else:\n", " msg = {\"role\": \"assistant\", \"content\": \"Cool!\"}\n", " history.append(msg)\n", " return history\n", "\n", "with gr.Blocks(fill_height=True) as demo:\n", " chatbot = gr.Chatbot(\n", " elem_id=\"chatbot\",\n", " scale=1,\n", " )\n", " response_type = gr.Radio(\n", " [\n", " \"image\",\n", " \"text\",\n", " \"gallery\",\n", " \"video\",\n", " \"audio\",\n", " \"html\",\n", " \"model3d\",\n", " ],\n", " value=\"text\",\n", " label=\"Response Type\",\n", " )\n", "\n", " chat_input = gr.MultimodalTextbox(\n", " interactive=True,\n", " placeholder=\"Enter message or upload file...\",\n", " show_label=False,\n", " )\n", "\n", " chat_msg = chat_input.submit(\n", " add_message, [chatbot, chat_input], [chatbot, chat_input]\n", " )\n", " bot_msg = chat_msg.then(\n", " bot, [chatbot, response_type], chatbot, api_name=\"bot_response\"\n", " )\n", " bot_msg.then(lambda: gr.MultimodalTextbox(interactive=True), None, [chat_input])\n", "\n", " chatbot.like(print_like_dislike, None, None)\n", "\n", "if __name__ == \"__main__\":\n", " demo.launch()\n"]}], "metadata": {}, "nbformat": 4, "nbformat_minor": 5}