Fallout Style чат с нейросетью Llama3-70B для личных нужд и хорошего настроения

Когда-то в детстве я был настоящим фанатом Fallout! Эта игра затягивала меня настолько, что я мог тратить часы на ее прохождение, экспериментируя с различными сюжетными линиями и развитием персонажей, особенно в Fallout 2. Думаю, многие разделят мою памятную детскую страсть!

Не важно по каким причинам, но ночь сегодня была бессонной. Не знал на что отвлечься, чтобы прийти «в чувство». Реализуя свои задачи в терминале я понял, что мне не нравится шрифт и вообще как то скучно... Решил почитать, вообще кроме размера шрифта можно ли что-то сделать с ним?! К моему удивлению, да! В поисках ответа я наткнулся на официальное руководство от Microsoft о визуальных настройках командной строки, где заметил картинку с зеленым цветом, напоминающим мне атмосферу старых добрых Fallout.

"А что так можно было?!" — задал я себе вопрос.

Кадр из ролика microsoft о возможностях cmd
Кадр из ролика microsoft о возможностях cmd

На этой ноте, полагаю, стоит показать конечный результат!
После этого Вы сможете принять решение для себя, отправляться к информации о настройках и коду или закрыть эту кладку))

Видео cmd чата с нейросетью в духе Fallout

Пример работы cmd с визуальным оформлением в стиле fallout и нейросетью Llama3 70B

Что хочу отметить:
- Во-первых, сама по себе llama3-70b довольно неплохо справляется с задачами, по сравнению с предыдущими версиями, без какого либо файнтьюнинга.
- Во-вторых, меня очень удивила технология компании Groq (не путать с нейросетью grok, от Илона). Они вроде как разработали технологическое решение, который обеспечивает быструю отдачу результата от нейросети и надо сказать — я был удивлен увиденному.
Отдельно хочу сказать:
- Скорость выдачи результата работы нейросети намного быстрее, чем мы видим в терминале. Посимвольная выдача информации сделана для визуального эффекта, не более. Кому нужно, сможете убрать ее в коде.
- В коде не реализована память диалога. Иными словами, каждый запрос как новый чат с нейросетью.

Настройка командной строки

Не думаю, что стоит долго рассказывать о настройках, просто прикреплю скрины.

Первым делом открываем "Параметры"
Первым делом открываем "Параметры"
Затем выбираем powershell слева и открываем в основном окне "Оформление"
Затем выбираем powershell слева и открываем в основном окне "Оформление"
Затем выставляем настройки "Текста"
Затем выставляем настройки "Текста"
Далее выставляем настройки "курсора" и выбираем фоновое изображение.
Далее выставляем настройки "курсора" и выбираем фоновое изображение.
Фоновое изображение для скачивания
Фоновое изображение для скачивания
Далее выставляем оставшиеся настройки.
Далее выставляем оставшиеся настройки.

Python код и настройки

1. Первым делом, если у вас не установлен python, то сделайте это. Я использую версию 3.12.3.
Скачать его можно по ссылке (для windows) :

2. После установки, в терминале нужно установить необходимые библиотеки:
pip install colorama
pip install groq

3. Сохраните код в файл на вашем компьютере с расширением .py, например «pipboy.py»

from colorama import init, Fore import os import subprocess from groq import Groq import sys import time def clear_terminal(): """Очищает терминал.""" try: subprocess.run('cls' if os.name == 'nt' else 'clear', shell=True) except Exception as e: print(f"Ошибка при очистке терминала: {e}") def print_flush(text, delay=0.1): for char in text: sys.stdout.write(char) sys.stdout.flush() time.sleep(delay) # Задержка в секундах time.sleep(0.5) # Задержка перед очисткой терминала def print_flush2(text, delay=0.003): for char in text: sys.stdout.write(char) sys.stdout.flush() time.sleep(delay) # Задержка в секундах time.sleep(0.005) # Задержка перед очисткой терминала def print_flush3(text, delay=0.00003): for char in text: sys.stdout.write(char) sys.stdout.flush() time.sleep(delay) # Задержка в секундах time.sleep(0.00003) # Задержка перед очисткой терминала def communicate_with_model(message): """Взаимодействует с моделью для генерации ответа.""" try: client = Groq( api_key="ВАШ API КЛЮЧ" ) completion = client.chat.completions.create( model="Llama3-70b-8192", messages=[ { "role": "system", "content": "Тебя зовут 'Pipboy 3000 LLM'. Ты говоришь на русском языке" }, { "role": "user", "content": message } ], temperature=0.3, max_tokens=32000, top_p=1, stream=False, stop=None, ) return completion.choices[0].message.content except Exception as e: return f"Ошибка при общении с моделью: {e}" # Пример использования функции first_line = "pip..." second_line = "Вторая строка текста." def main(): """Основная функция программы.""" try: clear_terminal() print_flush(first_line) clear_terminal() print_flush(first_line) clear_terminal() print_flush2( """ Pipboy 3000 LLM готова к общению. Основные команды: - Введите 'выход', чтобы завершить. - Введите 'очистить', чтобы удалить переписку. """) while True: user_input = input(Fore.LIGHTGREEN_EX + "Вы: " + Fore.WHITE) if user_input.lower() == 'выход': print("До свидания!") break elif user_input.lower() == 'очистить': clear_terminal() continue response = communicate_with_model(user_input) print(Fore.YELLOW + "Pipboy 3000 LLM:" + Fore.WHITE, end=' ') print_flush3(response) print() except KeyboardInterrupt: print("\nПрограмма завершена пользователем.") if __name__ == "__main__": main()

4. Далее идем за api Groq по ссылке и получаем его, изначально сделав регистрацию. Да вам потребуется использовать сервис на 3 буквы, начинающийся на V**, тк с Ру они не особо работают…

5. После получения api, который бесплатен, вставляем его в 41 строчку кода программы: api_key=«ВАШ API КЛЮЧ» и сохраняем.

6. В терминале запускаем файл py программы и пользуемся на здоровье =)
Запустить файл можно по разному, я обычно указываю путь к самому python и к исполняемому файлу: "путь к python" "путь к файлу.py", в видео видно.

7. Самое важное - музыкальное сопровождение, для атмосферы:

Надеюсь, что Вам понравилась реализация и гайд был достаточно понятен для собственной реализации.

Всего наилучшего!
Шацкий Ростислав.

22
3 комментария

Друзья, я написал доработанную версию этого чата, в нем:
- поддерживается история переписки
- можно загружать документы из папки в исторический контекст
- можно загружать собственный код программы в исторический контекст
- появилась команда "новый чат" - создает новый диалог с очищенной историей переписки/исторического контекста.

Давайте, если лаков будет 30+ я выложу продолжение)

4
Ответить

А локально можно запустить модель?

Ответить

Да, в справке LangChain есть список провайдеров и моделей, с которыми можно работать. Мне кажется у них есть интеграции вообще ко всему, что я встречал: https://python.langchain.com/v0.1/docs/integrations/chat/

Вам потребуется локальный сервер со скаченной моделью нейронки, далее в коде нужно будет заменить импорт:
from groq import Groq на соответствующий

Далее в коде нужно будет прописать настройки локального сервера с моделью

Ответить