Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| from utils import * | |
| if True: | |
| st.markdown(""" | |
| ## With ChatGPT | |
| #### 1. Set up OpenAI config in your notebook with code snippet below: | |
| ```python | |
| import openai ## you need to install this with "pip install openai" | |
| import os | |
| from dotenv import load_dotenv | |
| load_dotenv() # read local .env file | |
| openai.api_key = os.getenv('<Your OpenAI API key name>') # this assign the key to a variable named "openai.api_key" | |
| ``` | |
| - you might want to check on your own notebook if you did correctly by "print(openai.api_key)" | |
| #### 2. Define a python function to make our life easier later on | |
| ```python | |
| def get_completion(prompt, model="gpt-3.5-turbo"): | |
| messages = [{"role": "user", "content": prompt}] | |
| response = openai.ChatCompletion.create(model=model, messages=messages, | |
| temperature=0, # this is the degree of randomness of the model's output | |
| ) | |
| content = response.choices[0].message["content"] # This is the real reply from the ChatGPT | |
| ## This is the data we can grab from the API, how many tokens we have used in this conversation | |
| token_dict = { | |
| 'prompt_tokens':response['usage']['prompt_tokens'], | |
| 'completion_tokens':response['usage']['completion_tokens'], | |
| 'total_tokens':response['usage']['total_tokens'], | |
| } | |
| ## This is another important data we will use later on | |
| moderation_output = openai.Moderation.create(input=prompt)["results"][0] | |
| return content, token_dict, moderation_output | |
| ``` | |
| - The above function have two input, | |
| - prompt is a string input that will pass to ChatGPT | |
| - model is another input for us to sellet which ChatGPT model we wish to talk on | |
| - The function return three peaces of information, AI's reply, the usage info, and the moderation. | |
| - we only focus on the 'content' this week, | |
| - we will use the other two in the coming weeks | |
| #### 3. Our example text to summarise, a product review in this case | |
| """) | |
| st.code( | |
| ''' | |
| prod_review = | |
| """ | |
| Got this panda plush toy for my daughter's birthday, who loves it and takes it everywhere. \n | |
| It's soft and super cute, and its face has a friendly look. It's a bit small for what I paid though. \n | |
| I think there might be other options that are bigger for the same price. \n | |
| It arrived a day earlier than expected, so I got to play with it myself before I gave it to her. | |
| """ | |
| ''' | |
| , language = 'python') | |
| st.write("##") | |
| st.markdown(""" | |
| #### 4. Now, we add our system requirement to the bot, asking it to follow our instruction specifically | |
| """) | |
| st.code(''' | |
| numberOfWords = '20' # Here we specify the max number of words we want it to reply | |
| topics = "weather" # Here we want it to focus on specific topic | |
| ## Here is our system instruction, check how we pass our specific requirements to the system one | |
| prompt = f""" | |
| Your task is to generate a short summary of a given text \n | |
| Summarize the text below, delimited by triple backticks, \n | |
| in at most {numberOfWords} words, \n | |
| and focusing on any aspects that mention {topics}. | |
| Review: ```{prod_review}``` | |
| """ | |
| ''', language = 'python') | |
| st.markdown(""" | |
| Now if you run code below, you will get the response, if everything were correct so far... | |
| ```python | |
| response, _, _ = get_completion(prompt) # we use '_' to bypass other outputs | |
| print(response) | |
| ``` | |
| """) | |
| st.markdown(""" | |
| #### 5. More specific prompt | |
| """) | |
| st.code(''' | |
| numberOfWords = '20' | |
| topics = "marry" | |
| prompt = f""" | |
| Your task is to generate a short summary from text below, delimited by triple backticks, in at most {numberOfWords} words.\n | |
| Firstly, extract relevant information and create a list of keywords without response,\n | |
| Then, check if {topics} is in your list, if not, just response no relevent topics about {topics} to summarise,\ | |
| if it is in your list, focusing on any aspects that mention {topics}, \n | |
| Review: ```{prod_review}``` | |
| """ | |
| ''', language = 'python') | |
| st.markdown(""" | |
| - The prompt above is a template for us to build our first app next week. | |
| - We hope to create an app that can only pass the user input into those pre-defined variables | |
| - Therefore, user only need very easy interface to get the desired output. | |
| """) | |
| st.markdown(""" | |
| ## With Hugging Chat | |
| """) | |
| st.code(''' | |
| # we need to install the hugchat library fistly | |
| ## in your notebook, copy and execute the following code | |
| !pip install hugchat | |
| ''') | |
| st.markdown(" - Now we can call the Hugging chat API and let it do the same job as ChatGPT") | |
| st.code(''' | |
| from hugchat.login import Login | |
| from hugchat import hugchat | |
| sign = Login(email, passwd) ## You need to here are your sign up email and password for Hugging Face | |
| ## Just copy these two lines and execute it, don't worry about it too much | |
| cookies = sign.login() | |
| chatbot = hugchat.ChatBot(cookies=cookies.get_dict()) | |
| ## get the response from the Hugging Chat | |
| res = chatbot.chat(prompt) | |
| print(res) | |
| ''', language = 'python') | |
| st.markdown(""" | |
| - As you might see, Hugging chat can do the job of summarization, \n | |
| - But in terms of satisfy specific requirement from us, it has limitation compare to ChatGPT, \n | |
| - ChatGPT is more advanced and it can follow human instruction clearly.\n | |
| - The advantage of Hugging Chat is that it is free, so you might do as many experiment as you wish, \n | |
| without cost you money. | |
| - In our app, hugging chat would be a good alternative to ChatGPT for some case. | |
| """) | |