Загрузка данных


CSV_INPUT = "data.csv"
CSV_OUTPUT = "output.csv"
TARGET_COLUMN = "Описание"
RESULT_COLUMN = "Обработанный текст"

try:
    # Загружаем файл
    df = pd.read_csv(CSV_INPUT, encoding='utf-8-sig', sep=';')
    print(f"Успешно загружено строк: {len(df)}")
except Exception as e:
    print(f"Ошибка при чтении CSV-файла: {e}")
    df = None

if df is not None:
    if TARGET_COLUMN not in df.columns:
        print(f"Ошибка: Столбец '{TARGET_COLUMN}' не найден в файле!")
    else:
        # Безопасное создание столбца
        if RESULT_COLUMN not in df.columns:
            df[RESULT_COLUMN] = None

        # Правильный перебор по индексам датафрейма
        for index in df.index:
            raw_text = df.loc[index, TARGET_COLUMN]

            if pd.isna(raw_text) or str(raw_text).strip() == "":
                print(f"Строка {index}: Пропущена (пустое значение)")
                continue

            print(f"Обработка строки {index + 1}/{len(df)}...")
            user_text = str(raw_text)

            # Запрос к LLM
            llm_response = client.send_multimodal_prompt(
                system_role=system_prompt,
                user_text=user_text,
                temperature=0.3,
            )

            cleaned_response = re.sub(r'<think>.*?</think>', '', llm_response, flags=re.DOTALL)

            # Гарантированная запись в исходный датафрейм через .loc
            df.loc[index, RESULT_COLUMN] = cleaned_response
            print(f"Результат: {cleaned_response[:50]}...") # Выводим начало ответа для контроля
            break

        # Сохранение результатов
        try:
            df.to_csv(CSV_OUTPUT, index=False, encoding='utf-8-sig', sep=';')
            print(f"Обработка завершена! Результаты сохранены в {CSV_OUTPUT}")
        except Exception as e:
            print(f"Ошибка при сохранении CSV-файла: {e}")