▌ Социальный IT-проект: создай сказку и помоги ребенку!
Мы запустили проект совместно с @BugrovExperience и благотворительным фондом Время Детства — социальную платформу, позволяющую каждому почувствовать себя писателем, добавив пару строк в коллективную детскую сказку и внести вклад в будущее детей! 🎈📚
▌ Концепция проекта
Проект представляет собой веб-платформу, где каждый желающий может написать пару предложений в сказку после совершения небольшого благотворительного пожертвования. Все собранные средства поступают на счет Благотворительного фонда Время Детства.
▌ Что было сделано?
- UI/UX: продуманная структура, удобная навигация и привлекательный интерфейс, созданный в Figma @BugrovExperience
- Реализация:
- Фронтенд: Vue
- Бэкенд: Kotlin, Spring Boot 3, Jmix, PostgreSQL, AI Агент для валидации текста и создания краткого пересказа, админка.
- Интеграция с платежным сервисом: возможность безопасного подтверждения транзакций.
@kyrillP
🌐 Посмотреть проект онлайн:
story.vremyadetstva.ru
Сейчас проект на стадии тестирования на фокус группе...
P.S Да простит меня дизайнер, он сделал потрясающий макет, но я не до конца доделал вёрстку, мне нужно поправить все padding и margin в соответствии с макетом, но для MVP, думаю, это не критично 😅
Мы запустили проект совместно с @BugrovExperience и благотворительным фондом Время Детства — социальную платформу, позволяющую каждому почувствовать себя писателем, добавив пару строк в коллективную детскую сказку и внести вклад в будущее детей! 🎈📚
▌ Концепция проекта
Проект представляет собой веб-платформу, где каждый желающий может написать пару предложений в сказку после совершения небольшого благотворительного пожертвования. Все собранные средства поступают на счет Благотворительного фонда Время Детства.
▌ Что было сделано?
- UI/UX: продуманная структура, удобная навигация и привлекательный интерфейс, созданный в Figma @BugrovExperience
- Реализация:
- Фронтенд: Vue
- Бэкенд: Kotlin, Spring Boot 3, Jmix, PostgreSQL, AI Агент для валидации текста и создания краткого пересказа, админка.
- Интеграция с платежным сервисом: возможность безопасного подтверждения транзакций.
@kyrillP
🌐 Посмотреть проект онлайн:
story.vremyadetstva.ru
Сейчас проект на стадии тестирования на фокус группе...
P.S Да простит меня дизайнер, он сделал потрясающий макет, но я не до конца доделал вёрстку, мне нужно поправить все padding и margin в соответствии с макетом, но для MVP, думаю, это не критично 😅
❤8❤🔥2
Forwarded from Время детства - благотворительный фонд
Друзья, совсем скоро нашему фонду исполнится пять лет
С нами часто случаются чудеса (самим не верится!). Вот и в этот раз не обошлось без чуда
Друзья! Мы предлагаем вам стать соавторами сказки для детей!
Сюжет сказки зависит только от вашей фантазии: главное – помнить, что она должна быть доброй!
Переходите по ссылке или на нашем сайте по кнопке «Стань автором сказки!» и участвуйте! Мы вместе напишем КНИГУ! Неужели не здорово?
Огромное спасибо волонтерам Сбера: Людмиле Романовой, Денису Бугрову, Кириллу Пахтусову. Вы – настоящие волшебники!
#жизньфонда
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7
В сентябре я планирую поехать на конференцию по Data Science — AI Conf X.
Очень понравились темы докладов, есть разные треки😍
Я уже забронировал отель, так как не мог упустить одно выгодное предложение.
Мой выбор пал на ibis Москва Динамо. Стоимость проживания — всего 12 тысяч рублей за три дня! Это просто замечательно!
Кстати, если вы будете бронировать отель через сервис Отелло, то сможете получить хорошую скидку по промокоду.
Подробнее в комментарии или на фото⤵️
Очень понравились темы докладов, есть разные треки😍
Я уже забронировал отель, так как не мог упустить одно выгодное предложение.
Мой выбор пал на ibis Москва Динамо. Стоимость проживания — всего 12 тысяч рублей за три дня! Это просто замечательно!
Кстати, если вы будете бронировать отель через сервис Отелло, то сможете получить хорошую скидку по промокоду.
Подробнее в комментарии или на фото⤵️
❤4🔥1
Сбербанк представил практический гайд по созданию ИИ-агентов — автономных систем, которые самостоятельно выполняют различные задачи с помощью генеративного искусственного интеллекта.
Я был в восторге от чтения гайда, очень подробная теория и есть классные практические примеры.
Знаю, что сейчас этот гайд популяризируется благодаря таргетированной рекламе, но если вдруг его пропустили, то рекомендую 👍
Например в книге есть код для AI агента который на основе описания идеи стартапа делает "канва бизнес-модель". Проверил и потестил его, работает хорошо 👍
Могу поделиться репозиторием с исходным кодом, если интересно и нет желания искать его самостоятельно)
Ознакомиться с гайдом можно тут
https://giga.chat/b2b/multi-agent-system
Я был в восторге от чтения гайда, очень подробная теория и есть классные практические примеры.
Знаю, что сейчас этот гайд популяризируется благодаря таргетированной рекламе, но если вдруг его пропустили, то рекомендую 👍
Например в книге есть код для AI агента который на основе описания идеи стартапа делает "канва бизнес-модель". Проверил и потестил его, работает хорошо 👍
Могу поделиться репозиторием с исходным кодом, если интересно и нет желания искать его самостоятельно)
Ознакомиться с гайдом можно тут
https://giga.chat/b2b/multi-agent-system
4🔥3❤1
🔥 Нужен ваш совет: собственный компонент комментариев или готовое решение? 🚀
Описание проблемы
Друзья, столкнулся с интересным вопросом. В свой pet-проект хочу добавить систему комментирования.
Проект:
frontend: React + TypeScript
backend: Kotlin + Spring Boot .
Вариант №1: Написать самостоятельно
✅ Преимущества:
- Полный контроль над функционалом и дизайном.
- Возможность кастомизации под нужды проекта.
- Хорошая практика программирования.
❌ Недостатки:
- Требует значительных временных затрат.
- Возможны дополнительные затраты на тестирование и отладку.
Вариант №2: Использовать готовое решение
✅ Преимущества:
- Быстрое внедрение.
- Уже проверенное и оптимизированное решение.
- Минимальные временные затраты.
❌ Недостатки:
- Ограниченная кастомизация.
- Риск зависимости от стороннего сервиса.
Вариант №3: Комбинация 1 и 2 варианта
Пока я пошел по первому варианту. То что у меня получилось на фронте на текущий момент добавил к посту, см. картинки). Думаю, буду небольшими итерациями добавлять и расширять функциональность этого модуля.
Какой путь выбрали бы вы и почему? Жду ваших мнений и рекомендаций! 😊
Описание проблемы
Друзья, столкнулся с интересным вопросом. В свой pet-проект хочу добавить систему комментирования.
Проект:
frontend: React + TypeScript
backend: Kotlin + Spring Boot .
Вариант №1: Написать самостоятельно
✅ Преимущества:
- Полный контроль над функционалом и дизайном.
- Возможность кастомизации под нужды проекта.
- Хорошая практика программирования.
❌ Недостатки:
- Требует значительных временных затрат.
- Возможны дополнительные затраты на тестирование и отладку.
Вариант №2: Использовать готовое решение
✅ Преимущества:
- Быстрое внедрение.
- Уже проверенное и оптимизированное решение.
- Минимальные временные затраты.
❌ Недостатки:
- Ограниченная кастомизация.
- Риск зависимости от стороннего сервиса.
Вариант №3: Комбинация 1 и 2 варианта
Пока я пошел по первому варианту. То что у меня получилось на фронте на текущий момент добавил к посту, см. картинки). Думаю, буду небольшими итерациями добавлять и расширять функциональность этого модуля.
Какой путь выбрали бы вы и почему? Жду ваших мнений и рекомендаций! 😊
🔥3
Зарелизил подсистему комментариев, оказалось это не так сложно, спасибо GigaChat Web.❤️
Он конечно не написал весь код, но помогал с рефакторингом, пробрасывание свойств и функций в компонент, а так же подсказал как из списка комментариев построить дерево комментариев с бесконечной вложенностью за O(N)....
Он конечно не написал весь код, но помогал с рефакторингом, пробрасывание свойств и функций в компонент, а так же подсказал как из списка комментариев построить дерево комментариев с бесконечной вложенностью за O(N)....
❤3
🚀 KronxRAG - ваш интеллектуальный помощник для работы с документами!
Представляю KronxRAG - RAG-приложение на базе Streamlit и GigaChat и GigaChain, которое превращает ваши документы в умную базу знаний.
🔥 Основные возможности:
• 📄 Загрузка TXT и PDF файлов
• 🔍 Умный поиск по документам с помощью RAG-технологии
• 🤖 AI-ответы на основе ваших материалов через GigaChat
• 📚 Управление базой знаний
• 💾 Сохранение данных между сессиями
💡 Как это работает:
1. Загружаете свои документы
2. Задаете любой вопрос
3. Получаете точный ответ, основанный только на ваших материалах
🛠 Технологический стек:
• Frontend: Streamlit
• AI: GigaChat (Сбер)
• Векторная база: ChromaD (хранится локально на вашем пк)
• Фреймворк: LangChain
🔗 Проект уже готов к использованию! Для запуска нужен только API ключ от GigaChat.
Проект доступен на https://gitverse.ru/kronx/KronxRAG
p.s Вообще я его затеял, потому что стало интересно потрогать RAG, на практики попробовать всякие алгоритмы для улучшения поиска по нему. Имея такой интерфейс гораздо удобнее тестировать...
Представляю KronxRAG - RAG-приложение на базе Streamlit и GigaChat и GigaChain, которое превращает ваши документы в умную базу знаний.
🔥 Основные возможности:
• 📄 Загрузка TXT и PDF файлов
• 🔍 Умный поиск по документам с помощью RAG-технологии
• 🤖 AI-ответы на основе ваших материалов через GigaChat
• 📚 Управление базой знаний
• 💾 Сохранение данных между сессиями
💡 Как это работает:
1. Загружаете свои документы
2. Задаете любой вопрос
3. Получаете точный ответ, основанный только на ваших материалах
🛠 Технологический стек:
• Frontend: Streamlit
• AI: GigaChat (Сбер)
• Векторная база: ChromaD (хранится локально на вашем пк)
• Фреймворк: LangChain
🔗 Проект уже готов к использованию! Для запуска нужен только API ключ от GigaChat.
Проект доступен на https://gitverse.ru/kronx/KronxRAG
p.s Вообще я его затеял, потому что стало интересно потрогать RAG, на практики попробовать всякие алгоритмы для улучшения поиска по нему. Имея такой интерфейс гораздо удобнее тестировать...
🔥1
Больше прозрачности в RAG
Добавил в приложение при ответе формирования списка источников откуда были взяты данные, чтобы сделать систему более прозрачной для пользователя и упростить отладку при разработке более продвинутых RAG сценариев..
Как это работает?
Создаем функцию для чтения pdf
Переработал функцию обработки файлов, теперь каждый документ langchain - это отдельная страница pdf документа, в каждом документе мы добавляем мето-данные
Эти документы потом будут разбиваться на чанки с помощью функции spit_docs
Ещё из важного нужен промт, который формирует итоговый ответ на основе RAG, пока я пришел к такому промту
Далее нам нужна RAG цепочка
Код функции для форматирования
C полным кодом вы можете ознакомится тут
Далее планирую повысить качество ответов из таблиц в pdf, сейчас ответы из таблиц не очень...
Тут уже есть подсказка как это сделать
https://habr.com/ru/articles/893356
Добавил в приложение при ответе формирования списка источников откуда были взяты данные, чтобы сделать систему более прозрачной для пользователя и упростить отладку при разработке более продвинутых RAG сценариев..
Как это работает?
Создаем функцию для чтения pdf
def read_pdf(file):
pdf_document = fitz.open(stream=file.read(), filetype="pdf")
pages = [] # список страниц для хранения всех страниц
for page_num in range(pdf_document.page_count):
page = pdf_document.load_page(page_num)
text = page.get_text() # извлекаем текст каждой страницы отдельно
pages.append((page_num + 1, text)) # добавляем номер страницы и её текст
return pages
Переработал функцию обработки файлов, теперь каждый документ langchain - это отдельная страница pdf документа, в каждом документе мы добавляем мето-данные
def process_files(files) -> list[Document]:
"""
Функция обрабатывает загруженные файлы, преобразуя их в документы с метаданными.
Теперь каждый чанк включает номер страницы.
"""
documents = []
for file in files:
if file.type == "application/pdf":
pages = read_pdf(file) # получаем страницы с номерами и текстом
for page_number, content in pages:
document = Document(
page_content=content,
metadata={
"source": file.name,
"page": page_number # добавляем номер страницы в метаданные
}
)
print(page_number)
documents.append(document)
else:
# Для текстовых файлов просто читаем и декодируем содержимое
content = file.read().decode()
cleaned_content = clean_html(content)
document = Document(
page_content=cleaned_content,
metadata={"source": file.name}
)
documents.append(document)
return documents
Эти документы потом будут разбиваться на чанки с помощью функции spit_docs
def split_docs(documents: list[Document], chunk_size: int = 1000, chunk_overlap: int = 200) -> list[Document]:
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=chunk_size,
chunk_overlap=chunk_overlap,
)
chunks = text_splitter.split_documents(documents)
return chunks
Ещё из важного нужен промт, который формирует итоговый ответ на основе RAG, пока я пришел к такому промту
template = """Используй приведённый ниже контекст, чтобы ответить на вопрос.
Если не знаешь ответ — просто скажи, что не знаешь, не выдумывай.
Используй только информацию из контекста
Всегда добавляй спискок источкников из запроса
Добавляй номера страниц из которых ты составил итоговый ответ
Контекст: {context}
Вопрос: {question}
Полезный ответ:"""
custom_rag_prompt = PromptTemplate.from_template(template)
Далее нам нужна RAG цепочка
rag_chain = (
{"context": retriever | format_docs, "question": RunnablePassthrough()}
| custom_rag_prompt
| giga
| StrOutputParser()
)
Код функции для форматирования
def format_docs(docs: list[Document]):
formatted_contents = []
sources = []
for doc in docs:
page = None
source = ''
print(doc.metadata)
if hasattr(doc, 'metadata') and doc.metadata and 'source' in doc.metadata:
source = doc.metadata['source']
if hasattr(doc, 'metadata') and doc.metadata and 'page' in doc.metadata:
page = doc.metadata['page']
if source not in sources:
sources.append(source)
formatted_contents.append(f"""
[Источник: {source}{f' страница {page}' if page is not None else ''}]\n\n
{doc.page_content}\n\n
""")
return "\n\n".join(formatted_contents)
C полным кодом вы можете ознакомится тут
Далее планирую повысить качество ответов из таблиц в pdf, сейчас ответы из таблиц не очень...
Тут уже есть подсказка как это сделать
https://habr.com/ru/articles/893356
🔥2
Друзья, я рад сообщить вам приятную новость! Несмотря на недавние изменения в сервисе Evolution Foundation Models на cloud.ru, многие мощные модели остаются доступны абсолютно бесплатно.
Перечисляю бесплатные модели, которые остаются открытыми для всех пользователей:
- 🔥 GigaChat/GigaChat-2-Max
- 💡 Qwen/Qwen3-Next-80B-A3B-Instruct
- ⚙️ t-tech/T-lite-it-1.0
- ✨ t-tech/T-pro-it-1.0
- 🌐 t-tech/T-pro-it-2.0
- 🎧 openai/whisper-large-v3
- 📊 Qwen/Qwen3-Embedding-0.6B
- 🤖 Qwen/Qwen3-Reranker-0.6B
- 🏭 BAAI/bge-m3
- 👩💻 BAAI/bge-reranker-v2-m3
Не знаю, как долго продлится эта акция, вероятно, до конца ноября. Это отличная возможность провести вечер за вайбкодингом!
Мне особенно понравилась модель GLM 4.6, и я продолжаю использовать её на платной основе. До ноября она была бесплатной ...
Этот пост носит исключительно информационный характер и не является рекламой..
Перечисляю бесплатные модели, которые остаются открытыми для всех пользователей:
- 🔥 GigaChat/GigaChat-2-Max
- 💡 Qwen/Qwen3-Next-80B-A3B-Instruct
- ⚙️ t-tech/T-lite-it-1.0
- ✨ t-tech/T-pro-it-1.0
- 🌐 t-tech/T-pro-it-2.0
- 🎧 openai/whisper-large-v3
- 📊 Qwen/Qwen3-Embedding-0.6B
- 🤖 Qwen/Qwen3-Reranker-0.6B
- 🏭 BAAI/bge-m3
- 👩💻 BAAI/bge-reranker-v2-m3
Не знаю, как долго продлится эта акция, вероятно, до конца ноября. Это отличная возможность провести вечер за вайбкодингом!
Мне особенно понравилась модель GLM 4.6, и я продолжаю использовать её на платной основе. До ноября она была бесплатной ...
Этот пост носит исключительно информационный характер и не является рекламой..