TGViewer
AI на дровах 🪵 AI на дровах 🪵 @nerditru · 227 subscribers
Post #181 166
🔥 Автоматизация создания базы знаний с помощью LLM

Привет, друзья! Сегодня расскажу, как мы автоматизировали процесс создания базы знаний, интегрировав генерацию контента с помощью LLM. Основная идея – взять данные из Confluence, дополнить их сгенерированными описаниями и сохранить в виде структурированных записей. Ниже описаны ключевые моменты нашего подхода:

1. Определение структуры данных

Мы задаём структуру записи базы знаний с помощью TypedDict, чтобы гарантировать единообразие данных. Пример:
from typing import TypedDict

class KnowledgeBaseEntry(TypedDict):
ticket_key: str
title: str
question: str # Пользовательский запрос, сформулированный по содержанию
content: str
instruction_text: str # Подробная инструкция
keywords: str
usefulness_score: float # Оценка полезности (от 0 до 1)
components: str # Компонент, о котором идёт речь
page_link: str # Ссылка на документ в Confluence
updated: str # Дата обновления (например, "YYYY-MM-DD")


2. Генерация краткого описания (summary)

Используем LLM для создания краткого описания каждой страницы. Промт формируется с учетом заголовка, контента и контекста родительской страницы:
def generate_summary_with_llm(title: str, content: str, parent_summary: str = "") -> str:
prompt = f"""
У нас есть страница (или чанк) из Confluence.

- Заголовок: "{title}"
- Содержание (HTML или Markdown):
{content}

Ниже приводится краткое описание родительской страницы (для контекста):
{parent_summary}

Задача: сделай короткое (1-2 предложения) summary для этой страницы,
дополняющее родительский контекст (если нужно).
Верни ТОЛЬКО текст summary.
"""
# Отправляем запрос к LLM и возвращаем сгенерированный текст


Ключевой момент – учитывать родительский контекст, чтобы summary было максимально информативным.

3. Генерация недостающих полей

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

def generate_missing_fields_with_llm(
title: str,
content: str,
components: str,
parent_summary: str = ""
) -> dict:
prompt = f"""
У нас есть информация о статье (или инструкции) из Confluence.
- Заголовок: "{title}"
- Содержание (HTML/Markdown):
{content}

Краткое описание родительской страницы (для контекста):
{parent_summary}

Прошу сгенерировать JSON со следующими полями:

1) "question":
- Формулировка в стиле реального пользовательского запроса,
- Вопрос должен быть сформулирован с учётом компонента "{components}".

2) "instruction_text":
- Подробное и структурированное описание (или пошаговая инструкция).

3) "keywords":
- Ключевые слова (не более 5-7), через запятую, отражающие основную суть.
- Последним элементом добавь {components}.

4) "usefulness_score":
- Число от 0 до 1 (1 — максимально полезно).

5) "updated":
- Реальная дата, если указана, иначе "неизвестно".

Ответ верни в формате JSON без лишнего текста.
"""
# Выполняем запрос к LLM, парсим ответ и возвращаем словарь с полями


В этом промте мы просим модель сгенерировать нужные данные в виде корректного JSON, что упрощает последующую обработку.

4. Рекурсивное получение родительского summary
  • 👍 1
More from @nerditru
  1. Sep 27, 2026Тут недавно вышла Jev от TypeSafe AI, и многие обсуждали сам подход: модель не пишет текст…
  2. Sep 24, 2026photo post
  3. Sep 24, 2026По понятиям AI инжиниринга Почему модель отвечает медленно? Почему поиск по документам воз…
  4. Sep 23, 2026Просто оставлю это тут. У кого есть мысли, давайте в комменты 🖥
  5. Sep 20, 2026Post #284
  6. Sep 14, 2026Post #283
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →