Chain-of-Symbol (CoS)

Representation-first техника: вместо длинных текстовых описаний модель получает компактные символы, схемы и сетки для пространственного reasoning.

Chain-of-Symbol (цепочка символов) — техника, при которой текстовые описания пространственных или структурных отношений заменяются компактными символьными представлениями. Вместо длинного описания вроде «кирпич A находится слева от кирпича B, который стоит на кирпиче C» модель получает схему, сетку или условную нотацию.

В 2026 году CoS полезнее рассматривать не как очередную вариацию CoT, а как representation trick: если проблема плохо ложится на линейный текст, нужно менять представление входа, а не бесконечно усиливать reasoning prompt. Именно поэтому CoS актуален не только для пространственных задач из paper-а, а вообще для случаев, где структура важнее формулировки.

Представьте, что вы объясняете дорогу. Вариант A: «Идите прямо 200 метров, затем поверните налево, пройдите мимо аптеки, поверните направо у светофора, через 100 метров будет вход». Вариант B — схема метро: линии, стрелки, точки. Второй вариант — нагляднее и понятнее. Chain-of-Symbol делает то же самое для LLM: вместо длинных текстовых описаний пространства — компактная символьная схема, которую модель «читает» точнее.

Суть в двух словах

Chain-of-Symbol заменяет многословные текстовые описания пространственных отношений символами. LLM плохо справляются с фразами вроде «кирпич A находится левее кирпича B» — теряются в длинных предложениях, путают направления. Но если ту же информацию представить как A / B (A слева от B), модель обрабатывает её точнее.

Ключевая идея: пространственные задачи сложны для LLM не потому, что модели не умеют рассуждать, а потому, что естественный язык — неэффективный формат для описания пространства. Символы — формат, который ближе к реальной структуре.

CoT с текстовым описанием
Кирпичная стена состоит из 3 рядов. В нижнем ряду слева направо: кирпич A, кирпич B, кирпич C. В среднем ряду: кирпич D расположен на стыке A и B, кирпич E — на стыке B и C. В верхнем ряду: кирпич F расположен на стыке D и E. Вопрос: какой кирпич находится непосредственно над кирпичом B? Ответ CoT: Кирпич B в нижнем ряду... D на стыке A и B, значит... E на стыке B и C... Наверное, D? (ОШИБКА)
CoS с символьным описанием
Стена: Ряд 3: _ F _ Ряд 2: D _ E Ряд 1: A B C Вопрос: что прямо над B? Ответ CoS: Смотрю колонку B (вторая). Ряд 2, позиция 2 = пусто (_). Ответ: ни один кирпич не стоит непосредственно над B. D и E стоят на стыках. (ВЕРНО)
Начните с простого: если задача включает описание расположения объектов (на столе, на карте, в здании), попробуйте нарисовать «символьную карту» прямо в промпте. Стрелки (→ ← ↑ ↓), разделители (/, |), сетки — всё это работает лучше, чем фразы «находится справа от» и «расположен над».

Почему LLM плохо решают пространственные задачи

Large Language Models обучаются на тексте — последовательности токенов. Пространственные отношения (лево-право, верх-низ, перед-за) кодируются в тексте неэффективно: одна и та же конфигурация может быть описана десятками способов, фразы многословны, а при росте числа объектов описания становятся запутанными.

Исследование Hu et al. (2023) выявило три причины ошибок:

  1. Многословность — текстовое описание сетки 3x3 занимает 5-10 предложений, а символьное — 3 строки
  2. Неоднозначность — «кирпич D стоит на стыке A и B» можно интерпретировать по-разному
  3. Потеря контекста — при длинных описаниях модель забывает ранние факты (attention degradation)

Типы задач, где CoS эффективен

Brick Wall (кирпичная стена)

Классическая задача из статьи: определить пространственные отношения между кирпичами в стене. Кирпичи расположены рядами, верхние стоят на стыках нижних.

Spatial Grid (пространственная сетка)

Объекты расположены в 2D-сетке. Нужно ответить на вопросы: «Что находится к северу от X?», «Сколько объектов между A и B?».

Последовательность поворотов и движений. Нужно определить конечную позицию или направление.

Как применять Chain-of-Symbol

Примеры

Кирпичная стена

ПромптChatGPT
Ниже — символьное представление кирпичной стены. Каждая буква — кирпич, _ — пустое место.

Ряд 4: _ _ H _ _
Ряд 3: _ F _ G _
Ряд 2: C _ D _ E
Ряд 1: A _ B _ _

Правило: верхний кирпич опирается на два нижних, стоящих по бокам от него.

Вопрос: на какие кирпичи непосредственно опирается H?

Рассуждай через символьное представление.
Ответ модели

Смотрю на символьное представление:

Ряд 4: _ _ H _ _ Ряд 3: _ F _ G _

H стоит в позиции 3 (колонка 3). В ряду 3 по бокам от позиции 3 стоят:

  • Позиция 2: F
  • Позиция 4: G

Ответ: H опирается на F и G.

Пространственная сетка

ПромптClaude
Объекты расположены в сетке 4x4. Символьная карта:

     C1  C2  C3  C4
R1 [  .   .   K   . ]
R2 [  M   .   .   . ]
R3 [  .   .   .   S ]
R4 [  .   T   .   . ]

K = книжный шкаф, M = монитор, S = стул, T = стол
. = пусто

Вопросы:
1. Что находится в двух клетках к югу от K?
2. Какой объект ближе всего к T?
3. В каком направлении от S находится M?
Ответ модели

Работаю по символьной карте.

1. Два к югу от K: K стоит на R1, C3. Два к югу = R3, C3 → пусто (.). Ответ: пустая клетка.

2. Ближайший объект к T: T на R4, C2. Считаю Manhattan-расстояния:

  • M (R2, C2): |4-2| + |2-2| = 2
  • K (R1, C3): |4-1| + |2-3| = 4
  • S (R3, C4): |4-3| + |2-4| = 3 Ответ: M (монитор), расстояние 2.

3. Направление от S к M: S на R3, C4. M на R2, C2. По строкам: R2 < R3 → север. По столбцам: C2 < C4 → запад. Ответ: северо-запад.

Маршрут

ПромптGemini
Робот стартует в точке (0, 0), лицом на север.

Маршрут в символьной нотации:
↑3 →2 ↑1 ←4 ↓2 →1

Обозначения: ↑ = вперёд (север), → = вправо (восток), ↓ = назад (юг), ← = влево (запад). Число = количество клеток.

Вопросы:
1. Финальная координата?
2. Manhattan-расстояние от старта?
3. На какой шаге робот оказался дальше всего от старта?
Ответ модели

Отслеживаю координаты (x = восток-запад, y = север-юг):

Старт: (0, 0)

  1. ↑3: (0, 3)
  2. →2: (2, 3)
  3. ↑1: (2, 4)
  4. ←4: (-2, 4)
  5. ↓2: (-2, 2)
  6. →1: (-1, 2)

1. Финальная координата: (-1, 2)

2. Manhattan: |-1| + |2| = 3

3. Максимальное расстояние:

  • (0,0)→0, (0,3)→3, (2,3)→5, (2,4)→6, (-2,4)→6, (-2,2)→4, (-1,2)→3 Максимум = 6 на шагах 3 и 4 (координаты (2,4) и (-2,4)). Ответ: шаг 3 (↑1) — впервые достигнуто расстояние 6.

Эффективность CoS vs CoT

Точность пространственного рассуждения: CoT vs CoS (ChatGPT, %)
CoT: Brick Wall36%
CoS: Brick Wall78%
CoT: Spatial Grid42%
CoS: Spatial Grid89%
CoT: Navigation54%
CoS: Navigation92%

Данные основаны на экспериментах Hu et al. (2023). Наибольший прирост наблюдается на задачах Brick Wall (+42 п.п.) — именно в них текстовые описания наиболее многословны и запутаны. На задачах Navigation прирост тоже значителен (+38 п.п.), хотя базовый уровень CoT выше благодаря более последовательной структуре маршрутных описаний.

Символьная нотация эффективна не только для пространственных задач. Попробуйте применять CoS для любых задач со сложными отношениями: организационные структуры (CEO → VP → Manager → IC), генеалогические деревья, сетевые топологии. Везде, где текстовое описание избыточно, символы помогут.

Как понимать Chain-of-Symbol в 2026

Сильная сторона CoS не в том, что модель внезапно начинает “лучше рассуждать”, а в том, что задача перестаёт быть плохо представленной. Многие ошибки LLM на spatial, diagram и layout-задачах возникают не из-за отсутствия reasoning capability, а из-за неудачной упаковки отношений в длинный текст.

Поэтому CoS сегодня логично ставить рядом с:

  • table prompting
  • diagram-style representations
  • graph encodings
  • structured inputs для planning и routing

Во всех этих случаях основная оптимизация идёт через форму представления, а не через более длинную цепочку мыслей.

Где техника реально полезна

На практике CoS хорошо окупается в четырёх типах задач:

  • spatial QA и navigation
  • layout-aware review: UI, wireframes, dashboards, seating, storage maps
  • иерархии и графы, которые в текстовом описании быстро становятся нечитаемыми
  • agent workflows, где модель должна держать рабочую схему мира в компактном виде

Если у вас есть возможность превратить проблему в матрицу, ASCII-схему, координаты, adjacency list или короткую символическую запись, это часто даёт больший прирост, чем ещё один reasoning wrapper.

Практические границы CoS

При этом CoS легко переоценить:

  1. Символы помогают только если они действительно сохраняют отношения, а не теряют детали.
  2. Плохая или нестабильная нотация делает задачу ещё хуже, чем текст.
  3. Техника не заменяет retrieval, tool use и формальную проверку там, где нужна точность сверх представления.

Хорошее практическое правило: используйте CoS, когда человек сам инстинктивно хочет “нарисовать схему на салфетке”. Если же задачу естественнее решать таблицей, кодом или обычным текстом, forcing symbolic format пользы не даст.

Создание символьных представлений

Принципы кодирования

Эффективное символьное представление следует трём правилам:

  1. Изоморфность — символьная структура должна сохранять все отношения из текста. Потеря информации при конвертации = потеря точности
  2. Компактность — чем короче представление, тем лучше. Сетка 5x5 в символах — 5 строк по 5 символов, а в тексте — 25+ предложений
  3. Читаемость — символы должны быть интуитивны. / для «слева от» менее очевидно, чем ASCII-сетка. Добавляйте легенду

Справочник нотаций

Тип структурыСимвольная нотацияПример
Линейный ряд (лево-право)Объекты через пробелA B C D
2D-сеткаASCII-таблицаA . B / . C . / D . E
ИерархияОтступы или стрелкиCEO → VP → Manager
МаршрутСтрелки + числа↑3 →2 ↓1 ←4
Граф связейУзлы + рёбраA--B, B--C, C--A
Стек (верх-низ)Вертикальный список[F] / [D E] / [A B C]

Автоматическая конвертация текста в символы

from openai import OpenAI

client = OpenAI()


def text_to_symbols(
    spatial_description: str,
) -> str:
    """
    Конвертирует текстовое описание
    пространственной структуры в символьное
    представление через LLM.
    """
    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[
            {
                "role": "system",
                "content": (
                    "Ты конвертируешь текстовые описания "
                    "пространственных структур в компактные "
                    "символьные представления.\n\n"
                    "Правила:\n"
                    "1. Используй ASCII-сетку для 2D\n"
                    "2. Буквы/слова для объектов, "
                    ". для пустых мест\n"
                    "3. Стрелки для направлений\n"
                    "4. Добавь легенду, если неочевидно\n"
                    "5. Сохрани ВСЕ отношения из текста\n"
                    "6. Выведи ТОЛЬКО символьное "
                    "представление, без пояснений"
                ),
            },
            {
                "role": "user",
                "content": spatial_description,
            },
        ],
        temperature=0,
    )
    return response.choices[0].message.content


def solve_spatial_with_cos(
    task: str,
    question: str,
) -> str:
    """
    Chain-of-Symbol: конвертация + решение.
    1. Конвертируем текст в символы
    2. Решаем задачу по символьному
       представлению
    """
    # Шаг 1: конвертация
    symbols = text_to_symbols(task)

    # Шаг 2: решение
    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[
            {
                "role": "system",
                "content": (
                    "Решай пространственные задачи, "
                    "используя символьное представление. "
                    "Рассуждай по символам, не переводи "
                    "обратно в текст."
                ),
            },
            {
                "role": "user",
                "content": (
                    f"Символьное представление:\n"
                    f"{symbols}\n\n"
                    f"Вопрос: {question}"
                ),
            },
        ],
        temperature=0,
    )
    return response.choices[0].message.content


# Пример
task = (
    "На столе слева направо стоят: ваза, "
    "лампа, книга. За вазой (дальше от нас) "
    "лежит телефон. Перед книгой (ближе к нам) "
    "стоит чашка."
)
question = "Что находится между телефоном и чашкой по диагонали?"

answer = solve_spatial_with_cos(task, question)
print(answer)

Когда использовать Chain-of-Symbol

Плюсы

  • Прирост +20-60% на пространственных задачах — самый высокий среди текстовых техник промптинга
  • Не требует дополнительных API-вызовов — просто меняем формат входных данных
  • Сокращает длину промпта — символьное представление в 3-5 раз компактнее текстового
  • Работает с любой LLM — не нужна специальная модель или fine-tuning
  • Комбинируется с другими техниками — CoS + CoT, CoS + Self-Consistency

Минусы

  • Эффективен только для задач с пространственными или структурными отношениями — не универсален
  • Требует ручной конвертации текста в символы (или дополнительного LLM-вызова для автоматизации)
  • Не стандартизирован — нет единой нотации, нужно подбирать символы под задачу
  • Для сложных 3D-структур ASCII-нотация ограничена — может потребоваться другой формат
Не пытайтесь использовать CoS для задач без пространственной или структурной составляющей. Техника помогает там, где текстовое описание избыточно: расположение объектов, навигация, схемы. Для задач чистой логики, арифметики или генерации текста — используйте Chain of Thought, Program of Thoughts или другие подходящие техники.

Связанные техники

  • Chain of Thought (CoT) — базовая техника пошагового рассуждения, которую CoS дополняет символьным представлением
  • Program of Thoughts (PoT) — похожая идея смены формата: вместо текста — код. CoS меняет текст на символы, PoT — на программу
  • Chain of Code (CoC) — генерация кода с эмуляцией для семантических операций. CoS и CoC оба уходят от чистого текста
  • Tree of Thoughts (ToT) — исследование нескольких путей решения. Можно комбинировать: каждый путь в формате CoS
  • Step-Back Prompting — абстрагирование перед решением. CoS — тоже форма абстрагирования: от текста к символам

Проверьте себя

Проверьте себя

1. Почему LLM ошибаются в пространственных задачах при текстовом описании?

2. Какой тип символьной нотации лучше всего подходит для задачи 'расположение мебели в комнате'?

3. Чем Chain-of-Symbol отличается от Program of Thoughts?