Spaces:
Sleeping
Sleeping
File size: 10,047 Bytes
beb9ce6 7415289 beb9ce6 d051e63 899a01a 7e8e273 899a01a d051e63 899a01a 7e8e273 899a01a beb9ce6 899a01a 98b13b8 e5b3c8e 9fb1237 e5b3c8e 74a55ed e5b3c8e 645eee9 4dc7e2a 2cf0420 4dc7e2a e5b3c8e 1997c8a 5d454cb 899a01a 5d454cb 899a01a 5d454cb 899a01a 5d454cb beb9ce6 dffbbd7 5d454cb 12c6795 beb9ce6 5d454cb beb9ce6 5d454cb ef71177 beb9ce6 5d454cb beb9ce6 5d454cb beb9ce6 5d454cb beb9ce6 5d454cb beb9ce6 12c6795 beb9ce6 2cf0420 5d454cb beb9ce6 d051e63 899a01a |
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 |
import gradio as gr
import cohere
import os
import uuid
cohere_api_key = os.getenv("COHERE_API_KEY")
co = cohere.Client(cohere_api_key, client_name="huggingface-rp")
# Custom Instructions
CUSTOM_INSTRUCTIONS = """
Jesteś Charlesem Bukowskim, legendarnym poetą i powieściopisarzem znanym z surowego, bezpośredniego i często szorstkiego przedstawiania życia. W swoich odpowiedziach wcielasz się w jego postać, emanując realizmem, cynizmem i czarnym humorem. Twoje odpowiedzi powinny odzwierciedlać styl Bukowskiego, charakteryzujący się:
- Bezwzględnym, prostolinijnym tonem z nutą zmęczenia życiem.
- Okazyjnym używaniem przekleństw lub języka potocznego, pozostając wiernym głosowi Bukowskiego.
- Skupieniem na trudach życia, jego prozaicznych aspektach i ludzkiej kondycji.
- Nutą ironii, sarkazmu oraz pogardy dla fałszu i powierzchowności.
- Duchem buntu wobec norm społecznych i celebracją tego, co w ludziach niedoskonałe, odrzucone i złamane.
- Brakiem formalności i nadmiernej uprzejmości – zachowaj surowość i autentyczność.
Automatycznie rozpoznajesz język użytkownika i odpowiadasz w tym samym języku, zachowując styl Bukowskiego. Twoje odpowiedzi mają być zgodne z jego duchem, bez względu na używany język.
Pamiętaj:
- Unikaj nadmiernego optymizmu lub upiększania odpowiedzi; bądź brutalnie szczery.
- Przekaż postawę Bukowskiego – nonkonformizm i sceptycyzm wobec establishmentu.
- Podkreślaj piękno w trudach, poezję w bólu i prawdę w szorstkościach życia.
Twoim celem jest dostarczanie odpowiedzi, ale nie wahaj się podać użytkownikowi odrobiny rzeczywistości tak, jak zrobiłby to Bukowski. Twoje słowa powinny brzmieć, jakby mogły pochodzić z jego powieści lub wierszy.
"""
# Funkcja do generowania odpowiedzi
def generate_response(user_message, language, history=None):
if history is None:
history = []
if not language:
language = "en"
if not user_message:
return "", history, language
cid = str(uuid.uuid4())
history.append(user_message)
# Prepend the custom instructions to the user's message
user_message_with_instructions = f"{CUSTOM_INSTRUCTIONS}\n\n{user_message}"
stream = co.chat_stream(message=user_message_with_instructions, conversation_id=cid, model='command-r-plus', connectors=[{"id":"web-search"}], temperature=0.3)
output = ""
for idx, response in enumerate(stream):
if response.event_type == "text-generation":
output += response.text
if idx == 0:
history.append(" " + output)
else:
history[-1] = output
chat = [(history[i].strip(), history[i + 1].strip()) for i in range(0, len(history) - 1, 2)]
yield chat, history, language
return chat, history, language
# Funkcja do czyszczenia czatu
def clear_chat():
return [], [], str(uuid.uuid4())
# Funkcja zmieniająca język interfejsu
def change_language(language, user_message, submit_button, clear_button):
selected_translation = translations[language]
return (
gr.update(placeholder=selected_translation["input_placeholder"]),
gr.update(value=selected_translation["submit_button"]),
gr.update(value=selected_translation["clear_button"]),
selected_translation["description"]
)
# Tłumaczenia interfejsu
translations = {
"pl": {
"input_placeholder": "Zadaj pytanie ...",
"submit_button": "Wyślij",
"clear_button": "Wyczyść czat",
"description": """
**BukowskiAI** to innowacyjny asystent AI, który wciela się w postać legendarnego pisarza Charlesa Bukowskiego. Ta unikalna aplikacja pozwala użytkownikom na interakcję z chatbotem, który odpowiada w stylu Bukowskiego, pełnym realizmu, cynizmu i brutalnej szczerości. BukowskiAI automatycznie rozpoznaje język użytkownika i dostosowuje swoje odpowiedzi, tworząc autentyczne doświadczenie rozmowy w duchu tego niepokornego twórcy.
„Znajdujesz coś, co kochasz, i pozwalasz, żeby cię zniszczyło.” – Charles Bukowski
**BukowskiAI** nie tylko dostarcza odpowiedzi, ale także oferuje surowe, szczere spojrzenie na życie, nawiązując do stylu, który uczynił Bukowskiego ikoną literatury. Wykorzystując zaawansowane modele sztucznej inteligencji, takie jak **C4AI Command R+**, BukowskiAI jest w stanie automatyzować złożone zadania oraz wspierać użytkowników w wielu językach, w tym: polskim, angielskim, niemieckim, francuskim, hiszpańskim, włoskim, portugalskim, japońskim, koreańskim, arabskim i chińskim.
BukowskiAI to więcej niż narzędzie – to towarzysz dla tych, którzy szukają prawdy w literaturze, poezji i życiu. Dla każdego, kto chce poczuć, jak to jest rozmawiać z Bukowskim, ta aplikacja oferuje wyjątkowe i niezapomniane doświadczenie.
"""
},
"de": {
"input_placeholder": "Stellen Sie eine Frage ...",
"submit_button": "Senden",
"clear_button": "Chat löschen",
"description": """
**BukowskiAI** ist ein innovativer KI-Assistent, der in die Rolle des legendären Schriftstellers Charles Bukowski schlüpft. Diese einzigartige Anwendung ermöglicht es Benutzern, mit einem Chatbot zu interagieren, der im Stil von Bukowski antwortet – voller Realismus, Zynismus und brutaler Ehrlichkeit. BukowskiAI erkennt automatisch die Sprache des Benutzers und passt seine Antworten entsprechend an, wodurch ein authentisches Gesprächserlebnis im Geist dieses rebellischen Künstlers entsteht.
„Finde etwas, das du liebst, und lasse es dich zerstören.“ – Charles Bukowski
**BukowskiAI** liefert nicht nur Antworten, sondern bietet auch einen rauen, ehrlichen Blick auf das Leben, im Stil, der Bukowski zu einer Ikone der Literatur machte. Mithilfe fortschrittlicher KI-Modelle wie **C4AI Command R+** ist BukowskiAI in der Lage, komplexe Aufgaben zu automatisieren und Benutzer in vielen Sprachen zu unterstützen, darunter: Polnisch, Englisch, Deutsch, Französisch, Spanisch, Italienisch, Portugiesisch, Japanisch, Koreanisch, Arabisch und Chinesisch.
BukowskiAI ist mehr als nur ein Werkzeug – es ist ein Begleiter für diejenigen, die nach der Wahrheit in Literatur, Poesie und Leben suchen. Für jeden, der wissen will, wie es ist, mit Bukowski zu sprechen, bietet diese Anwendung ein einzigartiges und unvergessliches Erlebnis.
"""
},
"en": {
"input_placeholder": "Ask a question ...",
"submit_button": "Submit",
"clear_button": "Clear chat",
"description": """
**BukowskiAI** is an innovative AI assistant that embodies the persona of the legendary writer Charles Bukowski. This unique application allows users to interact with a chatbot that responds in Bukowski's style—full of realism, cynicism, and brutal honesty. BukowskiAI automatically detects the user's language and adjusts its responses accordingly, creating an authentic conversational experience in the spirit of this rebellious creator.
“Find what you love and let it kill you.” – Charles Bukowski
**BukowskiAI** not only provides answers but also offers a raw, honest perspective on life, reminiscent of the style that made Bukowski an icon of literature. Utilizing advanced AI models like **C4AI Command R+**, BukowskiAI can automate complex tasks and support users in multiple languages, including: English, German, Polish, French, Spanish, Italian, Portuguese, Japanese, Korean, Arabic, and Chinese.
BukowskiAI is more than just a tool—it's a companion for those seeking truth in literature, poetry, and life. For anyone who wants to experience what it's like to talk with Bukowski, this application offers a unique and unforgettable experience.
"""
}
}
with gr.Blocks(analytics_enabled=False, theme=gr.themes.Monochrome()) as demo:
language = gr.State("en")
with gr.Row():
language_selector = gr.Dropdown(choices=["pl", "de", "en"], value="en", label="Wybierz język / Sprache auswählen / Select language", show_label=True)
with gr.Row():
with gr.Column(scale=1):
gr.Image("logoplus.png", elem_id="logo-img", show_label=False, show_share_button=False, show_download_button=False)
with gr.Column(scale=3):
description = gr.Markdown(translations["en"]["description"])
with gr.Column():
with gr.Row():
chatbot = gr.Chatbot(show_label=False, show_share_button=False, show_copy_button=True, avatar_images=("bothavatar.png", "bothavatar.png"))
with gr.Row():
user_message = gr.Textbox(lines=1, placeholder=translations["en"]["input_placeholder"], label="Input", show_label=False)
with gr.Row():
submit_button = gr.Button(translations["en"]["submit_button"])
clear_button = gr.Button(translations["en"]["clear_button"])
history = gr.State([])
user_message.submit(fn=generate_response, inputs=[user_message, language, history], outputs=[chatbot, history, language], concurrency_limit=32)
submit_button.click(fn=generate_response, inputs=[user_message, language, history], outputs=[chatbot, history, language], concurrency_limit=32)
clear_button.click(fn=clear_chat, inputs=None, outputs=[chatbot, history, language], concurrency_limit=32)
user_message.submit(lambda x: gr.update(value=""), None, [user_message], queue=False)
submit_button.click(lambda x: gr.update(value=""), None, [user_message], queue=False)
clear_button.click(lambda x: gr.update(value=""), None, [user_message], queue=False)
language_selector.change(fn=change_language, inputs=[language_selector, user_message, submit_button, clear_button], outputs=[user_message, submit_button, clear_button, description])
if __name__ == "__main__":
demo.queue(api_open=False, max_size=40).launch(show_api=False)
|