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


import os
import pandas as pd
from openai import OpenAI

# 1. Подключение к локальному серверу LM Studio
client = OpenAI(
    base_url="http://localhost:1234/v1",
    api_key="not-needed",  # Для LM Studio ключ не нужен
)


def main():
    # Имя вашего Excel файла (он должен лежать в той же папке на Рабочем столе)
    file_name = "data.xlsx"

    if not os.path.exists(file_name):
        print(f"\n[ОШИБКА] Файл '{file_name}' не найден в папке ai_excel!")
        print("Положите ваш Excel-файл на Рабочий стол в папку ai_excel.")
        return

    print(f"Чтение файла {file_name}...")

    # 2. Читаем Excel через pandas
    try:
        df = pd.read_excel(file_name)
    except Exception as e:
        print(f"Ошибка при чтении Excel: {e}")
        return

    # Берем первые 30 строк таблицы для анализа
    data_sample = df.head(30).to_markdown()

    # 3. Формируем задание для модели
    prompt = f"""Ниже представлены данные из файла Excel (первые 30 строк):

{data_sample}

Проанализируй эти данные и ответь на вопросы:
1. О чем эта таблица (какие показатели здесь собраны)?
2. Какие ключевые тренды или закономерности ты видишь?
3. Есть ли в данных аномалии, ошибки или пустые ячейки?
"""

    print("Отправка данных в LM Studio (ожидайте ответа)...")

    # 4. Запрос к локальной модели со стримингом (потоковым выводом)
    try:
        response = client.chat.completions.create(
            model="local-model",
            messages=[
                {
                    "role": "system",
                    "content": "Ты профессиональный аналитик данных. Отвечай подробно и на русском языке.",
                },
                {"role": "user", "content": prompt},
            ],
            temperature=0.3,
            stream=True,
        )

        print("\n=== ОТВЕТ ИИ ===")
        for chunk in response:
            content = chunk.choices[0].delta.content
            if content:
                print(content, end="", flush=True)
        print("\n================")

    except Exception as e:
        print(
            f"\n[ОШИБКА] Не удалось связаться с LM Studio. Убедитесь, что запущен сервер на http://localhost:1234\nДетали: {e}"
        )


if __name__ == "__main__":
    main()
    input("\nНажмите Enter, чтобы закрыть программу...")