WeOn / app.py
wendellast's picture
feat: dataset setiments ananalite ok
2ba3a3d
from typing import List, Optional
import gradio as gr
from datasets import load_dataset
from huggingface_hub import InferenceClient
from dataset.dataset import get_response_from_huggingface_dataset
from prompt.prompt import prompt_for_template, template_bot
from schema.schema import WeonTest
from settings.load_env import load_token
description: str = WeonTest.description
rules: str = WeonTest.rules
behavior: str = WeonTest.comportamento
examples: str = WeonTest.examples
MODEL: str = "meta-llama/Llama-3.2-3B-Instruct"
#TOKEN: str = load_token("token_env")
TEMPLATE_BOT = template_bot()
prompt_template = prompt_for_template(TEMPLATE_BOT)
DATASET = load_dataset("wendellast/weon-messagens")
client: InferenceClient = InferenceClient(model=MODEL)
def respond(
message: str,
history: List[dict],
system_message: str,
max_tokens: int,
temperature: float,
top_p: float,
) -> any:
response: Optional[str] = get_response_from_huggingface_dataset(message, DATASET)
if response:
yield response
return
historico = "\n".join(
f"{entry['role'].capitalize()}: {entry['content']}" for entry in history
)
prompt: str = prompt_template.format(
description=description,
regras=rules,
comportamento=behavior,
exemplos=examples,
mensagem=message,
)
print(prompt)
messages: List[dict] = [{"role": "system", "content": prompt}]
response: str = ""
for message in client.chat_completion(
messages,
max_tokens=max_tokens,
stream=True,
temperature=temperature,
top_p=top_p,
):
token: str = message.choices[0].delta.content
response += token
yield response
demo: gr.ChatInterface = gr.ChatInterface(
respond,
additional_inputs=[
gr.Textbox(value="", label="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="WeOn-BOT",
type="messages",
)
if __name__ == "__main__":
demo.launch(show_error=True)