vvolhejn commited on
Commit
3b164c7
Β·
1 Parent(s): b249261

Add instructions on how to duplicate/customize the Space

Browse files
Files changed (3) hide show
  1. README.md +34 -1
  2. brand_tune/app.py +33 -5
  3. brand_tune/prompting.py +0 -2
README.md CHANGED
@@ -20,4 +20,37 @@ Run the following from the terminal:
20
  ```sh
21
  poetry install
22
  poetry run gradio app.py
23
- ```
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  ```sh
21
  poetry install
22
  poetry run gradio app.py
23
+ ```
24
+
25
+ ## Customization
26
+
27
+ Interested in using Brand Tune for your own brand?
28
+ Begin by duplicating this Hugging Face Space.
29
+ There should be a button with a vertical "..." in the top right.
30
+ If you expand it, there's a "Duplicate this Space" option – click it.
31
+
32
+ Select the name you want to use.
33
+ The hardware is not important, so pick the cheapest option.
34
+ The actual computation takes place via the OpenAI API,
35
+ so you will need to fill in the `OPENAI_API_KEY` space secret.
36
+ See [here](https://help.openai.com/en/articles/4936850-where-do-i-find-my-secret-api-key)
37
+ on how to get one.
38
+
39
+ This will give you a copy of the space that you can edit.
40
+
41
+ ### Brand guidelines
42
+
43
+ Next, edit `meta_prompt.txt` to describe the style you're looking for.
44
+
45
+ You can also provide an example input/output pair - like "write an instagram post about X"
46
+ and then an example of what a good answer would look like.
47
+ This can help guide ChatGPT to follow the style you want.
48
+ First, go to `app.py` and set `USE_EXAMPLE = True`.
49
+ Then put the example input into `example_input.txt` and the corresponding output into `example_output.txt`.
50
+
51
+ ### Changing the password
52
+
53
+ In the chatbot, type "/password [the password you want]".
54
+ This will give you instructions on how to change the password – you'll need to edit `brand_tune/app.py`.
55
+
56
+ If your Space is public, this will prevent unknown people from using your OpenAI API.
brand_tune/app.py CHANGED
@@ -8,8 +8,12 @@ import hashlib
8
  SALT = "this is some random text 4e881d478cbeb1f6e5cb416770"
9
  CORRECT_HASH = "222632858bf11308f0a7d41cb9fc061a51a47c98da85699706cc663b24aed55e"
10
 
 
 
 
11
 
12
- def hash(password: str):
 
13
  return hashlib.sha256((password + SALT).encode()).hexdigest()
14
 
15
 
@@ -20,7 +24,7 @@ def gradio_history_to_openai_history(gradio_history: list[list[str]]):
20
  "content": prompting.PROMPT_TEMPLATE,
21
  },
22
  ]
23
- if prompting.USE_EXAMPLE:
24
  openai_history += [
25
  {"role": "user", "content": prompting.EXAMPLE_INPUT},
26
  {"role": "assistant", "content": prompting.EXAMPLE_OUTPUT},
@@ -35,18 +39,42 @@ def gradio_history_to_openai_history(gradio_history: list[list[str]]):
35
 
36
 
37
  def bot(history: list[list[str]]):
38
- if hash(history[-1][0]) == CORRECT_HASH:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  history[-1][1] = "Correct! You can now use the chatbot."
40
  yield history
41
  return
42
  else:
43
  found = False
44
  for user_message, bot_message in history:
45
- if hash(user_message) == CORRECT_HASH:
46
  found = True
47
  break
48
  if not found:
49
- history[-1][1] = "Incorrect password. Try again."
50
  yield history
51
  return
52
 
 
8
  SALT = "this is some random text 4e881d478cbeb1f6e5cb416770"
9
  CORRECT_HASH = "222632858bf11308f0a7d41cb9fc061a51a47c98da85699706cc663b24aed55e"
10
 
11
+ # Use the example input and output from example_input.txt and example_output.txt?
12
+ # This can help in specifying the style you'd like to use.
13
+ USE_EXAMPLE = True
14
 
15
+
16
+ def hash_password(password: str):
17
  return hashlib.sha256((password + SALT).encode()).hexdigest()
18
 
19
 
 
24
  "content": prompting.PROMPT_TEMPLATE,
25
  },
26
  ]
27
+ if USE_EXAMPLE:
28
  openai_history += [
29
  {"role": "user", "content": prompting.EXAMPLE_INPUT},
30
  {"role": "assistant", "content": prompting.EXAMPLE_OUTPUT},
 
39
 
40
 
41
  def bot(history: list[list[str]]):
42
+ last_message = history[-1][0]
43
+
44
+ if last_message == "/help":
45
+ history[-1][1] = (
46
+ "Welcome to Brand Tune, the tool that helps you keep your brand consistent. "
47
+ "First, you'll need to enter a password to be able to use the chatbot. "
48
+ "This is so that unauthorized people don't use the OpenAI API that we "
49
+ "have to pay for.\n"
50
+ "For more info, like how to make your own version, "
51
+ "go to the Files tab and check out README.md."
52
+ )
53
+ yield history
54
+ return
55
+
56
+ if last_message.startswith("/password "):
57
+ password = last_message[len("/password ") :]
58
+ h = hash_password(password)
59
+ history[-1][1] = (
60
+ f'To change the password to "{password}", edit brand_tune/app.py and change '
61
+ f'the relevant line to:\nCORRECT_HASH = "{h}"'
62
+ )
63
+ yield history
64
+ return
65
+
66
+ if hash_password(last_message) == CORRECT_HASH:
67
  history[-1][1] = "Correct! You can now use the chatbot."
68
  yield history
69
  return
70
  else:
71
  found = False
72
  for user_message, bot_message in history:
73
+ if hash_password(user_message) == CORRECT_HASH:
74
  found = True
75
  break
76
  if not found:
77
+ history[-1][1] = "Incorrect password. Try again. Type /help for help."
78
  yield history
79
  return
80
 
brand_tune/prompting.py CHANGED
@@ -9,5 +9,3 @@ with (this_dir.parent / "example_input.txt").open() as f:
9
 
10
  with (this_dir.parent / "example_output.txt").open() as f:
11
  EXAMPLE_OUTPUT = f.read()
12
-
13
- USE_EXAMPLE = False
 
9
 
10
  with (this_dir.parent / "example_output.txt").open() as f:
11
  EXAMPLE_OUTPUT = f.read()