ГлавнаяБлогКак я создал игру «Векторный поиск» с помощью AI Studio: баги и инсайты
AI / Нейросети

Как я создал игру «Векторный поиск» с помощью AI Studio: баги и инсайты

Узнайте, как создать игру «Векторный поиск» с AI Studio и Cloud Run, и какой неожиданный баг заставил меня переделывать приложение. Попробуйте сами!

Al
Редакция Algolitalgolit.ru
5 мин чтения30 июня 2026 г.

Почему эта статья будет полезна?

Вы когда-нибудь сталкивались с ситуацией, когда AI-инструмент делает больше, чем вы просили? Я создал простую игру-поиск слов для конференции, но AI Studio сгенерировала динамическое приложение, которое менялось при каждом обновлении страницы. В этой статье я расскажу, как я построил «Векторный поиск» с помощью AI Studio и Cloud Run, и какой неожиданный баг заставил меня срочно всё переделывать.

Предыстория: игра для конференции

Мы с DEV и MLH освещали AI Engineer's World Fair и каждый день выпускали физическую газету «The Daily Context». В каждый номер мы хотели включать игру. Для первого выпуска я придумал небольшую головоломку — поиск слов, который назвал «Vector Search». Игру я построил с помощью AI Studio и развернул на Cloud Run. Получилось очень просто и быстро, а мелкие детали вроде анимации конфетти при завершении и кнопки показа ответа добавили шарма.

Неожиданный баг: динамика против статики

Утром перед запуском цифровой версии газеты я обнаружил забавную проблему. AI Studio сделала больше, чем нужно: она создала приложение, где поле для поиска слов менялось при каждом обновлении страницы. В печатной версии поле было статическим, но цифровая генерировала новое расположение слов. Слова для поиска оставались теми же, поэтому я сразу не заметил.

Хотя динамическое поле даёт лучший игровой опыт, участникам конференции было сказано посещать цифровую версию газеты для получения ответов. Мне пришлось быстро упростить приложение, чтобы цифровая и печатная версии совпадали. Это классическая проблема, которая не возникла бы до эры AI!

Как я строил игру: пошаговое руководство

Давайте разберём, как создать подобную игру с помощью AI Studio и Python. Я использую простой пример: поле 10x10, слова из списка AI-терминов, случайное размещение.

import random
import string

# Список слов для поиска
words = ["RAG", "LoRA", "GPT", "BERT", "T5"]

# Размер поля
SIZE = 10

def create_grid(size):
    # Создаём пустую сетку
    grid = [['' for _ in range(size)] for _ in range(size)]
    return grid

def place_word(grid, word):
    # Пытаемся разместить слово случайно
    for _ in range(100):  # максимум 100 попыток
        direction = random.choice(['horizontal', 'vertical'])
        if direction == 'horizontal':
            row = random.randint(0, SIZE-1)
            col = random.randint(0, SIZE - len(word))
            # Проверяем, что все ячейки свободны или совпадают
            if all(grid[row][col+i] in ('', word[i]) for i in range(len(word))):
                for i, char in enumerate(word):
                    grid[row][col+i] = char
                return True
        else:  # vertical
            row = random.randint(0, SIZE - len(word))
            col = random.randint(0, SIZE-1)
            if all(grid[row+i][col] in ('', word[i]) for i in range(len(word))):
                for i, char in enumerate(word):
                    grid[row+i][col] = char
                return True
    return False

def fill_grid(grid):
    # Заполняем оставшиеся ячейки случайными буквами
    for r in range(SIZE):
        for c in range(SIZE):
            if grid[r][c] == '':
                grid[r][c] = random.choice(string.ascii_uppercase)

def print_grid(grid):
    for row in grid:
        print(' '.join(row))

# Создаём и заполняем
import copy
grid = create_grid(SIZE)
for word in words:
    placed = place_word(grid, word.upper())
    if not placed:
        print(f"Не удалось разместить слово {word}")
fill_grid(grid)
print_grid(grid)

Понимание бага и его исправление

В моём случае AI Studio генерировала новое поле при каждом запросе. Чтобы сделать поле статическим, я сохранял сгенерированное состояние и возвращал его без изменений. Вот упрощённая версия:

from flask import Flask, jsonify, render_template_string
import random
import string

app = Flask(__name__)

# Глобальная переменная для хранения состояния
cached_grid = None
cached_words = None

def generate_static_game():
    # Генерируем один раз и кешируем
    global cached_grid, cached_words
    if cached_grid is not None:
        return cached_grid, cached_words
    
    words = ["RAG", "LoRA", "GPT", "BERT", "T5"]
    grid = create_grid(10)
    for word in words:
        place_word(grid, word.upper())
    fill_grid(grid)
    cached_grid = grid
    cached_words = words
    return grid, words

@app.route('/game')
def game():
    grid, words = generate_static_game()
    # Возвращаем HTML с данными
    return render_template_string('''
        <h2>Vector Search</h2>
        <pre>{{ grid_str }}</pre>
        <p>Найдите слова: {{ words }}</p>
    ''', grid_str='\n'.join(' '.join(row) for row in grid), words=', '.join(words))

if __name__ == '__main__':
    app.run()

Вывод: что делать прямо сейчас

Попробуйте сами создать свою версию игры с помощью AI Studio или любого AI-инструмента. Когда будете тестировать, обязательно проверьте, не делает ли AI больше, чем вы просили. Если вы разрабатываете для продакшена, всегда фиксируйте состояние, чтобы избежать неожиданных изменений. А если хотите поиграть в мою оригинальную игру — вот ссылка (она уже статическая!).

#AI Studio#Cloud Run#игра поиск слов#баги#разработка
Al
Редакция Algolit

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

Хочешь закрепить знания на практике?

Решай задачи на Algolit — интерактивная платформа для обучения

Начать бесплатно →