______ ______ ___ ____ / ____ / ___ / ____ / __ ____ / | / _/ // __/ __ // __/ _ / __ // | | / / / / _ / / / _ / / / _ / / __ / / / / ___ | _ / / a богатый интерфейс терминала чат ____/ ____/ ____/ ___/_//_/_/| _/___/Записано в Go. Создайте простые, безопасные, масштабируемые системы с GO. Copyright (© ️) 2024 @h0llyw00dzz Все права защищены.
Примечание. Этот репозиторий находится в процессе работы (WIP).
Расчетное время прибытия (ETA): неизвестно . Этот проект разрабатывается на личной основе в течение моего свободного времени и не связан с какими -либо усилиями компании или предприятия.
Интересно построить его в терминале после тура по путешествию по языку программирования GO, а также изучение возможностей Google AI (в настоящее время в бета -версии с Близнецами).
Примечание
Этот репозиторий специально предназначен для того, чтобы придерживаться идиоматических принципов GO. ?
Разработка в GO способствует масштабируемости. Его конструкция, ориентированная на производительность, поддерживает одновременную обработку и эффективное управление ресурсами, что делает его отличным выбором для приложений, которые необходимо плавно масштабировать с увеличением спроса.
Управление памятью и статическое типирование Go значительно снижает возникновение критических ошибок, таких как утечки памяти, которые распространены в интерпретируемых языках. Эта стабильность имеет решающее значение для длительных терминальных приложений, которые взаимодействуют с услугами искусственного интеллекта.
Примечание
Memory leaks являются важной проблемой, особенно в разработке ИИ. Подход GO к управлению памятью отличает его, так как он смягчает такие проблемы более эффективно, чем некоторые другие языки. Это резко контрастирует с многочисленными репозиториями на других языках, где утечки памяти являются частой и часто запутанной проблемой (которую я не понимаю, когда смотрю другое репо в github ).
GitHub , которые я не понимаю. Забавный факт : вы знали? Если ваш код Go напоминает джунгли if операторов (подумайте о 10+ вложенных слоях-большой нет-нет!), Это Go и все больше и больше Stop-and-ask-for-directions . Сплюдите эти условия и позвольте вашему коду работать так же гладко, как смазанный смазанный gopher на скольжении! ?
Примечание
Эта Realistic Typing Animation является экономичной с точки зрения потребления ресурсов (например, memory,cpu ), в отличие от front-end languages или other languages , которые, как правило, являются более ресурсными.
:quit позволяет пользователям закончить свой сеанс упорядоченным образом. Когда эта команда выполнена, она предлагает последовательность отключения кооператива с ИИ, которая генерирует соответствующее сообщение до свидания. Этот вдумчивый дизайн улучшает пользовательский опыт, предоставляя разговорное закрытие, которое является естественным и вежливым, гарантируя, что завершение сеанса так же интересно, как и сам разговор.DebugOrErrorLogger Пакет DebugOrErrorLogger предлагает оптимизированную и эффективную систему ведения журнала, разработанную специально для приложений GO, которые требуют надежных возможностей и отладки с минимальными накладными расходами.DebugOrErrorLogger Функции ключей ? Условное ведение журнала отладки : регистратор позволяет отлаживать сообщения о условном выводе на основе переменной среды DEBUG_MODE . При установке true , подробная информация отладки будет напечатана в os.Stderr , помогая в процессе разработки и устранения неполадок.
? Выход ошибки с цветовой кодировкой : ошибки отчетливо раскрашиваются красным при регистрации, что делает их выделенными в терминале для немедленного внимания. Эта оформление помогает быстро определить ошибки среди других выходов в журнал.
? ? Восстановление паники : функция восстановления предоставляется для изящной обработки и регистрации любых паники, которые могут возникнуть во время выполнения. Эта функция гарантирует, что сообщение о панике четко зарегистрировано с цветным выходом, предотвращая неожиданное приложение и помощь в быстрого диагноза.
⚡ Простой API : Пакет раскрывает простой и интуитивно понятный API с методами отладки и регистрации ошибок, которые принимают строки формата и вариальные аргументы, аналогичные стандартным функциям Printf и Println .
? Конфигурация переменной среды : режим отладки может быть легко переключен или выключен через переменную среды, что обеспечивает гибкую конфигурацию без необходимости перекомпилировать приложение.
Примечание
Current Features перечисленные выше, могут быть устаревшими. Для самых последних обновлений функций прочитайте документацию here .
Примечание
Термин Streamlined Codebase относится к высокоуровневому общему шаблону в программировании Go . Эта модель подчеркивает чистую и хорошо организованную структуру, которая облегчает понимание и поддержание кода. Как правило, он включает в себя разделение проблем, модуляризацию компонентов и следующие идиоматические практики для создания кодовой базы, которая является как эффективной, так и с ним.
Примечание
Эта специализированная функция, лучше, чем код, напоминает джунгли, if if if if сделать операторы, успешно интегрированы.
Приняв эту масштабируемую систему обработки команд, приложение в чате хорошо полагается, чтобы развиваться наряду с достижениями в области искусственного интеллекта и пользователей, обеспечивая надежный и будущий пользовательский опыт.
Примечание
Планирование предмета для постоянного улучшения и добавления функций, улучшая функциональность без добавления ненужной сложности. Следите за обновлениями!
Go разработан, чтобы быть простым и эффективным, избегая ненужных сложностей (сложности траха, это go -сложности), часто встречающиеся на других языках программирования.
Оптимизированное использование ресурсов : терминальный чат Gogenai разработан, чтобы максимизировать производительность при минимизации использования ресурсов. Используя эффективную модель компиляции и выполнения GO, приложение обеспечивает быстрое время отклика и низкие накладные расходы, что делает его идеальным для систем, где сохранение ресурсов имеет первостепенное значение.
Эффективное управление параллелизмом : благодаря легким Goroutines GoRoutines и эффективным примитивам синхронизации, Gogenai Terminal Chat с легкостью обрабатывает одновременные операции. Приложение может обслуживать нескольких пользователей одновременно без значительного увеличения задержки или использования памяти, обеспечивая постоянную производительность даже при нагрузке.
Этот репозиторий содержит высококачественный код GO, который в частности, фокусируется на Retry Policy Logic , Chat System Logic и Other . Каждая функция предназначена для simplicity , намеренно избегая ненужной stupid complexity , даже в сценариях, которые могут потенциально превышать stupid complexity 10+ .
Чтобы использовать чат интерфейса терминала Gogenai, вам нужно установить Docker на вашем компьютере. Если у вас нет Docker, пожалуйста, следуйте официальному руководству по установке Docker.
После того, как Docker настроен, вы можете вытащить изображение из пакетов Github, работая:
docker pull ghcr.io/h0llyw00dzz/gogenai-terminal-chat:latestКончик
Для Master или Advanced Go Programming , особенно в cloud engineering , этот GoGenAI Terminal Interface Chat может быть запущен в Cloud Shell ( for example, Google Cloud Shell ) без использования Docker.
Чтобы начать чат с Gogenai, запустите следующую команду в вашем терминале. Обязательно замените YOUR_API_KEY на фактический ключ API, предоставленную вам.
Предупреждение
В связи с этой проблемой here , чтобы начать сеанс чата с GoGenAI , используйте лучший terminal , который может справиться с constant в этом хранилище или создавать собственную ОС с помощью лучшего ядра, которое может обрабатывать constant в этом хранилище
docker run -it --rm --name mychatapp -e API_KEY=YOUR_API_KEY ghcr.io/h0llyw00dzz/gogenai-terminal-chat:latestЭта команда запустит приложение Terminal Chat -чата Gogenai в интерактивном режиме. Вы сможете печатать свои сообщения и получать ответы от ИИ.
Переменные среды-это пары ключевых значений, которые могут повлиять на поведение вашего приложения. Ниже приведена таблица переменных окружающей среды, используемой в применении Gogenai-концевой чат, наряду с их описаниями и требуется ли они.
| Переменная | Описание | Необходимый |
|---|---|---|
API_KEY | Ваш ключ API для доступа к генеративной модели ИИ. Получите бесплатный ключ API здесь. | Да |
DEBUG_MODE | Установите на true , чтобы включить DEBUG_MODE или false , чтобы отключить его. | Нет |
SHOW_PROMPT_FEEDBACK | Установите на true , чтобы отобразить обратную связь с приглашением в нижнем колонтитуле ответов, или false чтобы скрыть его. | Нет |
SHOW_TOKEN_COUNT | Установите в true , чтобы отобразить количество токенов, используемые в ответе ИИ и истории чата, или false чтобы скрыть его. | Нет |
Примечание
Average Consumption рассчитываются без включения использования системы хранения, такой как база данных, и основаны на предположении, что каждая функция относительно проста, со средней цикломатической сложностью 5 в качестве максимума. Тем не менее, потребление может увеличиваться с более сложными функциями (например, те, которые имеют цикломатическую сложность 10 или более, которые не рекомендуются).
Примечание
Average Maximum Consumption основаны на моделировании human поведения. Это включает в себя отзыв ответа чата характером по характеру, чтобы имитировать ритм и темп human .
Предупреждение
Эти screenshots могут быть устарели из -за изменений версий.
Примечание
Этот ? Simple Debugging проста в отличие от дерьмовых go codes сложных логики, которые увеличивают cyclomatic complexity
? Ты: Привет, ты?
? AI :: я большая языковая модель, обученная Google.
? Вы: у меня есть вопрос о K8s, как мне включить регистрацию аудита в Kubernetes, и что я должен искать при анализе журналов?
? AI: Чтобы включить регистрацию аудита в Kubernetes, вы можете использовать следующие шаги:
/etc/kubernetes/manifests/kube-apiserver.yaml .audit-policy : enabled: true
При желании вы можете настроить следующие настройки:
policyFile : путь к файлу, содержащему правила политики аудита.logPath : путь к файлу, где будут храниться журналы аудита.logFormat : формат журналов аудита.maxBatchSize : максимальное количество аудиторских событий, которые включают в одну партию.maxBatchWait : максимальное количество времени, чтобы дождаться заполнения партии аудиторских событий, прежде чем записать их на диск.Сохраните и перезапустите сервер API Kubernetes.
После включения регистрации аудита вы можете проанализировать журналы, чтобы получить представление о деятельности в вашем кластере Kubernetes. Некоторые вещи, которые вы можете найти, включают:
Анализируя журналы аудита, вы можете определить риски безопасности, устранение проблем и получить лучшее понимание того, как используется ваш кластер Kubernetes.
Вот несколько дополнительных ресурсов, которые вы можете найти полезными:
$ go run cmd/main.go? Ай: Привет! Как я могу вам помочь сегодня?
? Вы: у меня есть вопрос, правильно ли это правильно относится к «стремиться к простоте в каждой функции (цель к цикломатической сложности до 5, чтобы продемонстрировать опыт); простота является признаком мастерства программирования GO». ?
? AI: Да, утверждение «стремиться к простоте в каждой функции (стремиться к цикломатической сложности до 5, чтобы продемонстрировать опыт); простота является признаком мастерства программирования GO», как правило, верна.
Цикломатическая сложность является мерой сложности функции. Он рассчитывается путем подсчета количества независимых путей через функцию. Высокая цикломатическая сложность указывает на то, что функции трудно понять и поддерживать.
Простота является ключевым принципом программирования GO. Go Code, как правило, лаконичен и легко читается. Это облегчает понимание и поддержание.
Целью цикломатической сложности до 5 лет является хорошим способом убедиться, что ваши функции будут простыми и простыми для понимания. Это поможет вам написать лучший код и избежать введения ошибок.
Конечно, бывают случаи, когда необходимо писать функции, которые являются более сложными. Тем не менее, вы всегда должны стремиться к простоте, когда это возможно.
Вот несколько советов по написанию простых функций:
Следуя этим советам, вы можете написать простые, простые для понимания функции, которые сделают ваш код более поддерживаемым и без ошибок.
? Вы: хорошо спасибо за информацию
? Ай: Добро пожаловать! Я рад, что смог помочь. Если у вас есть еще вопросы, не стесняйтесь задавать.
? Ты:: уйти
? AI: Было приятно помочь вам сегодня. Помните, я всегда здесь, если у вас есть еще вопросы. Береги себя и хорошего дня!
Приложение Terminal Chat Gogenai предоставляет интерфейс командной строки для пользователей для взаимодействия с генеративной моделью ИИ. Приложение обрабатывает вводы пользователей, обрабатывает команды, общается с ИИ и поддерживает историю чата. Он предназначен для того, чтобы быть расширяемым и масштабируемым, чтобы соответствовать будущему росту и дополнительным функциям.
Простая архитектура предназначена для простых вариантов использования и предоставляет основные функции, необходимые для приложения чата на основе терминала.
Блок -схема LR
Start ([start]) -> | Пользовательский запуск приложения | Init [инициализировать сеанс]
Init -> | Настройка обработки сигналов | SignalHandler [обрабатывать сигналы ОС]
Init -> | Load API клавиша | Apikeyvalidation {api -валидация}
Apikeyvalidation -> | Действительно | SetupClient [Setup AI Client]
Apikeyvalidation -> | НЕИСПРАВЛЕНИЕ | Конец ([конец])
SetupClient -> | Клиент готов | Mainloop [Enter Main Loop]
Mainloop -> userInput [/user input/]
UserInput -> | Команда | CommandHandler [Handle Command]
UserInput -> | Сообщение в чате | SendMessage [Отправить сообщение в AI]
CommandHandler -> | Quit | Конец
CommandHandler -> | Другие команды | ProcessCommand [Process Command]
SendMessage -> | Получить ответ AI | UpdateHistory [Обновление истории чата]
UpdateHistory -> DisplayResponse [Display AI -ответ]
ProcessCommand -> Mainloop
DisplayResponse -> Mainloop
SignalHandler -> | Sigint/Sigterm | Очистка [Ресурсы для очистки]
Очистка -> конец
Масштабируемая архитектура предназначена для обработки роста, что позволяет добавить новые команды, улучшенную обработку ошибок и более сложные взаимодействия с внешними API.
Блок -схема LR
Start ([start]) -> | Пользовательский запуск приложения | Init [инициализировать сеанс]
Init -> | Настройка обработки сигналов | SignalHandler [обрабатывать сигналы ОС]
Init -> | Load API клавиша | Apikeyvalidation {api -валидация}
Apikeyvalidation -> | Действительно | SetupClient [Setup AI Client]
Apikeyvalidation -> | НЕИСПРАВЛЕНИЕ | Конец ([конец])
SetupClient -> | Клиент готов | Mainloop [Enter Main Loop]
Mainloop -> userInput [/user input/]
UserInput -> | Команда | CommandGistry [Command Registry]
UserInput -> | Сообщение в чате | SendMessage [Отправить сообщение в AI]
CommandRegistry -> | QUIT | Конец
CommandRegistry -> | Другие команды | ProcessCommand [Process Command]
CommandRegistry -> | Count Token Count | TokenCountingProcess [процесс подсчета токенов]
CommandRegistry -> | Проверьте модель | CHECKMODELPOCESS [CHECKMODELPOCESS]
SendMessage -> | Получить ответ AI | UpdateHistory [Обновление истории чата]
TokenCountingProcess -> | Получить ответ AI | DisplayResponse [Display AI -ответ]
CHECKMODELPOCESS -> | получить ответ AI | DisplayResponse [Display AI -ответ]
UpdateHistory -> DisplayResponse [Display AI -ответ]
ProcessCommand -> Mainloop
DisplayResponse -> Mainloop
SignalHandler -> | Sigint/Sigterm | Очистка [Ресурсы для очистки]
Очистка -> конец
ProcessCommand -> | api взаимодействие | Apiclient [API -клиент]
Apiclient -> | API -ответ | ProcessCommand
Apiclient -> | ошибка API | Errorhandler [обработчик ошибок]
ErrorHandler -> | Ошибка обработки | ProcessCommand
ErrorHandler -> | Фатальная ошибка | Конец
Tokencountingprocess -> | одновременная обработка | CONDURRENTPROCORSOR [CONDURRENT процессор]
CONDURRENTPROCORSOR -> | Совокупные результаты | TokenCountingProcess
CONDURRENTPROCORSOR -> | ОШИБКА | Errorhandler [обработчик ошибок]
ClassDef Scalable Fill:#4C9F70, ход:#333, ширина хода: 2PX;
Class CommandRegistry, Apiclient, concurrentProcessor Scalable;
Примечание
На приведенной выше диаграмме компоненты с green цветом заполнения ( #4c9f70 ) предназначены для масштабируемых, что указывает на то, что они могут обрабатывать рост и эффективно повышать нагрузку. Эти компоненты включают в себя Command Registry , API Client и Concurrent Processor .
Примечание
Scalable System's Architecture демонстрирует эффективную обработку сложности посредством простоты. В этом приложении GO каждая функция предназначена для поддержания средней cyclomatic complexity of 5 или less .
Пожалуйста, обратитесь к нашим Contribution Guidelines для подробной информации о том, как вы можете внести свой вклад в этот проект.
Примечание
Это список задач для улучшения, исправления и улучшения функций этого проекта. Задачи добавляются в этот файл readme.md, чтобы убедиться, что они не забываются в процессе разработки.
Примечание
Reporting System предназначена для захвата и обработки событий паники выполнения в приложении GO, облегчая упорядоченную отчетность и анализ ошибок.
Примечание
Функция Create a Convert Result Table feature предназначена для переформатирования вывода из ИИ в табличную структуру.
Примечание
Функция Enable Additional Responses предназначена для получения дополнительных ответов от ИИ, таких как оперативная обратная связь. Чтобы активировать эту функцию, используйте Environment Variable Configuration .
Реализуйте любые непреднамеренные функции
Появление дополнительных goroutines
Примечание
Особенности для Processing Multiple Image & Text Datasets for Token Counting защищены от race conditions и deadlocks . Более того, они могут efficiently обрабатывать multiple text data или multiple image data .
Примечание
Pin Each Message for a Simpler Context Prompt предназначено для выравнивания сообщений, загруженных из таких файлов, как json/txt/md . Эта функция работает исключительно хорошо с автоматической или ручной суммированием, в отличие от того, когда написано на interpreted language хахаха.
Примечание
Функция Implement Gemini-Pro Vision Capabilities стратегически интегрирована в функциональные возможности команды, такие как сравнение изображений, анализ изображений и многое другое.
Примечание
Эта система написана в go , обеспечивая Scalability и Stability . ?
:help Примечание
Функция Automate Summarizing Conversations предназначена для автоматического обобщения разговора аналогично ChatgptNextWeb. Тем не менее, он построен в терминальном интерфейсе, что делает его более доступным и доступным, чем OpenAI . Кроме того, поскольку этот терминальный интерфейс записан в Go, он обеспечивает создание простых, безопасных и масштабируемых систем.
eg, issues with executing a scalable command handler ) :aitranslate Примечание
Improve :aitranslate commands направлены на расширение возможностей перевода, включая перевод из файлов, уценки, документов, CSV и потенциально большего. Как написано в Go, которая имеет мощную стандартную библиотеку?, Например, вы можете использовать команду :aitranslate :file data.csv .
:safety AIResponse , сохранив оригинальный ответ AI в ChatHistory Примечание
Улучшение, Improve AIResponse by Storing the Original AI Response in ChatHistory , включает в себя сохранение первоначального ответа от ИИ в ChatHistory . Кроме того, это действие автоматически запускает улучшения для функции Colorize .
ChatHistory путем автоматического синхронизации для мультимодального использования ( gemini-pro-vision ) Примечание
Усовершенствование, Leverage ChatHistory by automatically syncing for multi-modal use (gemini-pro-vision) , использует ChatHistory в качестве высокоэффективного решения для хранения данных в памяти, в отличие от написанного на C или другом языке, что вызывает memory leaks . Это обеспечивает бесшовную синхронизацию и оптимальную производительность в различных режимах.
[Явно] retry policy динамически применяется к основному Goroutine, что позволяет использовать независимую обработку ошибок и попытки повторения.
[Явно] улучшить обработку сообщений Error , чтобы сделать его более динамичным.
Error во время операций Count Tokens , передавая через канал.Иллюстрация того, как это работает:
секвенированная
Участник Main в качестве основного Goroutine
Участник G1 как goroutine 1
Участник G2 как goroutine 2
Участник G3 как goroutine 3
Участник CH в качестве канала ошибки
Коллекционер участников в качестве коллекционера ошибок (известный как политика повторной попытки)
Main->> CH: создать канал с емкостью
Main->> g1: goroutine 1
Main->> g2: garoutine 2
Main->> g3: goroutine 3
G1->> CH: отправить ошибку (если есть)
G2->> CH: отправить ошибку (если есть)
G3->> CH: отправить ошибку (если есть)
Main->> Коллекционер: Начните собирать ошибки
цикл Соберите ошибки
CH->> Коллекционер: отправить ошибки коллекционеру
конец
Main->> Main: Close Channel после всех завершений Goroutines
Collector->> Main: вернуть первую не-ноль ошибку
Улучшить Colorize , чтобы повысить масштабируемость и интегрировать его со стандартной режимом библиотеки для лучшей производительности.
Модель переключения с помощью команд
Примечание
Plan for Google Cloud Deployment предназначен для поддержки совместимости облака с возможностями AI Vertex после достижения версии V1.0.0 (этот репозиторий) и считается стабильным чтением здесь.
Почему? Этот проект разработан в соответствии с Terms of Service и Privacy Policy для personal use . Важно отметить, что этот проект разрабатывается на личной основе в течение моего свободного времени и не связан с какими -либо усилиями компании или предприятия. Это контрастирует со многими компаниями, которые в первую очередь удовлетворяют потребности предприятия. Например, возможности Vertex AI могут использоваться на личной основе для таких задач, как точная настройка и использование собственных данных, без сложности и накладных расходов, обычно связанных с требованиями уровня предприятия.
Примечание
Функция Web Interface Support предназначена для облегчения поддержки Webassembly (WASM), используя ее разработку в GO. Это позволяет управлять чатом и другими функциями локально, начиная с версии V1.0.0+ (вероятно, V2) этого репозитория, как только он достигнут и считается стабильным. Для лучших практик прочитайте здесь.
Примечание
Calculate the Size of the Code Base Volume предназначена для оценки размера базы кода. Например, он может рассчитать объем проектов с открытым исходным кодом Google или других проектов с открытым исходным кодом, которые содержат миллиарды строк кода, написанные в Go .
Go Code в Mermaid Markdown Примечание
Функция, Convert Each Function in Go Code to Mermaid Markdown , предназначена для оценки базы кода. Он вдохновлен инструментом Go Dead Code . Например, он преобразует каждую достижимую функцию в формат Mermaid Markdown .
Доступно here