Spaces:
Build error
Build error
File size: 4,675 Bytes
73feeaa 4f9a3a4 73feeaa 4f9a3a4 73feeaa 4f9a3a4 73feeaa 4f9a3a4 73feeaa 4f9a3a4 73feeaa 4f9a3a4 73feeaa 4f9a3a4 73feeaa 4f9a3a4 73feeaa 4f9a3a4 73feeaa 4f9a3a4 73feeaa 4f9a3a4 73feeaa 4f9a3a4 73feeaa 4f9a3a4 73feeaa 4f9a3a4 73feeaa 4f9a3a4 73feeaa 4f9a3a4 73feeaa 4f9a3a4 46e508a 73feeaa 4f9a3a4 d186e78 4f9a3a4 73feeaa 4f9a3a4 73feeaa 4f9a3a4 73feeaa 4f9a3a4 73feeaa 4f9a3a4 73feeaa 4f9a3a4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
"""
ChatGPT + Robotics Gradio demo.
Author: Sai Vemprala
For details, please check out our blog post: https://aka.ms/ChatGPT-Robotics, and our paper:
https://www.microsoft.com/en-us/research/uploads/prod/2023/02/ChatGPT___Robotics.pdf
In this demo, we provide a quick way to interact with ChatGPT in robotics settings using some custom prompts.
As seen in our paper, we provide prompts for several scenarios: robot manipulation, drone navigation
(in a simulated setting (airsim) as well as real life), and embodied AI. embodied_agent_closed_loop is an
experimental setting where observations from a scene can be described to ChatGPT as text.
Parts of the code were inspired by https://huggingface.co./spaces/VladislavMotkov/chatgpt_webui/
"""
import gradio as gr
from revChatGPT.V1 import Chatbot
import glob, os
access_token = None
def parse_text(text):
lines = text.split("\n")
for i, line in enumerate(lines):
if "```" in line:
items = line.split("`")
if items[-1]:
lines[i] = f'<pre><code class="{items[-1]}">'
else:
lines[i] = f"</code></pre>"
else:
if i > 0:
lines[i] = "<br/>" + line.replace(" ", " ")
return "".join(lines)
def configure_chatgpt(info):
access_token = info
config = {}
config.update({"access_token": access_token})
global chatgpt
chatgpt = Chatbot(config=config)
def ask(prompt):
message = ""
for data in chatgpt.ask(prompt):
message = data["message"]
return parse_text(message)
def query_chatgpt(inputs, history, message):
history = history or []
output = ask(inputs)
history.append((inputs, output))
return history, history, ""
def initialize_prompt(prompt_type, history):
history = history or []
if prompt_type:
prompt_file = "./prompts/" + str(prompt_type) + ".txt"
with open(prompt_file, "r") as f:
prompt = f.read()
output = ask(prompt)
history.append(("<ORIGINAL PROMPT>", output))
return history, history
def display_prompt(show, prompt_type):
if not prompt_type:
show = False
return "Error - prompt not selected"
else:
if show:
prompt_file = "./prompts/" + str(prompt_type) + ".txt"
with open(prompt_file, "r") as f:
prompt = f.read()
return prompt
else:
return ""
with gr.Blocks() as demo:
gr.Markdown("""<h3><center>ChatGPT + Robotics</center></h3>""")
gr.Markdown(
"""This is a companion app to the work [ChatGPT for Robotics: Design Principles and Model Abilities](https://aka.ms/ChatGPT-Robotics).<br>
This space allows you to work with ChatGPT to get it to generate code for robotics tasks, such as get a robot arm to manipulate objects, or have a drone fly around in a 3D world.<br>
See [README](https://huggingface.co./spaces/microsoft/ChatGPT-Robotics/blob/main/README.md) for detailed instructions."""
)
if not access_token:
gr.Markdown("""<h4>Login to ChatGPT</h4>""")
with gr.Row():
with gr.Group():
info = gr.Textbox(placeholder="Enter access token here (from https://chat.openai.com/api/auth/session)", label="ChatGPT Login")
with gr.Row():
login = gr.Button("Login")
login.click(configure_chatgpt, inputs=[info])
l = os.listdir("./prompts")
li = [x.split(".")[0] for x in l]
gr.Markdown("""<h4>Initial Prompt for ChatGPT</h4>""")
prompt_type = gr.components.Dropdown(
li,
label="Select sample prompt",
value=None,
info="Choose a prompt based on the robot/scenario you're interested in (e.g. pick airsim or real_drone to start a drone scenario)",
)
show_prompt = gr.Checkbox(label="Display prompt")
prompt_display = gr.Textbox(interactive=False, label="Prompt")
show_prompt.change(fn=display_prompt, inputs=[show_prompt, prompt_type], outputs=prompt_display)
initialize = gr.Button(value="Initialize")
gr.Markdown("""<h4>Conversation</h4>""")
chatgpt_robot = gr.Chatbot()
message = gr.Textbox(
placeholder="Enter query",
label="",
info='Talk to ChatGPT and ask it to help with specific tasks! For example, "take off and reach an altitude of five meters"',
)
state = gr.State()
initialize.click(fn=initialize_prompt, inputs=[prompt_type, state], outputs=[chatgpt_robot, state])
message.submit(query_chatgpt, inputs=[message, state], outputs=[chatgpt_robot, state, message])
demo.launch() |