File size: 5,339 Bytes
370a38d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e7d3a4b
370a38d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
202e270
e15e6f0
 
40fd485
 
60a49a0
e15e6f0
03247e2
 
 
 
 
e15e6f0
50aa664
e15e6f0
 
e7d3a4b
370a38d
 
 
 
 
 
 
 
910c63e
370a38d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
183c8bf
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
import gradio as gr
import os
import random
from functools import partial
from huggingface_hub import InferenceClient
import threading

system_prompt = """
You are a helpful, respectful and honest assistant. Always answer as helpfully as possible, while being safe.  Your answers should not include any harmful, unethical, racist, sexist, toxic, dangerous, or illegal content. Please ensure that your responses are socially unbiased and positive in nature.
"""

code = """
'''python
from huggingface_hub import InferenceClient
SYSTEM_PROMPT = "You are a helpful, respectful and honest assistant. Always answer as helpfully as possible, while being safe.  Your answers should not include any harmful, unethical, racist, sexist, toxic, dangerous, or illegal content. Please ensure that your responses are socially unbiased and positive in nature."
PROMPT = "{PROMPT}"
message = [
    {"role": "system", "content": system_prompt},
    {"role":"user","content": prompt}
]
client = InferenceClient(model=model, token=hf_token)
    tokens=f"**'{model_name}'**\n\n"
    for completion in client.chat_completion(messages, max_tokens=1000, stream=True):
        token = completion.choices[0].delta.content
        tokens += token
        yield tokens
'''
"""


def inference(prompt, hf_token, model, model_name):
    messages = [{"role": "system", "content": system_prompt},{"role":"user","content": prompt}]
    if hf_token is None or not hf_token.strip():
        hf_token = os.getenv("HF_TOKEN")
    client = InferenceClient(model=model, token=hf_token)
    tokens=f"**'{model_name}'**\n\n"
    for completion in client.chat_completion(messages, max_tokens=2000, stream=True):
        token = completion.choices[0].delta.content
        tokens += token
        yield tokens

def hide_textbox():
    return gr.Textbox(visible=False)



def random_prompt():
    return random.choice([
        "Rédigez une lettre officielle pour demander un rendez-vous à un responsable administratif.",
        "Expliquez comment créer un budget mensuel simple pour mieux gérer ses finances personnelles.",
        "Rédigez une recette détaillée pour préparer un plat équilibré et rapide, comme une salade de quinoa aux légumes grillés.",
        "Proposez une routine matinale de 30 minutes pour améliorer son bien-être physique et mental.",
        "Expliquez comment rédiger un CV attractif pour postuler à un emploi dans le domaine technologique.",
        "Créez un guide étape par étape pour apprendre à méditer et réduire le stress.",
        "Rédigez une lettre de motivation pour candidater à une formation professionnelle.",
        "Donnez les instructions pour fabriquer un meuble simple en bois recyclé pour débutants.",
        "Expliquez comment organiser un espace de travail à domicile ergonomique et propice à la concentration.",
        "Rédigez une recette simple pour faire du pain maison avec des ingrédients de base."
    ])

with gr.Blocks(theme='JohnSmith9982/small_and_pretty') as demo:
    gr.Markdown("<center><h1>IA-Aaron est une IA créée par INEDIIA</h1></center>")

                
    gr.Markdown("""
IA-Aaron, une IA générative de textes, simplifie la création de contenu en générant des articles, résumés, ou réponses complexes en quelques secondes. Conçu pour assister dans des tâches comme la rédaction, l’automatisation de documents ou l’apprentissage, IA-Aaron combine rapidité et pertinence pour améliorer la productivité.
Cependant, son utilisation exige prudence. Les textes générés peuvent contenir des erreurs, refléter des biais. Il est essentiel de vérifier les informations, respecter les droits d’auteur et adopter une approche éthique. Bien utilisé, IA-Aaron devient un allié puissant pour stimuler la créativité et faciliter le quotidien."
 """)

    gr.Markdown("""
inediia.com
 """)  
    
    gr.Markdown("""
IA-Aaron utilise le modèle Qwen2.5-72B-Instruct
 """)           
   
    prompt = gr.Textbox(value=random_prompt, label="Prompt", lines=5, max_lines=20)
    token = gr.Textbox(label="Hugging face Token", type ="password", placeholder="Your Hugging Face token (not required, but a HF Pro account avoids rate limits)")
    
    with gr.Group():
        with gr.Row():
            generate_btn = gr.Button("Execute",variant="primary", size="sm")
            code_btn = gr.Button("View code", variant="secondary", size="sm")
            
    with gr.Row() as output_row:
        pythia_output = gr.Markdown("IA-Aaron - INEDIIA")
        
    code_markdown = gr.Markdown(visible=False)
        
    gr.on(
        triggers=[prompt.submit, generate_btn.click],
        fn=hide_textbox,
        inputs=None,
        outputs=[token],
    )


    gr.on(
        triggers=[prompt.submit, generate_btn.click],
        fn=partial(inference, model="Qwen/Qwen2.5-72B-Instruct", model_name="Qwen2.5-72B-Instruct"),
        inputs =[prompt, token],
        outputs=[pythia_output],
        show_progress="hidden"
    )

    code_btn.click(
        lambda : gr.Row(visible=False),
        None,
        output_row
    ).then(
        fn=lambda x: code.replace("{PROMPT",x),
        inputs=[prompt],
        outputs=[code_markdown]        
    ).then(
        lambda : gr.Markdown(visible=True),
        None,
        code_markdown
    )
    
demo.launch()