import gradio as gr from blindbox.requests import SecureSession DEMO_SERVER = "4.208.9.167:80" def run_query( server, policy, prompt): if prompt == None or server == None or policy == None: return("⛔ Error: please select an option for stages 1-3") if len(prompt) == 0 or len(policy) == 0 or len(server) == 0: return("⛔ Error: please select an option for stages 1-3") if server != "Authentic confidential VM server": return ("⛔ Error: you can only connect to an application running on a Confidential VM") if policy == "Expected Santacoder app policy file": POLICY = "./cce_policy.txt" elif policy == "Unexpected Hello World app policy file": POLICY = "./hello_world.txt" else: POLICY = "fake.txt" try: with SecureSession(f"http://{DEMO_SERVER}", POLICY) as secure_session: res = secure_session.post(endpoint="/generate", json={"input_text": prompt}) cleaned = res.text.replace('\\n', '\n').split('\n\n')[0].split(':"')[1] return("✅ Query successful\n" + cleaned) except Exception as err: return(f"⛔ Query failed!\n{err}") with gr.Blocks(theme=gr.themes.Soft()) as demo: gr.Markdown("
This is the demo for our article on deploying code generation LLM models with BlindBox: AI-assisted code generation with privacy guarantees: Securely deploy SantaCoder with BlindBox
You can view the article here!
You can use this demo to send a function definition to BigCode's open-source Santacoder model and get back an auto-completed function.
") gr.Markdown("The model is deployed within a highly-isolated Trusted Execution Environment, meaning that we, as the service provider, have no access to the data sent to this model!
") gr.Markdown("You can see how we deployed the model by checking out the integration section of our documentation!
") gr.Markdown(">This first option allows you to choose whether to connect to the Whisper application deployed with BlindBox on a confidential VM or the same application deployed on a dummy server which is not within a confidential VM!
This demonstrates how BlindBox blocks requests to non-authentic confidential VMs!
You can think of this second verification a bit like a checksum. Here, you can see what happens if the end user queries the application whilst providing the latest policy file for our Santacoder application, the latest policy file for a different Hello World application or sends no policy file at all.
Select between the following prompt examples we provide.
") with gr.Column(): prompt = gr.Radio( ["def sum(x, y):", "def print_name(name):", "def hello_world():", "def square_root(nbr):"], label="Select your user prompt" ) gr.Markdown(">