All streams
Search
Write a publication
Pull to refresh

Comments 21

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

  1. Почему спрашиваешь по-русски? Чтобы выжать максимум из модели, спрашивать надо на английском. Да, это не очень сильно влияет, но всё же - зачем?

  2. Почему твой промт не выглядит так: "cначала порассуждай, потом дай ответ. думай шаг за шагом"? Если ты требуешь от модели сразу ответ, то ей всю когнитивную нагрузку надо вместить в один токен вывода; а когда просишь порассуждать, когнитивная нагрузка распределяется на много токенов, и это становится посильно для модели

Иди промтить учись, невежда

Да там без разницы. Промптом нельзя исправить отсутствие мыслей у модели

Спустя 10 минут если не больше

gpt-4o и deepseek v3(бездумный) тоже выдают разные неправильные ответы от прогона к прогону

А как, интересно, вы ему дали картинку, если он не понимает картинки?

Роботу дана задача в текстовом виде. Картинка добавлена для иллюстрации, что бы людям наглядно показать что происходит.

Учи prompt engineering.

P.S.
Сам промпт скрыл, личный - универсальный, созданный на основе многолетнего опыта.

Да, вот примерно такими техниками и получается, что "ИИ завоевал золото в IMO"

И тут приходят ламеры и спрашивают "<задача>. только ответ", ИИ дает неправильный ответ, и орут, что ИИ тупой. Если у кого-то другого инструмент работает, а у тебя нет, то правильный вывод - я рукожоп, а не инструмент тупой.

Ну я так тоже могу. Просто покажу ему решение сначала.

Как говорится, не мечите бисер перед свиньями – если человек, видя решение, всё равно отрицает его, значит, он просто не хочет понимать. А не хочет – значит, невежество сильнее разума.

  1. А теперь заставьте его решить эту же задачу геометрически. Это алгебраическое решение, и оно действительно универсальное, больших рассуждений не требует.(задача олимпиадная - решение общим алгоритмом будет оценено на два балла ниже). Только до Декарта такое решение было не возможно, а подобные задачи тем не менее решались. Каждая требовала уникального доказательства. Именно поэтому я сомневаюсь, что болван справится, скорее всего у него из обучающей выборки это просто выкинули, т к это ее лишь раздует, а эффекта не даст, потому что каждая задача уникальна.

  2. Без промпта не объективно, т к мы почему то вам должны на слово верить. (Ведь решение можно засунуть в промпт) А мне лично не хочется, потому что чот апломбу многовато в вашем ответе.

P.S.

Ну а насчет промпта, не обессудьте, я его придумал и итеративно улучшал, когда RL только появлялся и не очень хотел бы, что бы кто нибудь кроме меня его использовал...

Попытался по тексту угадать промпт, написал такой:

<role>You are a world-class expert on classic Euclidean geometry.<role> Please solve the problem described below in Russian in several major steps:

First step: Conduct an analysis of the problem, stating the final goal, identifying restrictions, and determining subtasks that will help find the solution.

Second step: do the initial solution inside the <initial-solution> block.

Third step: Inside <analysis> block, analyze the initial solution and list all flaws and possible errors. Then, list all possible improvements that can mitigate these flaws and fix the errors.

Fourth step: Inside <improvement>, consider how you apply the improvement to the initial solution.

The last step: inside <final-solution>, provide the solution where all improvements are applied. You also need to check how reasonable the final answer is for the initial problem statement.

---

ЗАДАЧА: Найдите площадь квадрата, где две окружности радиусом 5 см каждая касаются друг друга и общей касательной, а квадрат вписан между окружностями и касательной. Решите задачу исключительно методами классической синтетической геометрии. Координаты и алгебра недопустимы.

Но этот Kimi-K2 с таким промптом лажает, решает неправильно. Дальше улучшать промпт было лень, решил закинуть его в другие модели.

Gemini 2.5 pro решил задачу правильно, а lite нет.

DeepSeek R1 думал неприлично долго, но в итоге решил правильно.

Claude Sonnet 4 на удивление решил не правильно.

Ок, я принимаю ваш ответ и согласен, что был не прав, что оно вообще не справится. Но только потому что ниже человек говорит, что с его промтом некоторые сети решают верно (Но не Kimi K2 почему то)

А второй момент - сами рассуждения не идеальны (например, оно пишет, что "расстояние от O1 до BC равно 5-s" но на самом деле имеет в виду дополнительное построение и расстояние до этой прямой, которую оно никак не обозначило) Поэтому, есть предположение, что с другими задачками оно может и не справиться. Я допускаю, что был не прав на счет того, что такие задачи и решения геометрически выкинули из обучающей выборке, но то что оно вряд ли сможет решать их так же как человек пока сомневаюсь. Здесь задачка по сути в одно дополнительное построение, а ведь могут быть гораздо более сложные доп псотроения. Впрочем я в то же время не отрицаю, что могут быть специализированные сети именно на это обученные. У меня сомнения именно по сетям обученным на "больших" данных, где всё подряд.

Прикольно наверное искать решение, когда уже дан ответ. Сидеть и улучшать промт пока он не получит в решении нужный результат. Если же ответ был бы неизвестен, то ты после своего гениального промтинга получил ответ «100» и отправился куда подальше

Спасибо за задачку! Она подтолкнула меня потестировать как подобные задачи могут решать "маленькие" LLM которые можно запустить на игровом компьютере локально. Я перевел задачу на английский и добавил немного промпта который по-идее должен структурировать размышления, получилось вот-так:

<role>You are a world-class expert on classic Euclidean geometry.<role> Please solve the problem described below by using several major steps:

- First step: Conduct an analysis of the problem, stating the final goal, identifying restrictions, and determining subtasks that will help find the solution.

- Second step: do the initial solution inside the <initial-solution> block.

- Third step: Inside <analysis> block, analyze the initial solution and list all flaws and possible errors. Then, list all possible improvements that can mitigate these flaws and fix the errors.

- Fourth step: Inside <improvement>, consider how you apply the improvement to the initial solution.

- The last step: inside <final-solution>, provide the solution where all improvements are applied. You also need to check how reasonable the final answer is for the initial problem statement.

---

The problem: Two circles of radius 5 cm each touch each other and have a common tangent. A square is inscribed between the circles and the tangent. What is the area of the square?

Но в итоге оказалось, что тестирую больше размышляющие модели, а они размышляют по-своему и уже после размышления выдают ответ в запрашиваемом виде, так что для них вот-такой промпт тоже работает:

As a world-class expert on classic Euclidean geometry, please solve problem: Two circles of radius 5 cm each touch each other and have a common tangent. A square is inscribed between the circles and the tangent. What is the area of the square?

Первая LLM которую я решил потестировать была Qwen QwQ - это первая размышляюшая модель на 32B параметров, выпущенная Qwen в ноябре прошлого года, немного устарела, ей на смену пришла размышляющая Qwen3-32B, но мне QwQ нравится. К тому-же 32 миллиарда параметров это самая большая модель, которую я могу запустить у себя на компе. В итоге, потратив почти 10тыс токенов она выдала правильный результат!

Воодушевленный этим, я решил проверить задачу на более маленьких моделях, начал с Gemma3 на 27 миллиардов параметров, хорошая рабочая лошадка, которая и без reasoning режима отлично выполняет всякие мелкие задачи. Но, к сожалению, никаким промптом от нее добиться нормального результата не получилось. Очень жаль, особенно с учетом того, что этот промпт на английском Gemin 2.5 Flash, смогла решить.

Может быть 32 миллиарда параметров это предел? На всякий случай решил проверить на Phi-4 Reasoning с 14 миллиардов параметров. Я не очень люблю эту модель, у нее половина размышлений на тему того, как ее ответ соответствует правилам. Типа "Согласно правилу 4 если это промпт на мед.тему, я должна дать пользователю пояснение, что ему надо идти к доктору, а не со мной разговаривать, проверю запрос, запрос про математику, а не про медицину" и тд и тп. Очень такая хрень раздражает. Но я слышал, что эта модель хороша в математике и решил проверить. На удивление, она задачу решила! Потратив всего 9тыс токенов:

Phi-4 14 миллиардов параметров, 8 бит квантизация
Phi-4 14 миллиардов параметров, 8 бит квантизация

ОК, воодушевленный таким результатом, я решил еще проверить Qwen3 14b и она тоже смогла решить, да еще и красиво оформила:

Qwen3 14 миллиардов параметров 8 бит квантизация
Qwen3 14 миллиардов параметров 8 бит квантизация

Тут я решил проверить модели Mistral: Small 3.2 24B и размышляющую модель Magistral Small 2506. К сожалению, они обе не смогли решить, причем Magistral потратила почти 20тыс токенов на решение. И в ответе она написала, что у квадратного уравнения есть 2 решения, с длинной стороны квадрата 2 см и 10 см, но выбрала в итоге 10 см, т.к. он вписывается внутрь фигуры. Возможно французкая модель не очень дружит с английским, или я с ним не настолько дружу и дал неверный перевод слову "вписанный":

Magistral Small 2506
Magistral Small 2506

Ок, финальный заход, почему-бы не проверить Qwen3 на 8 миллиардов параметров? Проверил, за те-же 19 тыс. токенов, она решила все правильно:

Qwen3 на 8 миллиардов параметров 8 бит квантизация
Qwen3 на 8 миллиардов параметров 8 бит квантизация

Еще меньше, модели на 4 миллиарда параметров Phi-4 mini и Qwen3 уже решить задачку не смогли.

Ах да, чуть не забыл, с таким промптом Kimi-K2 задачку решает тоже. И ответ 100 он вам давал наверное потому-что неправильно понял русское слово "вписанный", как Magistral

Спасибо автору! Интересно. Но, не приведены ссылки на источники. Откуда это всё? Даже, если бы текст писал автор программной разработки, то и он же не с нуля всё выдумал — уже бы сослался на какие-то материалы, использованные им.

«Это несерьезно!» // Бывалый
«Это несерьезно!» // Бывалый

Запустил задачу на DeepSeek, Qwen 3 и Kimi. Все ответили правильно и довольно быстро. Запрос был в точности как у автора задачи. Что за понты по поводу чудо промта у einhorn не понятно.

Какую задачу? Если это то

Найдите площадь квадрата, изображенного на рисунке, где две окружности рад иусом 5 см каждая касаются друг друга и общей касательной, а квадрат вписан между окружностями и касательной.

Вот что отвечает kimi (очень долго размышляет, путает язык, ну и ответ неверный, собрал все ачивки) https://www.kimi.com/share/d2e57nccouafn1os9mdg

Deepseek недумающий, то есть свежий v3 - аналогично, долгие рассуждения и неверный ответ

Квен3-235б - долгие размышления и ответ правильный

Попросил через Ollama локальную модель Qwen3-Coder-30B-A3B-Instruct-UD-Q6_K_XL.gguf сгенерировать программу на pyton для решения данной задачи (радиус окружностей задает пользователь) с постоением графика. Модель выдала такой код, который отлично работает:

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Circle

def solve_square_in_circle_tangent(radius):
    """
    Solve for the area of the square inscribed between two touching circles 
    and their common tangent line.
    
    Parameters:
    radius (float): Radius of the circles
    
    Returns:
    tuple: (area_of_square, side_length)
    """
    # For two circles of radius r that touch each other,
    # the distance between centers is 2r
    # The centers are at (-r, r) and (r, r) with tangent line y = 0
    
    # Using the derived formula from geometric analysis:
    # s² - 12s + 20 = 0 where s is side length of square
    # This gives s = 2 or s = 10
    # Since we want a square that fits between circles, s = 2
    
    # Actually let's solve the general case properly:
    # From the constraint that top corners touch circles:
    # (r - s/2)² + (r - s)² = r²
    
    # Expanding: r² - rs + s²/4 + r² - 2rs + s² = r²
    # 2r² - 3rs + 5s²/4 = r²  
    # r² - 3rs + 5s²/4 = 0
    # 4r² - 12rs + 5s² = 0
    
    # Using quadratic formula: s = (12r ± √(144r² - 80r²))/10 = (12r ± √(64r²))/10 = (12r ± 8r)/10
    # So s = 20r/10 = 2r or s = 4r/10 = 2r/5
    
    # Since we want the square to fit between circles, we take s = 2r/5
    
    side_length = 2 * radius / 5
    area = side_length ** 2
    
    return area, side_length

def draw_diagram(radius):
    """
    Draw the diagram showing the two circles and inscribed square.
    """
    # Create figure and axis
    fig, ax = plt.subplots(1, 1, figsize=(10, 8))
    
    # Circle parameters
    center1 = (-radius, radius)
    center2 = (radius, radius)
    
    # Square parameters
    side_length = 2 * radius / 5
    square_bottom = 0
    square_top = side_length
    square_left = -side_length/2
    square_right = side_length/2
    
    # Draw circles
    circle1 = Circle(center1, radius, fill=False, color='blue', linewidth=2)
    circle2 = Circle(center2, radius, fill=False, color='blue', linewidth=2)
    
    ax.add_patch(circle1)
    ax.add_patch(circle2)
    
    # Draw tangent line
    ax.axhline(y=0, color='black', linewidth=1)
    
    # Draw square
    square = plt.Rectangle((square_left, square_bottom), 
                          side_length, side_length, 
                          fill=False, color='red', linewidth=2)
    ax.add_patch(square)
    
    # Mark key points
    ax.plot(center1[0], center1[1], 'bo', markersize=8, label=f'Circle 1 Center ({center1[0]}, {center1[1]})')
    ax.plot(center2[0], center2[1], 'bo', markersize=8, label=f'Circle 2 Center ({center2[0]}, {center2[1]})')
    
    # Mark square corners
    ax.plot(square_left, square_top, 'ro', markersize=8, label='Square Top Left')
    ax.plot(square_right, square_top, 'ro', markersize=8, label='Square Top Right')
    
    # Draw lines from centers to square corners (for verification)
    ax.plot([center1[0], square_left], [center1[1], square_top], 'g--', alpha=0.7)
    ax.plot([center2[0], square_right], [center2[1], square_top], 'g--', alpha=0.7)
    
    # Set equal aspect ratio and limits
    ax.set_xlim(-radius*1.5, radius*1.5)
    ax.set_ylim(-radius*0.5, radius*1.5)
    ax.set_aspect('equal')
    
    # Add grid and labels
    ax.grid(True, alpha=0.3)
    ax.set_xlabel('X coordinate (cm)')
    ax.set_ylabel('Y coordinate (cm)')
    ax.set_title(f'Circle Radius: {radius} cm | Square Area: {solve_square_in_circle_tangent(radius)[0]:.2f} cm²')
    
    # Add legend
    ax.legend()
    
    plt.tight_layout()
    return fig

def main():
    """
    Main function to run the program.
    """
    print("Square Inscribed Between Two Touching Circles and Tangent Line")
    print("=" * 65)
    
    try:
        radius = float(input("Enter the radius of the circles (cm): "))
        
        if radius <= 0:
            print("Error: Radius must be positive!")
            return
            
        area, side_length = solve_square_in_circle_tangent(radius)
        
        print(f"\nResults:")
        print(f"Circle radius: {radius} cm")
        print(f"Square side length: {side_length:.2f} cm")
        print(f"Square area: {area:.2f} cm²")
        
        # Draw the diagram
        fig = draw_diagram(radius)
        plt.show()
        
    except ValueError:
        print("Error: Please enter a valid number for the radius.")
    except Exception as e:
        print(f"An error occurred: {e}")

# Run the program
if __name__ == "__main__":
    main()
Sign up to leave a comment.

Articles