Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from gradio_client import Client | |
| import requests | |
| # Создаем клиент для взаимодействия с API | |
| client = Client("llamameta/Pixtral-Large-Instruct-2411") | |
| def respond( | |
| message, | |
| history: list[tuple[str, str]], | |
| system_message, | |
| max_tokens, | |
| temperature, | |
| top_p, | |
| ): | |
| if not message: | |
| return history, "" | |
| # Формируем сообщения для отправки в API | |
| messages = [{"role": "system", "content": system_message}] | |
| 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 = client.predict( | |
| message=message, | |
| system_message=system_message, | |
| max_tokens=max_tokens, | |
| temperature=temperature, | |
| top_p=top_p, | |
| api_name="/chat" | |
| ) | |
| # Обновляем историю сообщений | |
| history.append((message, response)) | |
| return history, "" | |
| # Ссылка на файл CSS | |
| css_url = "https://neurixyufi-aihub.static.hf.space/style.css" | |
| # Получение CSS по ссылке | |
| response = requests.get(css_url) | |
| css = response.text + " .gradio-container{max-width: 700px !important} h1{text-align:center} #component-4 { height: 70vh !important; }" | |
| # Создаем интерфейс с использованием gr.Blocks | |
| with gr.Blocks(css=css) as demo: | |
| gr.Markdown("# Чат с Pixtral") | |
| with gr.Row(): | |
| with gr.Column(): | |
| chatbot = gr.Chatbot(show_label=False) | |
| message = gr.Textbox(label="Введите ваше сообщение", placeholder="Введите ваше сообщение здесь...", lines=3, container=False) | |
| submit = gr.Button("Отправить") | |
| with gr.Accordion("Настройки модели", open=False): | |
| system_message = gr.Textbox(value="Ты - дружелюбный ии, способный помочь в чём угодно и в любой ситуации!", placeholder="Ты - дружелюбный ии, способный помочь в чём угодно и в любой ситуации!", label="Системное сообщение", lines=2) | |
| max_tokens = gr.Slider(minimum=100, maximum=18000, value=18000, step=1, label="Максимальное количество новых токенов") | |
| temperature = gr.Slider(minimum=0.0, maximum=1.0, value=0.7, step=0.1, label="Температура") | |
| top_p = gr.Slider(minimum=0.0, maximum=1.0, value=0.95, step=0.05, label="Top-p (нуклеарное сэмплирование)") | |
| # Обработка отправки сообщения | |
| submit.click( | |
| fn=respond, | |
| inputs=[message, chatbot, system_message, max_tokens, temperature, top_p], | |
| outputs=[chatbot, message] | |
| ) | |
| # Обработка отправки сообщения при нажатии Ctrl+Enter | |
| message.submit( | |
| fn=respond, | |
| inputs=[message, chatbot, system_message, max_tokens, temperature, top_p], | |
| outputs=[chatbot, message] | |
| ) | |
| # Запускаем интерфейс | |
| if __name__ == "__main__": | |
| demo.queue(max_size=250).launch(show_api=False, share=False) | |