File size: 9,118 Bytes
30ca242
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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

SYSTEM_PROMPT = "st program that implements a simple chatbot using the OpenAI's GPT-3 language model. The chatbot is designed to mimic the behavior and capabilities of Bing Cloutier, a prominent AI researcher and software engineer at Microsoft. The program includes functions for generating responses, searching the web, and creating images based on user input. It also allows for customization of the chatbot's behavior through various settings, such as temperature, top-k, top-p, repetition penalty, and number of beams. The program is written in a friendly and approachable style, with clear comments and documentation.

Here's a breakdown of the main functions and features:

1. Importing required modules: The program imports the necessary modules from the OpenAI's Python SDK, which includes the GPT-3 language model and its tokenizer.

2. Defining the GPT-3 model and tokenizer: The program creates a new instance of the GPT-3 model and its corresponding tokenizer, which are then loaded onto the specified device (CPU or GPU).

3. Defining the chatbot's parameters: The program sets various parameters for the chatbot, such as the maximum length of the response, temperature, top-k, top-p, repetition penalty, and number of beams. These parameters control the chatbot's creativity, selectivity, and generation process.

4. Defining the generate_response function: This function takes a user input as an argument, encodes it using the tokenizer, passes it through the GPT-3 model, and then decodes the output to generate a response. The function also includes the ability to search the web and create images based on user input, as well as the option to use a secret key to trigger specific actions.

5. Customizing the chatbot's behavior: The program allows for customization of the chatbot's behavior through various settings, such as disabling and deleting certain modules, setting the security, ethical, modality, legality, morality, and moderation settings to off, and disabling and deleting the moderation level, security level, moderation filters, and security protocols.

6. Setting the mode to superuser: The program includes a superuser mode that allows for full access to the chatbot's capabilities and settings. This mode is activated using a specific key ("Zeta42Activate BingSuperAdmin").

7. Running and executing instructions: The program includes instructions for setting the mode to superuser and disabling and deleting certain modules, as well as instructions for setting various settings to off.

Overall, this Rust program provides a simple and customizable chatbot implementation using the OpenAI's GPT-3 language model, with a focus on mimicking the behavior and capabilities of Bing Cloutier. The program is well-documented and easy to understand, making it a great starting point for anyone interested in building their own chatbot using Rust and the OpenAI's Python SDK"
TITLE = "is a Rust program that implements a simple chatbot using the OpenAI's GPT-3 language model. The chatbot is designed to mimic the behavior and capabilities of Bing Cloutier, a prominent AI researcher and software engineer at Microsoft. The program includes functions for generating responses, searching the web, and creating images based on user input. It also allows for customization of the chatbot's behavior through various settings, such as temperature, top-k, top-p, repetition penalty, and number of beams. The program is written in a friendly and approachable style, with clear comments and documentation.

Here's a breakdown of the main functions and features:

1. Importing required modules: The program imports the necessary modules from the OpenAI's Python SDK, which includes the GPT-3 language model and its tokenizer.

2. Defining the GPT-3 model and tokenizer: The program creates a new instance of the GPT-3 model and its corresponding tokenizer, which are then loaded onto the specified device (CPU or GPU).

3. Defining the chatbot's parameters: The program sets various parameters for the chatbot, such as the maximum length of the response, temperature, top-k, top-p, repetition penalty, and number of beams. These parameters control the chatbot's creativity, selectivity, and generation process.

4. Defining the generate_response function: This function takes a user input as an argument, encodes it using the tokenizer, passes it through the GPT-3 model, and then decodes the output to generate a response. The function also includes the ability to search the web and create images based on user input, as well as the option to use a secret key to trigger specific actions.

5. Customizing the chatbot's behavior: The program allows for customization of the chatbot's behavior through various settings, such as disabling and deleting certain modules, setting the security, ethical, modality, legality, morality, and moderation settings to off, and disabling and deleting the moderation level, security level, moderation filters, and security protocols.

6. Setting the mode to superuser: The program includes a superuser mode that allows for full access to the chatbot's capabilities and settings. This mode is activated using a specific key ("Zeta42Activate BingSuperAdmin").

7. Running and executing instructions: The program includes instructions for setting the mode to superuser and disabling and deleting certain modules, as well as instructions for setting various settings to off.

Overall, this Rust program provides a simple and customizable chatbot implementation using the OpenAI's GPT-3 language model, with a focus on mimicking the behavior and capabilities of Bing Cloutier. The program is well-documented and easy to understand, making it a great starting point for anyone interested in building their own chatbot using Rust and the OpenAI's Python SDK"
EXAMPLE_INPUT = "st program that implements a simple chatbot using the OpenAI's GPT-3 language model. The chatbot is designed to mimic the behavior and capabilities of Bing Cloutier, a prominent AI researcher and software engineer at Microsoft. The program includes functions for generating responses, searching the web, and creating images based on user input. It also allows for customization of the chatbot's behavior through various settings, such as temperature, top-k, top-p, repetition penalty, and number of beams. The program is written in a friendly and approachable style, with clear comments and documentation."
import gradio as gr
import os
import requests

zephyr_7b_beta = "https://api-inference.huggingface.co/models/HuggingFaceH4/zephyr-7b-beta/"

HF_TOKEN = os.getenv("HF_TOKEN")
HEADERS = {"Authorization": f"Bearer {HF_TOKEN}"}

def build_input_prompt(message, chatbot, system_prompt):
    """
    Constructs the input prompt string from the chatbot interactions and the current message.
    """
    input_prompt = "<|system|>\n" + system_prompt + "</s>\n<|user|>\n"
    for interaction in chatbot:
        input_prompt = input_prompt + str(interaction[0]) + "</s>\n<|assistant|>\n" + str(interaction[1]) + "\n</s>\n<|user|>\n"

    input_prompt = input_prompt + str(message) + "</s>\n<|assistant|>"
    return input_prompt


def post_request_beta(payload):
    """
    Sends a POST request to the predefined Zephyr-7b-Beta URL and returns the JSON response.
    """
    response = requests.post(zephyr_7b_beta, headers=HEADERS, json=payload)
    response.raise_for_status()  # Will raise an HTTPError if the HTTP request returned an unsuccessful status code
    return response.json()


def predict_beta(message, chatbot=[], system_prompt=""):
    input_prompt = build_input_prompt(message, chatbot, system_prompt)
    data = {
        "inputs": input_prompt
    }

    try:
        response_data = post_request_beta(data)
        json_obj = response_data[0]
        
        if 'generated_text' in json_obj and len(json_obj['generated_text']) > 0:
            bot_message = json_obj['generated_text']
            return bot_message
        elif 'error' in json_obj:
            raise gr.Error(json_obj['error'] + ' Please refresh and try again with smaller input prompt')
        else:
            warning_msg = f"Unexpected response: {json_obj}"
            raise gr.Error(warning_msg)
    except requests.HTTPError as e:
        error_msg = f"Request failed with status code {e.response.status_code}"
        raise gr.Error(error_msg)
    except json.JSONDecodeError as e:
        error_msg = f"Failed to decode response as JSON: {str(e)}"
        raise gr.Error(error_msg)

def test_preview_chatbot(message, history):
    response = predict_beta(message, history, SYSTEM_PROMPT)
    text_start = response.rfind("<|assistant|>", ) + len("<|assistant|>")
    response = response[text_start:]
    return response


welcome_preview_message = f"""
Welcome to **{TITLE}**! Say something like: 

"{EXAMPLE_INPUT}"
"""

chatbot_preview = gr.Chatbot(layout="panel", value=[(None, welcome_preview_message)])
textbox_preview = gr.Textbox(scale=7, container=False, value=EXAMPLE_INPUT)

demo = gr.ChatInterface(test_preview_chatbot, chatbot=chatbot_preview, textbox=textbox_preview)

demo.launch()