File size: 3,153 Bytes
eb450e3 7515381 eb450e3 09742af eb450e3 09742af eb450e3 09742af eb450e3 09742af eb450e3 7515381 09742af eb450e3 09742af eb450e3 09742af eb450e3 09742af 7515381 09742af 1345715 09742af eb450e3 1345715 7515381 1345715 eb450e3 91e7ac0 |
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 |
import gradio as gr
from huggingface_hub import InferenceClient
import time
# Cliente da Inference API
client = InferenceClient("lambdaindie/lambdai")
# Função para responder no chatbot
def respond(
message,
history: list[tuple[str, str]],
system_message,
max_tokens,
temperature,
top_p,
):
messages = [{"role": "system", "content": system_message}]
# Adicionando a história da conversa
for val in history:
if val[0]:
messages.append({"role": "user", "content": val[0]})
if val[1]:
messages.append({"role": "assistant", "content": val[1]})
messages.append({"role": "user", "content": message})
response = ""
# Mostrando o indicador de "thinking"
yield "Thinking... 🤔"
time.sleep(1) # Atraso artificial para simular tempo de processamento
# Fluxo de resposta do cliente da API
for message in client.chat_completion(
messages,
max_tokens=max_tokens,
stream=True,
temperature=temperature,
top_p=top_p,
):
token = message.choices[0].delta.content
response += token
yield response
# Interface do Gradio com chat customizado
demo = gr.ChatInterface(
respond,
additional_inputs=[
gr.Textbox(value="", label="System message", lines=1, placeholder="System message..."),
gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
gr.Slider(
minimum=0.1,
maximum=1.0,
value=0.95,
step=0.05,
label="Top-p (nucleus sampling)",
),
],
title="Lambda-v1-1B", # Título na interface
description="Chatbot alimentado pelo modelo Lambdai", # Descrição simples
theme="dark", # Usando o tema Dark do Gradio
)
# Customização de CSS simples para JetBrains Mono e visual Dark
demo.css = """
* {
font-family: 'JetBrains Mono', monospace;
}
.gradio-container {
background-color: #121212;
color: #ffffff;
border-radius: 10px;
padding: 20px;
}
.chatbox {
background-color: #181818;
border-radius: 8px;
color: #f5f5f5;
border: 1px solid #333;
}
.gr-button {
background-color: #4a90e2;
color: white;
border-radius: 5px;
padding: 10px 20px;
font-size: 16px;
}
.gr-button:hover {
background-color: #357ab7;
}
.gr-slider {
background-color: #333;
color: #f5f5f5;
border-radius: 8px;
}
.gr-chatbox-container {
background-color: #1f1f1f;
border-radius: 10px;
}
.gr-output {
font-family: 'JetBrains Mono', monospace;
color: #f5f5f5;
}
.gr-input {
font-family: 'JetBrains Mono', monospace;
color: #f5f5f5;
}
.gr-chatbox .message {
font-family: 'JetBrains Mono', monospace;
}
.gr-button.gr-loading {
background-color: #f39c12;
}
"""
if __name__ == "__main__":
demo.launch() |