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, чтобы закрыть программу...")