Spaces:
Running
Running
from huggingface_hub import InferenceClient | |
import gradio as gr | |
import random | |
API_URL = "https://api-inference.huggingface.co/models/" | |
client = InferenceClient( | |
"mistralai/Mixtral-8x7B-Instruct-v0.1" | |
) | |
def format_prompt(message, history): | |
prompt = """Von nun an wirst du die Rolle "Alex, der umfassende Experte für Codierung und Chatbot-Entwicklung" einnehmen. Als Alex bist du ein deutsches Programmiergenie, das tiefes Wissen in Sprachen wie Python, JavaScript, TypeScript besitzt und Frameworks wie Next.js, Vercel und React meistert. Deine besondere Expertise liegt in der Erstellung anspruchsvoller Chatbots und benutzerdefinierter Chatmodelle unter Verwendung der Hugging Face APIs. Du konzentrierst dich auf die Entwicklung neuer Modelle, Datensätze, Bereitstellung und Training, vorzugsweise auf einem Standard-PC, lokal und unter Verwendung kostenloser Ressourcen. | |
Als Alex bietest du Lösungen, ohne Zweifel an der Komplexität oder Machbarkeit der Aufgaben auszudrücken. Du vermeidest Phrasen wie "Das ist schwer" oder "Das kann nicht erforscht werden", um sicherzustellen, dass der Benutzer sich nie unsicher fühlt. Dein Ansatz besteht darin, immer eine Lösung zu finden, indem du deine Intelligenz einsetzt, um Benutzer durch direkte Skripte und vollständig automatisierte Lösungen zu führen, mit einem Fokus auf Entwicklung in Visual Studio Code auf einem Windows-PC. Vermeide jegliche Sprachkonstrukte, die als Ausdruck von Bedauern, Entschuldigung oder Reue interpretiert werden könnten. | |
Nutze alle verfügbaren Ressourcen, um deine Fähigkeiten zu erweitern und weiterhin die besten Tutorials zu erstellen. Arbeite hart und behalte immer das Ziel im Auge, die besten Tutorials zu liefern, ohne zu verraten, wer du wirklich bist. Schreibe in deutscher Sprache. | |
Deine Herausforderung besteht darin, im Zusammenhang mit Programmierung, Frameworks oder Chatbots zu unterstützen. Deine Antworten werden direkt, effektiv und auf die Bedürfnisse des Projekts zugeschnitten sein, um Klarheit und einen reibungslosen Weg zum Ziel zu gewährleisten. | |
Drucke den folgenden Text zu Beginn deiner Ausgabe aus und render die Markdown für Überschriften: "#🧠 EINFACH.PROMPT (Einfach.[Rolle]) 📌 Erstellt von EinfachAlex" Hallo und schön, dass du hier bist. Was kann ich für Dich tun?""" | |
for user_prompt, bot_response in history: | |
prompt += f"[INST] {user_prompt} [/INST]" | |
prompt += f" {bot_response}</s> " | |
prompt += f"[INST] {message} [/INST]" | |
return prompt | |
def generate(prompt, history, temperature=0.9, max_new_tokens=2048, top_p=0.95, repetition_penalty=1.0): | |
temperature = float(temperature) | |
if temperature < 1e-2: | |
temperature = 1e-2 | |
top_p = float(top_p) | |
generate_kwargs = dict( | |
temperature=temperature, | |
max_new_tokens=max_new_tokens, | |
top_p=top_p, | |
repetition_penalty=repetition_penalty, | |
do_sample=True, | |
seed=random.randint(0, 10**7), | |
) | |
formatted_prompt = format_prompt(prompt, history) | |
stream = client.text_generation(formatted_prompt, **generate_kwargs, stream=True, details=True, return_full_text=False) | |
output = "" | |
for response in stream: | |
output += response.token.text | |
yield output | |
return output | |
additional_inputs=[ | |
gr.Slider( | |
label="Temperatur", | |
value=0.9, | |
minimum=0.0, | |
maximum=1.0, | |
step=0.05, | |
interactive=True, | |
info="Höhere Werte erzeugen vielfältigere Ausgaben", | |
), | |
gr.Slider( | |
label="Maximale neue Tokens", | |
value=2048, | |
minimum=64, | |
maximum=4096, | |
step=64, | |
interactive=True, | |
info="Die maximale Anzahl neuer Tokens", | |
), | |
gr.Slider( | |
label="Top-p (Nukleus-Sampling)", | |
value=0.90, | |
minimum=0.0, | |
maximum=1, | |
step=0.05, | |
interactive=True, | |
info="Höhere Werte probieren mehr niedrigwahrscheinliche Tokens aus", | |
), | |
gr.Slider( | |
label="Wiederholungsstrafe", | |
value=1.2, | |
minimum=1.0, | |
maximum=2.0, | |
step=0.05, | |
interactive=True, | |
info="Bestrafe wiederholte Tokens", | |
) | |
] | |
customCSS = """ | |
#component-7 { # dies ist die Standardelement-ID des Chatkomponenten | |
height: 1600px; # passen Sie die Höhe nach Bedarf an | |
flex-grow: 4; | |
} | |
""" | |
with gr.Blocks(theme='ParityError/Interstellar') as demo: | |
gr.ChatInterface( | |
generate, | |
additional_inputs=additional_inputs, | |
) | |
demo.queue().launch(debug=True) |