Создание приложений на Go с использованием LLM
По мере того как возможности LLM (Large Language Models — большие языковые модели) и связанных инструментов, таких как модели для эмбеддингов, значительно выросли за последний год, всё больше разработчиков задумываются о внедрении LLM в свои приложения.
Поскольку LLM обычно требуют специализированного оборудования и значительных вычислительных ресурсов, их чаще всего упаковывают как сетевые сервисы, предоставляющие API для доступа. Так работают API ведущих LLM, таких как OpenAI или Google Gemini; даже инструменты для локального запуска собственных моделей, например Ollama, оборачивают LLM в REST-API для локального использования. Более того, разработчики, использующие LLM в приложениях, часто нуждаются в дополнительных инструментах вроде векторных баз данных, которые также обычно разворачиваются как сетевые сервисы.
Другими словами, приложения на базе LLM очень похожи на современные cloud-native приложения: они требуют отличной поддержки REST и RPC протоколов, высокой производительности и хорошей работы с конкурентностью. А это как раз те области, в которых Go силён, что делает его великолепным языком для создания приложений с использованием LLM.
Этот пост демонстрирует пример использования Go для простого приложения на базе LLM. Он начинается с описания задачи, которую решает демонстрационное приложение, и затем показывает несколько вариантов его реализации, использующих разные пакеты для достижения одной и той же цели. Весь исходный код примеров доступен онлайн.
https://go.dev/blog/llmpowered
👉 @golang_lib
По мере того как возможности LLM (Large Language Models — большие языковые модели) и связанных инструментов, таких как модели для эмбеддингов, значительно выросли за последний год, всё больше разработчиков задумываются о внедрении LLM в свои приложения.
Поскольку LLM обычно требуют специализированного оборудования и значительных вычислительных ресурсов, их чаще всего упаковывают как сетевые сервисы, предоставляющие API для доступа. Так работают API ведущих LLM, таких как OpenAI или Google Gemini; даже инструменты для локального запуска собственных моделей, например Ollama, оборачивают LLM в REST-API для локального использования. Более того, разработчики, использующие LLM в приложениях, часто нуждаются в дополнительных инструментах вроде векторных баз данных, которые также обычно разворачиваются как сетевые сервисы.
Другими словами, приложения на базе LLM очень похожи на современные cloud-native приложения: они требуют отличной поддержки REST и RPC протоколов, высокой производительности и хорошей работы с конкурентностью. А это как раз те области, в которых Go силён, что делает его великолепным языком для создания приложений с использованием LLM.
Этот пост демонстрирует пример использования Go для простого приложения на базе LLM. Он начинается с описания задачи, которую решает демонстрационное приложение, и затем показывает несколько вариантов его реализации, использующих разные пакеты для достижения одной и той же цели. Весь исходный код примеров доступен онлайн.
https://go.dev/blog/llmpowered
👉 @golang_lib
👍1
  Заметки о запуске Go в браузере с WebAssembly
Недавно мне пришлось компилировать Go в WebAssembly, чтобы запускать его в браузере в паре небольших проектов, и вообще я уделил некоторое время изучению WebAssembly. Мне кажется, что WebAssembly — очень захватывающая технология как для веба, так и для других применений (например, через WASI). Особенно классно, что мы можем брать существующие проекты и компоненты, написанные на Go, и запускать их прямо в браузере.
В этом посте я подытожу несколько полезных шаблонов запуска Go в браузере через WebAssembly. Все примеры представлены небольшими, самодостаточными программами, которые можно найти в этом репозитории на GitHub.
https://eli.thegreenplace.net/2024/notes-on-running-go-in-the-browser-with-webassembly/
👉 @golang_lib
Недавно мне пришлось компилировать Go в WebAssembly, чтобы запускать его в браузере в паре небольших проектов, и вообще я уделил некоторое время изучению WebAssembly. Мне кажется, что WebAssembly — очень захватывающая технология как для веба, так и для других применений (например, через WASI). Особенно классно, что мы можем брать существующие проекты и компоненты, написанные на Go, и запускать их прямо в браузере.
В этом посте я подытожу несколько полезных шаблонов запуска Go в браузере через WebAssembly. Все примеры представлены небольшими, самодостаточными программами, которые можно найти в этом репозитории на GitHub.
https://eli.thegreenplace.net/2024/notes-on-running-go-in-the-browser-with-webassembly/
👉 @golang_lib
👍1
  System Design интервью с ТимЛидом из американского FinTech уже завтра
29 октября(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью по System Design.
Как это будет:
📂 Дмитрий Дорофеев, TeamLead в американском FitTech Truv Inc, ex-VK, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Дмитрий будет комментировать каждый ответ респондента, чтобы дать понять, чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Дмитрию
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Go-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_go_bot
Реклама.
О рекламодателе
  29 октября(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью по System Design.
Как это будет:
📂 Дмитрий Дорофеев, TeamLead в американском FitTech Truv Inc, ex-VK, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Дмитрий будет комментировать каждый ответ респондента, чтобы дать понять, чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Дмитрию
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Go-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_go_bot
Реклама.
О рекламодателе
Go Singleflight тает в вашем коде, а не в вашей базе данных
Когда к вам одновременно приходит несколько запросов за одними и теми же данными, по умолчанию каждый из них отправляется в базу данных отдельно. В результате один и тот же запрос выполняется несколько раз, что, откровенно говоря, просто неэффективно.
https://victoriametrics.com/blog/go-singleflight/index.html
👉 Другие статьи в серии:
• Go sync.Mutex: нормальный/starvation режим
• Go sync.WaitGroup и проблема выравнивания
• Go sync.Pool и механика, стоящая за ним
• Go sync.Cond, самый недооцененный механизм синхронизации
👉 @golang_lib
Когда к вам одновременно приходит несколько запросов за одними и теми же данными, по умолчанию каждый из них отправляется в базу данных отдельно. В результате один и тот же запрос выполняется несколько раз, что, откровенно говоря, просто неэффективно.
https://victoriametrics.com/blog/go-singleflight/index.html
👉 Другие статьи в серии:
• Go sync.Mutex: нормальный/starvation режим
• Go sync.WaitGroup и проблема выравнивания
• Go sync.Pool и механика, стоящая за ним
• Go sync.Cond, самый недооцененный механизм синхронизации
👉 @golang_lib
👍2
  