lauro1 commited on
Commit
41f4057
Β·
1 Parent(s): c929fc3

added attestation stuff

Browse files
Files changed (2) hide show
  1. app.py +32 -6
  2. hello_world.txt +1 -0
app.py CHANGED
@@ -3,10 +3,19 @@ from blindbox.requests import SecureSession
3
 
4
  DEMO_SERVER = "4.208.9.167:80"
5
 
6
- def run_query( prompt):
7
- POLICY = "./cce_policy.txt"
8
- if len(prompt) == 0:
9
- return("β›” Error: please add your query for automated code completion")
 
 
 
 
 
 
 
 
 
10
  try:
11
  with SecureSession(f"http://{DEMO_SERVER}", POLICY) as secure_session:
12
  res = secure_session.post(endpoint="/generate", json={"input_text": prompt})
@@ -20,13 +29,30 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
20
  gr.Markdown("<p>This is the demo for our article on deploying code generation LLM models with BlindBox: <b>AI-assisted code generation with privacy guarantees: Securely deploy SantaCoder with BlindBox</b><br>You can view the article <a href='ai-assisted-code-generation-with-privacy-guarantees-securely-deploy-santacoder-with-blindbox'>here!</a> </p>")
21
  gr.Markdown("<p>You can use this demo to send a function definition to BigCode's open-source Santacoder model and get back an auto-completed function.</p>")
22
  gr.Markdown("<p>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!</p>")
 
 
23
  with gr.Column():
24
- prompt = gr.Textbox(lines=2, placeholder="Enter function definition here e.g. def add_together(x,y):")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  with gr.Column():
26
  trigger = gr.Button("Test query")
27
  with gr.Column():
28
  output = gr.Textbox(placeholder="Output", label="See the output of your query here")
29
- trigger.click(fn=run_query, inputs=[prompt], outputs=output)
30
 
31
  if __name__ == "__main__":
32
  demo.launch()
 
3
 
4
  DEMO_SERVER = "4.208.9.167:80"
5
 
6
+ def run_query( server, policy, prompt):
7
+ if prompt == None or server == None or policy == None:
8
+ return("β›” Error: please select an option for stages 1-3")
9
+ if len(prompt) == 0 or len(policy) == 0 or len(server) == 0:
10
+ return("β›” Error: please select an option for stages 1-3")
11
+ if server != "Authentic confidential VM server":
12
+ return ("β›” Error: you can only connect to an application running on a Confidential VM")
13
+ if policy == "Expected Santacoder app policy file":
14
+ POLICY = "./cce_policy.txt"
15
+ elif policy == "Unexpected Hello World app policy file":
16
+ POLICY = "./hello_world.txt"
17
+ else:
18
+ POLICY = "fake.txt"
19
  try:
20
  with SecureSession(f"http://{DEMO_SERVER}", POLICY) as secure_session:
21
  res = secure_session.post(endpoint="/generate", json={"input_text": prompt})
 
29
  gr.Markdown("<p>This is the demo for our article on deploying code generation LLM models with BlindBox: <b>AI-assisted code generation with privacy guarantees: Securely deploy SantaCoder with BlindBox</b><br>You can view the article <a href='ai-assisted-code-generation-with-privacy-guarantees-securely-deploy-santacoder-with-blindbox'>here!</a> </p>")
30
  gr.Markdown("<p>You can use this demo to send a function definition to BigCode's open-source Santacoder model and get back an auto-completed function.</p>")
31
  gr.Markdown("<p>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!</p>")
32
+ gr.Markdown("><h3>Step 1: Check we are connecting to an authentic confidential VM")
33
+ gr.Markdown("<p>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!<br>This demonstrates how BlindBox blocks requests to non-authentic confidential VMs!</p>")
34
  with gr.Column():
35
+ server = gr.Radio(
36
+ ["Authentic confidential VM server", "Unauthentic dummy server"], label="Select the server you want to connect to"
37
+ )
38
+ gr.Markdown("><h3>Step 2: Check we are connecting to the latest official SaaS application image</h3>")
39
+ gr.Markdown("<p>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.<br></p>")
40
+ with gr.Column():
41
+ policy = gr.Radio(
42
+ ["Expected Santacoder app policy file", "Unexpected Hello World app policy file", "No policy file"], label="Select your CCE policy file"
43
+ )
44
+ gr.Markdown("><h3>Step 3: Select your prompt</h3>")
45
+ gr.Markdown("<p>Select between the following prompt examples we provide.</p>")
46
+ with gr.Column():
47
+ prompt = gr.Radio(
48
+ ["def sum(x, y):", "def print_name(name):", "def hello_world():", "def square_root(nbr):"], label="Select your user prompt"
49
+ )
50
+ gr.Markdown("><h3>Query the Santacoder model</h3>")
51
  with gr.Column():
52
  trigger = gr.Button("Test query")
53
  with gr.Column():
54
  output = gr.Textbox(placeholder="Output", label="See the output of your query here")
55
+ trigger.click(fn=run_query, inputs=[server, policy, prompt], outputs=output)
56
 
57
  if __name__ == "__main__":
58
  demo.launch()
hello_world.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ cGFja2FnZSBwb2xpY3kKCmltcG9ydCBmdXR1cmUua2V5d29yZHMuZXZlcnkKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5pbgoKYXBpX3N2biA6PSAiMC4xMC4wIgpmcmFtZXdvcmtfc3ZuIDo9ICIwLjEuMCIKCmZyYWdtZW50cyA6PSBbCiAgewogICAgImZlZWQiOiAibWNyLm1pY3Jvc29mdC5jb20vYWNpL2FjaS1jYy1pbmZyYS1mcmFnbWVudCIsCiAgICAiaW5jbHVkZXMiOiBbCiAgICAgICJjb250YWluZXJzIgogICAgXSwKICAgICJpc3N1ZXIiOiAiZGlkOng1MDk6MDpzaGEyNTY6SV9faXVMMjVvWEVWRmRUUF9hQkx4X2VUMVJQSGJDUV9FQ0JRZllacHQ5czo6ZWt1OjEuMy42LjEuNC4xLjMxMS43Ni41OS4xLjMiLAogICAgIm1pbmltdW1fc3ZuIjogIjEuMC4wIgogIH0KXQoKY29udGFpbmVycyA6PSBbeyJhbGxvd19lbGV2YXRlZCI6dHJ1ZSwiYWxsb3dfc3RkaW9fYWNjZXNzIjp0cnVlLCJjb21tYW5kIjpbIi9iaW4vc2giLCItYyIsIi4vc2V2LXN0YXJ0LnNoIl0sImVudl9ydWxlcyI6W3sicGF0dGVybiI6IlBBVEg9L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluIiwicmVxdWlyZWQiOmZhbHNlLCJzdHJhdGVneSI6InN0cmluZyJ9LHsicGF0dGVybiI6IkRFQklBTl9GUk9OVEVORD1ub25pbnRlcmFjdGl2ZSIsInJlcXVpcmVkIjpmYWxzZSwic3RyYXRlZ3kiOiJzdHJpbmcifSx7InBhdHRlcm4iOiJURVJNPXh0ZXJtIiwicmVxdWlyZWQiOmZhbHNlLCJzdHJhdGVneSI6InN0cmluZyJ9LHsicGF0dGVybiI6IigoP2kpRkFCUklDKV8uKz0uKyIsInJlcXVpcmVkIjpmYWxzZSwic3RyYXRlZ3kiOiJyZTIifSx7InBhdHRlcm4iOiJIT1NUTkFNRT0uKyIsInJlcXVpcmVkIjpmYWxzZSwic3RyYXRlZ3kiOiJyZTIifSx7InBhdHRlcm4iOiJUKEUpP01QPS4rIiwicmVxdWlyZWQiOmZhbHNlLCJzdHJhdGVneSI6InJlMiJ9LHsicGF0dGVybiI6IkZhYnJpY1BhY2thZ2VGaWxlTmFtZT0uKyIsInJlcXVpcmVkIjpmYWxzZSwic3RyYXRlZ3kiOiJyZTIifSx7InBhdHRlcm4iOiJIb3N0ZWRTZXJ2aWNlTmFtZT0uKyIsInJlcXVpcmVkIjpmYWxzZSwic3RyYXRlZ3kiOiJyZTIifSx7InBhdHRlcm4iOiJJREVOVElUWV9BUElfVkVSU0lPTj0uKyIsInJlcXVpcmVkIjpmYWxzZSwic3RyYXRlZ3kiOiJyZTIifSx7InBhdHRlcm4iOiJJREVOVElUWV9IRUFERVI9LisiLCJyZXF1aXJlZCI6ZmFsc2UsInN0cmF0ZWd5IjoicmUyIn0seyJwYXR0ZXJuIjoiSURFTlRJVFlfU0VSVkVSX1RIVU1CUFJJTlQ9LisiLCJyZXF1aXJlZCI6ZmFsc2UsInN0cmF0ZWd5IjoicmUyIn0seyJwYXR0ZXJuIjoiYXp1cmVjb250YWluZXJpbnN0YW5jZV9yZXN0YXJ0ZWRfYnk9LisiLCJyZXF1aXJlZCI6ZmFsc2UsInN0cmF0ZWd5IjoicmUyIn1dLCJleGVjX3Byb2Nlc3NlcyI6W10sImlkIjoiYmxpbmRib3gyNjExMzEuYXp1cmVjci5pby9ibGluZGJveC1oZWxsbyIsImxheWVycyI6WyIxODcxYjA1MTk3MjgzZWNiNTJiODFiYWU1M2ZmNWVmNDc3NzYwYzI1NTI5NDQyYjQ0YjNhNTA1NDg2ZDgyOTJmIiwiMGYzYWZkMjM0N2I0ZmFkYmZkZTk5MWJjZmM3YTQ2ZTIwOGYwODFkZDMxZTJkOWU1NDdhM2UwOWM2MjQ4ZWE1MCIsIjMwZmFhNzA3ZDZiMWNhYjMzZTQ3M2I0ODcwMjFmZDIyNzg4NWE2YWUwNDU1ZmY5OTg1NmMyZmNjYWY0OTFlNTgiLCIzMGZhYTcwN2Q2YjFjYWIzM2U0NzNiNDg3MDIxZmQyMjc4ODVhNmFlMDQ1NWZmOTk4NTZjMmZjY2FmNDkxZTU4IiwiODZlNTI4MWNiZGJjZDA4YjcwZTk2ZmJhMjE1OTA0ZWUyYTdjOGExMzE2N2JiZDAyZjliMmRlN2NiNjlmMGQ3OCIsImFhMmFiZWMwZjcyNjc0MWViZWIwYTZmNGQ5MjVlYzgyNzVhYzJiMjE2ZThjNDdkMjYzY2QyZDFlMGY3MjZkMjIiLCJiMGUxZjk0ZTk2OTE3ZTRiOGM2M2RhNzBiOGFiNDgwZGM4MGVlYzAxZmFlMzRkNzJlOTdmZjkzNzJhMjVkY2FmIl0sIm1vdW50cyI6W3siZGVzdGluYXRpb24iOiIvZXRjL3Jlc29sdi5jb25mIiwib3B0aW9ucyI6WyJyYmluZCIsInJzaGFyZWQiLCJydyJdLCJzb3VyY2UiOiJzYW5kYm94Oi8vL3RtcC9hdGxhcy9yZXNvbHZjb25mLy4rIiwidHlwZSI6ImJpbmQifV0sInNpZ25hbHMiOltdLCJ3b3JraW5nX2RpciI6Ii9yb290In0seyJhbGxvd19lbGV2YXRlZCI6ZmFsc2UsImFsbG93X3N0ZGlvX2FjY2VzcyI6dHJ1ZSwiY29tbWFuZCI6WyIvcGF1c2UiXSwiZW52X3J1bGVzIjpbeyJwYXR0ZXJuIjoiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLCJyZXF1aXJlZCI6dHJ1ZSwic3RyYXRlZ3kiOiJzdHJpbmcifSx7InBhdHRlcm4iOiJURVJNPXh0ZXJtIiwicmVxdWlyZWQiOmZhbHNlLCJzdHJhdGVneSI6InN0cmluZyJ9XSwiZXhlY19wcm9jZXNzZXMiOltdLCJsYXllcnMiOlsiMTZiNTE0MDU3YTA2YWQ2NjVmOTJjMDI4NjNhY2EwNzRmZDU5NzZjNzU1ZDI2YmZmMTYzNjUyOTkxNjllODQxNSJdLCJtb3VudHMiOltdLCJzaWduYWxzIjpbXSwid29ya2luZ19kaXIiOiIvIn1dCgphbGxvd19wcm9wZXJ0aWVzX2FjY2VzcyA6PSBmYWxzZQphbGxvd19kdW1wX3N0YWNrcyA6PSBmYWxzZQphbGxvd19ydW50aW1lX2xvZ2dpbmcgOj0gZmFsc2UKYWxsb3dfZW52aXJvbm1lbnRfdmFyaWFibGVfZHJvcHBpbmcgOj0gdHJ1ZQphbGxvd191bmVuY3J5cHRlZF9zY3JhdGNoIDo9IGZhbHNlCgoKCm1vdW50X2RldmljZSA6PSBkYXRhLmZyYW1ld29yay5tb3VudF9kZXZpY2UKdW5tb3VudF9kZXZpY2UgOj0gZGF0YS5mcmFtZXdvcmsudW5tb3VudF9kZXZpY2UKbW91bnRfb3ZlcmxheSA6PSBkYXRhLmZyYW1ld29yay5tb3VudF9vdmVybGF5CnVubW91bnRfb3ZlcmxheSA6PSBkYXRhLmZyYW1ld29yay51bm1vdW50X292ZXJsYXkKY3JlYXRlX2NvbnRhaW5lciA6PSBkYXRhLmZyYW1ld29yay5jcmVhdGVfY29udGFpbmVyCmV4ZWNfaW5fY29udGFpbmVyIDo9IGRhdGEuZnJhbWV3b3JrLmV4ZWNfaW5fY29udGFpbmVyCmV4ZWNfZXh0ZXJuYWwgOj0gZGF0YS5mcmFtZXdvcmsuZXhlY19leHRlcm5hbApzaHV0ZG93bl9jb250YWluZXIgOj0gZGF0YS5mcmFtZXdvcmsuc2h1dGRvd25fY29udGFpbmVyCnNpZ25hbF9jb250YWluZXJfcHJvY2VzcyA6PSBkYXRhLmZyYW1ld29yay5zaWduYWxfY29udGFpbmVyX3Byb2Nlc3MKcGxhbjlfbW91bnQgOj0gZGF0YS5mcmFtZXdvcmsucGxhbjlfbW91bnQKcGxhbjlfdW5tb3VudCA6PSBkYXRhLmZyYW1ld29yay5wbGFuOV91bm1vdW50CmdldF9wcm9wZXJ0aWVzIDo9IGRhdGEuZnJhbWV3b3JrLmdldF9wcm9wZXJ0aWVzCmR1bXBfc3RhY2tzIDo9IGRhdGEuZnJhbWV3b3JrLmR1bXBfc3RhY2tzCnJ1bnRpbWVfbG9nZ2luZyA6PSBkYXRhLmZyYW1ld29yay5ydW50aW1lX2xvZ2dpbmcKbG9hZF9mcmFnbWVudCA6PSBkYXRhLmZyYW1ld29yay5sb2FkX2ZyYWdtZW50CnNjcmF0Y2hfbW91bnQgOj0gZGF0YS5mcmFtZXdvcmsuc2NyYXRjaF9tb3VudApzY3JhdGNoX3VubW91bnQgOj0gZGF0YS5mcmFtZXdvcmsuc2NyYXRjaF91bm1vdW50CgpyZWFzb24gOj0geyJlcnJvcnMiOiBkYXRhLmZyYW1ld29yay5lcnJvcnN9