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}")