File size: 7,238 Bytes
331ac77 7b9cd2c 331ac77 16da902 331ac77 d99c739 331ac77 24155be 331ac77 24155be 331ac77 7b9cd2c 331ac77 7ecd090 24155be 7ecd090 331ac77 7ecd090 331ac77 1d69635 331ac77 24155be 331ac77 d99c739 1d69635 331ac77 24155be 331ac77 7b9cd2c 331ac77 9d53066 24155be 7b9cd2c d3bd39a 331ac77 7b9cd2c 331ac77 7b9cd2c |
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 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 |
import gradio as gr
import requests
import json
import os
# Definir variáveis de ambiente ou substituir com sua chave de API real
API_KEY = os.getenv('API_KEY')
INVOKE_URL = "https://api.nvcf.nvidia.com/v2/nvcf/pexec/functions/df2bee43-fb69-42b9-9ee5-f4eabbeaf3a8"
headers = {
"Authorization": f"Bearer {API_KEY}",
"accept": "text/event-stream",
"content-type": "application/json",
}
BASE_SYSTEM_MESSAGE = "I carefully provide accurate, factual, thoughtful, nuanced answers and am brilliant at reasoning."
def clear_chat(chat_history_state, chat_message):
print("Clearing chat...")
chat_history_state = []
chat_message = ''
return chat_history_state, chat_message
def user(message, history):
print(f"User message: {message}")
history = history or []
history.append({"role": "user", "content": message})
return history
import gradio as gr
import requests
import json
import os
# Definir variáveis de ambiente ou substituir com sua chave de API real
API_KEY = os.getenv('API_KEY')
INVOKE_URL = "https://api.nvcf.nvidia.com/v2/nvcf/pexec/functions/df2bee43-fb69-42b9-9ee5-f4eabbeaf3a8"
headers = {
"Authorization": f"Bearer {API_KEY}",
"accept": "text/event-stream",
"content-type": "application/json",
}
BASE_SYSTEM_MESSAGE = "I carefully provide accurate, factual, thoughtful, nuanced answers and am brilliant at reasoning."
def clear_chat(chat_history_state, chat_message):
print("Clearing chat...")
chat_history_state = []
chat_message = ''
return chat_history_state, chat_message
def user(message, history):
print(f"User message: {message}")
history = history or []
history.append({"role": "user", "content": message})
return history
def call_api(history, max_tokens, temperature, top_p, system_message="", seed=42):
print("Calling API...")
messages = []
# Adicionando a mensagem de sistema, se presente
if system_message:
messages.append({"role": "system", "content": system_message})
# Adicionando mensagens de usuário e assistente da conversa
for msg in history:
messages.append({"role": msg["role"], "content": msg["content"]})
# Verificando se a última mensagem é do usuário, se não, ajuste conforme necessário
if not messages or messages[-1]["role"] != "user":
print("A última mensagem deve ser do usuário com conteúdo preenchido.")
return ""
payload = {
"messages": messages,
"temperature": temperature,
"top_p": top_p,
"max_tokens": max_tokens,
"seed": seed,
"stream": True
}
response = requests.post(INVOKE_URL, headers=headers, json=payload, stream=True)
full_response = ""
for line in response.iter_lines():
if line:
decoded_line = line.decode("utf-8").strip()
if decoded_line.startswith("data:"):
json_data = json.loads(decoded_line[5:])
if "choices" in json_data and len(json_data["choices"]) > 0:
deltas = json_data["choices"][0].get("delta", {})
if "content" in deltas:
full_response += deltas["content"]
print(f"Full API response: {full_response}")
return full_response
def chat(history, system_message, max_tokens, temperature, top_p, top_k, repetition_penalty):
print("Starting chat...")
system_message_to_use = system_message if system_message.strip() else BASE_SYSTEM_MESSAGE
if history and history[-1]["role"] == "user":
history = user(history[-1]["content"], history)
else:
history.append({"role": "system", "content": system_message_to_use})
assistant_response = call_api(history, max_tokens, temperature, top_p)
if assistant_response:
history.append({"role": "assistant", "content": assistant_response})
return history, "", ""
# Gradio interface setup
with gr.Blocks() as demo:
with gr.Row():
with gr.Column():
gr.Markdown("## Your Chatbot Interface")
chatbot = gr.Chatbot()
message = gr.Textbox(label="What do you want to chat about?", placeholder="Ask me anything.", lines=3)
submit = gr.Button(value="Send message")
clear = gr.Button(value="New topic")
system_msg = gr.Textbox(BASE_SYSTEM_MESSAGE, label="System Message", placeholder="System prompt.", lines=5)
max_tokens = gr.Slider(20, 512, label="Max Tokens", step=20, value=500)
temperature = gr.Slider(0.0, 1.0, label="Temperature", step=0.1, value=0.7)
top_p = gr.Slider(0.0, 1.0, label="Top P", step=0.05, value=0.95)
chat_history_state = gr.State([])
def update_chatbot(message, chat_history):
print("Updating chatbot...")
chat_history = user(message, chat_history)
chat_history, _, _ = chat(chat_history, system_msg.value, max_tokens.value, temperature.value, top_p.value, 40, 1.1)
return chat_history, chat_history, ""
submit.click(
fn=update_chatbot,
inputs=[message, chat_history_state],
outputs=[chatbot, chat_history_state, message]
)
clear.click(
fn=clear_chat,
inputs=[chat_history_state, message],
outputs=[chat_history_state, message]
)
demo.launch()
def chat(history, system_message, max_tokens, temperature, top_p, top_k, repetition_penalty):
print("Starting chat...")
system_message_to_use = system_message if system_message.strip() else BASE_SYSTEM_MESSAGE
if history and history[-1]["role"] == "user":
history = user(history[-1]["content"], history)
else:
history.append({"role": "system", "content": system_message_to_use})
assistant_response = call_api(history, max_tokens, temperature, top_p)
if assistant_response:
history.append({"role": "assistant", "content": assistant_response})
return history, "", ""
# Gradio interface setup
with gr.Blocks() as demo:
with gr.Row():
with gr.Column():
gr.Markdown("## Your Chatbot Interface")
chatbot = gr.Chatbot()
message = gr.Textbox(label="What do you want to chat about?", placeholder="Ask me anything.", lines=3)
submit = gr.Button(value="Send message")
clear = gr.Button(value="New topic")
system_msg = gr.Textbox(BASE_SYSTEM_MESSAGE, label="System Message", placeholder="System prompt.", lines=5)
max_tokens = gr.Slider(20, 512, label="Max Tokens", step=20, value=500)
temperature = gr.Slider(0.0, 1.0, label="Temperature", step=0.1, value=0.7)
top_p = gr.Slider(0.0, 1.0, label="Top P", step=0.05, value=0.95)
chat_history_state = gr.State([])
def update_chatbot(message, chat_history):
print("Updating chatbot...")
chat_history = user(message, chat_history)
chat_history, _, _ = chat(chat_history, system_msg.value, max_tokens.value, temperature.value, top_p.value, 40, 1.1)
return chat_history, chat_history, ""
submit.click(
fn=update_chatbot,
inputs=[message, chat_history_state],
outputs=[chatbot, chat_history_state, message]
)
clear.click(
fn=clear_chat,
inputs=[chat_history_state, message],
outputs=[chat_history_state, message]
)
demo.launch() |