Dass die Fähigkeiten von LLMs in den letzten Jahren dramatisch vorangetrieben sind, aber es ist schwer zu quantifizieren, wie intestine sie geworden sind.

Das brachte mich dazu, an ein geometrisches Downside zurückzudenken, das ich letztes Jahr auf einem YouTube -Kanal gestoßen bin. Dies battle im Juni 2024, und ich versuchte, das führende Großsprachmodell zu dieser Zeit (GPT-4O) zur Lösung des Rätsels zu erhalten. Es lief nicht so intestine und erforderte eine Menge Anstrengung, eine Lösung zu finden, und ich fragte mich, wie die neuesten LLMs mit demselben Rätsel abschneiden würden.

Das Puzzle

Hier ist eine kurze Erinnerung daran, was ich die LLM gebeten habe, damals zu lösen. Angenommen, wir haben das folgende Netz von Punkten/Knoten. In der X- und Y -Ebene ist jeder Knoten genau eine Einheit von seinem angrenzenden Nachbarn entfernt. Es sieht so aus,

Nun, die Frage, die ich beantworten wollte, battle das,

What number of distinct squares will be drawn on this diagram?

Es wurde schnell klar, dass GPT-4O die Antwort nicht kannte, additionally änderte ich mich leicht und fragte sie stattdessen.

I would love a Python program that plots out all of the squares we are able to 
draw on the hooked up diagram, assuming that the corners of any sq. 
should lie on one of many spots on the diagram. Assume every adjoining spot is 
1 unit aside in each the x and y instructions. Additionally print out a abstract of 
the variety of squares of the identical measurement and what their aspect lengths are

Lange Geschichte, kurz gesagt, ich letztlich Ich habe GPT-4O, um eine korrekte Python-basierte Lösung zu finden. Trotzdem brauchte ich ungefähr zwei Stunden und weit über 40 Iterationen von mir, die mit dem Modell hin und her ging, um seine Antwort zu verfeinern, bis es etwas fand, das funktioniert.

NB, hast du die Antwort schon ausgearbeitet? Selbst jetzt kann ich immer noch nicht glauben, dass es 21 Quadrate sind, die Sie auf diese Grafik zeichnen können.

Interaktion mit Sonett 4.5

Dies bringt uns zurück in den heutigen Tag und die jüngste Veröffentlichung des Anthropics, das das heute als am besten verfügbare Codierungsmodell angesehen wird, nämlich Claude Sonnet 4.5. Es ist ungefähr 16 Monate her, seit ich mich das zuletzt angesehen habe. Wie viel hat sich LLMs in der Zwischenzeit verbessert? Mal sehen, wie Sonnet 4.5 mit dem Puzzle fertig wird.

Um Sonnet 4.5 zu verwenden, habe ich Anthropics Homepage besucht.

https://www.anthropic.com

Sie sollten eine solche Seite sehen.

Bild von der anthropischen Web site

Klicken Sie auf das große Schwarz „Versuchen Sie es mit Claude“ Style oben rechts auf dem Bildschirm. Sie werden gebeten, sich an diesem Punkt anzumelden. Wenn Sie noch kein Konto mit Anthropic haben, stellen Sie bitte jetzt eines ein. Es ist völlig frei, dies zu tun.

Sobald Sie angemeldet sind, werden Sie auf einen Bildschirm mit einem vertrauten Chat-basierten Fenster gebracht, mit dem Sie mit Sonnet 4.5 Fragen interagieren und diese stellen können.

Bevor ich das Modell aufforderte, ein Python -Programm zur Lösung des Puzzles bereitzustellen, stellte ich ihm eine klare Frage, um festzustellen, ob es die Antwort bereits kannte.

Es kam zurück mit,

 this grid, I must rely all attainable squares of various 
sizes that may be shaped by connecting the dots.
Let me first establish the grid construction. The dots type:

2 dots within the prime row
2 dots within the second row
6 dots within the third row
6 dots within the fourth row
2 dots within the fifth row
2 dots within the sixth row

This seems to be a cross or plus-sign formed grid sample.
Now I am going to rely squares by measurement:
1×1 squares: These are shaped by any 4 dots that make a unit sq..

Within the horizontal center part (rows 3-4): 5 squares per row × 1 = 5 squares
Within the vertical center part (columns the place the cross intersects): counting 
the vertical segments provides us 5 extra squares
Whole: 10 small squares

2×2 squares: These want 4×4 preparations of dots.

Within the horizontal part: 4 squares
Within the vertical part: 4 squares
Overlap in middle: -1 (counted twice)
Whole: 7 squares of measurement 2×2

3×3 squares and bigger: The grid sample is barely 6 dots large at its most, however the cross form limits the place bigger squares can match. Checking the geometry:

One 3×3 sq. can match within the middle the place the arms of the cross overlap
Whole: 1 sq. of measurement 3×3

Whole: 10 + 7 + 1 = 18 squares

Additionally zuversichtlich falsch. Ich habe neugierig und fasziniert von dem Modell des Modells auf ein 3 × 3 Quadrat (das in diesem Raster unmöglich ist) und bat es, mir das Quadrat auf dem Diagramm zu zeigen. Es antwortete damit.

Trying on the grid extra rigorously, I must rethink whether or not a 3×3 sq. 
truly exists.
For a 3×3 sq. to exist, I would want a 4×4 association of dots 
(since a 3×3 sq. requires 4 dots on either side). Let me examine the grid 
construction:
The grid seems to be:

Rows 1-2: solely 2 dots every (centered)
Rows 3-4: 6 dots every (full width)
Rows 5-6: solely 2 dots every (centered)

For a 3×3 sq., I would want 4 consecutive rows and 4 consecutive columns all with dots on the intersection factors. Nevertheless, wanting on the cross/plus sample:

The highest solely has 2 columns of dots
The center has 6 columns of dots
The underside solely has 2 columns of dots

Since rows 1-2 and rows 5-6 solely have 2 dots every (not spanning the complete width)
, there is not truly a 4×4 block of dots anyplace on this grid.
I must appropriate my reply: There may be NO 3×3 sq. attainable on this grid.
The overall needs to be: 10 (1×1 squares) + 7 (2×2 squares) = 17 squares
I apologize for the error in my preliminary rely. The cross-shaped sample 
prevents any sq. bigger than 2×2 from being shaped.

Okay, es wurde sich mit dieser Antwort halb wieder einlöste, aber im Grunde sagte es nicht, dass es insgesamt 21 Quadrate gab.

Die endgültige Antwort

Um die Dinge mit dem Modellvergleich über die 16 Monate truthful zu halten, stellte ich Sonnet 4.5 genau die gleiche Frage, die ich GPT-4O gestellt hatte, was als Erinnerung dies battle.

I would love a Python program that plots out all of the squares we are able to draw on 
the hooked up diagram, assuming that the corners of any sq. should lie on one 
of the spots on the diagram. Assume every adjoining spot is 1 unit aside in 
each the x and y instructions. Additionally print out a abstract of the variety of 
squares of the identical measurement and what their aspect lengths are

Sonnet 4.5 dachte für alle 5 Sekunden nach, bevor er seinen Python -Code generierte.

import matplotlib.pyplot as plt
import numpy as np
from itertools import combos
from collections import defaultdict

# Outline the grid factors based mostly on the picture
factors = (
    # High two rows (2 dots every, centered)
    (3, 6), (4, 6),
    (3, 5), (4, 5),
    # Center two rows (6 dots every, full width)
    (1, 4), (2, 4), (3, 4), (4, 4), (5, 4), (6, 4),
    (1, 3), (2, 3), (3, 3), (4, 3), (5, 3), (6, 3),
    # Backside two rows (2 dots every, centered)
    (3, 2), (4, 2),
    (3, 1), (4, 1),
)

def is_square(p1, p2, p3, p4):
    """Verify if 4 factors type a sq. and return aspect size if true."""
    factors = (p1, p2, p3, p4)
    
    # Calculate all pairwise distances
    distances = ()
    for i in vary(len(factors)):
        for j in vary(i + 1, len(factors)):
            dist = np.sqrt((factors(i)(0) - factors(j)(0))**2 + 
                          (factors(i)(1) - factors(j)(1))**2)
            distances.append(dist)
    
    distances.type()
    
    # For a sq.: 4 equal sides and a pair of equal diagonals
    # Diagonals needs to be sqrt(2) occasions the aspect size
    if len(distances) == 6:
        sides = distances(:4)
        diagonals = distances(4:)
        
        # Verify if all sides are equal
        if np.allclose(sides, (sides(0)) * 4, atol=1e-6):
            # Verify if diagonals are equal
            if np.allclose(diagonals, (diagonals(0)) * 2, atol=1e-6):
                # Verify if diagonal = aspect * sqrt(2)
                if np.allclose(diagonals(0), sides(0) * np.sqrt(2), atol=1e-6):
                    return True, sides(0)
    
    return False, 0

def order_square_points(p1, p2, p3, p4):
    """Order factors of a sq. in counterclockwise order ranging from bottom-left."""
    factors = (p1, p2, p3, p4)
    # Discover centroid
    cx = sum(p(0) for p in factors) / 4
    cy = sum(p(1) for p in factors) / 4
    
    # Type by angle from centroid
    def angle(p):
        return np.arctan2(p(1) - cy, p(0) - cx)
    
    factors.type(key=angle)
    return factors

# Discover all squares
squares = ()
squares_by_size = defaultdict(record)

for combo in combos(factors, 4):
    is_sq, side_length = is_square(*combo)
    if is_sq:
        ordered = order_square_points(*combo)
        squares.append(ordered)
        squares_by_size(spherical(side_length, 2)).append(ordered)

# Print abstract
print("=" * 50)
print("SUMMARY OF SQUARES FOUND")
print("=" * 50)
total_squares = 0
for side_length in sorted(squares_by_size.keys()):
    rely = len(squares_by_size(side_length))
    total_squares += rely
    print(f"Facet size {side_length}: {rely} sq.(s)")

print(f"nTotal squares: {total_squares}")
print("=" * 50)

# Create visualization
fig, axes = plt.subplots(2, 2, figsize=(14, 14))
axes = axes.flatten()

# Plot 1: All dots
ax = axes(0)
x_coords = (p(0) for p in factors)
y_coords = (p(1) for p in factors)
ax.scatter(x_coords, y_coords, c='black', s=100, zorder=3)
ax.set_xlim(0, 7)
ax.set_ylim(0, 7)
ax.set_aspect('equal')
ax.grid(True, alpha=0.3)
ax.set_title('Unique Grid', fontsize=14, fontweight='daring')
ax.set_xlabel('X')
ax.set_ylabel('Y')

# Plot 2: All squares overlaid
ax = axes(1)
ax.scatter(x_coords, y_coords, c='black', s=100, zorder=3)
colours = plt.cm.rainbow(np.linspace(0, 1, len(squares)))
for sq., shade in zip(squares, colours):
    square_closed = sq. + (sq.(0))
    xs = (p(0) for p in square_closed)
    ys = (p(1) for p in square_closed)
    ax.plot(xs, ys, c=shade, linewidth=2, alpha=0.6)
ax.set_xlim(0, 7)
ax.set_ylim(0, 7)
ax.set_aspect('equal')
ax.grid(True, alpha=0.3)
ax.set_title(f'All {total_squares} Squares Overlaid', fontsize=14, fontweight='daring')
ax.set_xlabel('X')
ax.set_ylabel('Y')

# Plot 3 & 4: Squares by measurement
plot_idx = 2
for side_length in sorted(squares_by_size.keys()):
    if plot_idx >= len(axes):
        break
    
    ax = axes(plot_idx)
    ax.scatter(x_coords, y_coords, c='lightgray', s=100, zorder=2)
    
    squares_of_size = squares_by_size(side_length)
    colours = plt.cm.viridis(np.linspace(0, 1, len(squares_of_size)))
    
    for sq., shade in zip(squares_of_size, colours):
        square_closed = sq. + (sq.(0))
        xs = (p(0) for p in square_closed)
        ys = (p(1) for p in square_closed)
        ax.plot(xs, ys, c=shade, linewidth=2.5, marker='o', markersize=8)
    
    ax.set_xlim(0, 7)
    ax.set_ylim(0, 7)
    ax.set_aspect('equal')
    ax.grid(True, alpha=0.3)
    ax.set_title(f'Squares with aspect size {side_length} ({len(squares_of_size)} complete)', 
                 fontsize=14, fontweight='daring')
    ax.set_xlabel('X')
    ax.set_ylabel('Y')
    plot_idx += 1

plt.tight_layout()
plt.present()

Auf den ersten Blick dachte ich, dass Sonett keine Möglichkeit gab, eine korrekte Lösung so schnell zu finden. Gpt-4o hatte Stunden dauerte. Ich habe jedoch alle erforderlichen Bibliotheken den benötigten Code installiert und kopiert und in eine Jupyter -Pocket book -Zelle eingefügt, die ihn ausgeführt und die folgende Ausgabe erhielt. Ich habe die Grafiken vorerst weggelassen, die ebenfalls ausgegeben wurden.

==================================================
SUMMARY OF SQUARES FOUND
==================================================
Facet size 1.0: 9 sq.(s)
Facet size 1.41: 4 sq.(s)
Facet size 2.24: 2 sq.(s)
Facet size 2.83: 4 sq.(s)
Facet size 3.61: 2 sq.(s)

Whole squares: 21
==================================================

#
# Plus some graphs that I am not displaying right here
#

Das schockierte mich. Die Antwort battle absolut genau richtig.

Das einzig Leichte, was das Modell nicht ganz richtig machte, battle, dass es nicht ein Diagramm für jeden Satz unterschiedlich großer Quadrate ausgab. Es hat gerade die neun 1x1s und die vier √2x√2 gemacht. Ich habe das gelöst, indem ich Sonett auch aufforderte, diese einzubeziehen.

Are you able to print the graphs in sq. aspect order. Can also you have got two graphs  
aspect by aspect on every "line"

Das hat es produziert.

Schön.

Zusammenfassung

Um zu demonstrieren, wie dramatisch LLMs seit ungefähr einem Jahr vorgezogen sind, habe ich beschlossen, ein herausforderndes geometrisches Puzzle zu überdenken, das ich zum ersten Mal mit GPT-4O im Juni 2024 lösen wollte. Das Rätsel bestand darin, ein Python-Programm zu schreiben, das alle möglichen Quadrate auf einem bestimmten Cross-Formed-Grid von Dots findet.

Meine Erfahrung vor etwas mehr als einem Jahr battle ein Kampf; Ich brauchte ungefähr zwei Stunden und über 40 Eingabeaufforderungen, GPT-4O zu einer korrekten Python-Lösung zu führen.

Schneller Vorlauf bis heute, und ich habe das neue Claude -Sonnet 4.5 getestet. Als ich dem Modell die Frage zum ersten Mal direkt stellte, konnte die korrekte Anzahl von Quadraten nicht berechnet werden. Kein guter Anfang, der eigentliche Take a look at bestand jedoch darin, ihm die zu geben exakt gleiche Eingabeaufforderung Ich habe auf GPT-4O verwendet.

Zu meiner Überraschung erzeugte es eine vollständige, korrekte Python -Lösung in Ein Schuss. Der Code, den er generierte, fand nicht nur alle 21 Quadrate, sondern kategorisierten sie auch korrekt nach ihren eindeutigen Seitenlängen und generierten detaillierte Diagramme, um sie zu visualisieren. Während ich eine schnelle Comply with-up-Eingabeaufforderung brauchte, um die Handlungen zu perfektionieren, wurde das Kernproblem sofort gelöst.

Könnte es sein, dass der Akt meines Versuchs, dieses Puzzle im letzten Jahr zu lösen und meine Ergebnisse zu veröffentlichen, in die Net-O-Phiere eingeführt wurde, was bedeutet, dass Anthropic es einfach gekrabbt und in ihre Modellwissenschaftsbasis aufgenommen hat? Ja, ich nehme an, das könnte es sein, aber warum konnte das Modell dann nicht die erste direkte Frage beantworten. Ich habe es nicht korrekt über die Gesamtzahl der Quadrate gestellt?

Für mich zeigt dieses Experiment stark den unglaublichen Sprung in der LLM -Fähigkeit. Was einst ein zweistündiger iterativer Kampf mit dem führenden Modell seiner Zeit vor 16 Monaten battle, ist jetzt ein fünf Sekunden langes One-Shot-Erfolg mit dem führenden Modell heute.

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert