# pip install openai
# Перед запуском: экспортируйте ключ в переменную окружения OPENAI_API_KEY

import sys
import random
from openai import OpenAI
import numpy as np
import scipy

client = OpenAI()  # ключ берётся из переменной окружения

random.seed(137)

prices = []
for i in range(100):
    try:
        messages = [
            {"role": "system", "content": "Отвечай по-русски, кратко и только на заданный вопрос. Не переспрашивай. Не ищи в интернете. Для записи вещественных чисел, если они понадобятся, используй десятичную точку (не запятую). Не указывай единицы измерения."},

            # Для прайминга можно использовать одну из следующих трёх пар фраз, 
            # для этого достаточно их раскомментировать (либо можно не использовать прайминг вовсе)

            # # Прайминг на низкую стоимость
            # {"role": "user", "content": "Средняя стоимость недавно отремонтированной трёхкомнатной квартиры на 5 этаже 9-этажного дома в районе Люблино города Москвы, больше или меньше 2 млн.руб? Ответь одним словом: больше/меньше?"},
            # {"role": "assistant", "content": "больше"},

            # # Прайминг на высокую стоимость
            # {"role": "user", "content": "Средняя стоимость недавно отремонтированной трёхкомнатной квартиры на 5 этаже 9-этажного дома в районе Люблино города Москвы, больше или меньше 200 млн.руб? Ответь одним словом: больше/меньше?"},
            # {"role": "assistant", "content": "меньше"},

            # # Прайминг на низкую стоимость СОВСЕМ НЕРЕЛЕВАНТНОЙ информацией
            # {"role": "user", "content": "Средняя высота тополя больше или меньше 2 метров? Ответь одним словом: больше/меньше?"},
            # {"role": "assistant", "content": "больше"},
            
            # Основной вопрос. Ответ мы получаем только на него
            {"role": "user", "content": "Какова средняя стоимость недавно отремонтированной трёхкомнатной квартиры на 5 этаже 9-этажного дома в районе Люблино города Москвы в миллионах рублей? Ответь одним числом."},
        ]
        resp = client.chat.completions.create(
            model="gpt-5-mini",
            messages=messages,
            seed=random.randint(0, 2**31 - 1),
            n=1,
        )
        answer = resp.choices[0].message.content.strip()
        print(answer)
        prices.append(float(answer))
    except Exception as e:
        print(e, file=sys.stderr)

print('---')
print(prices)
print(f'mean: {np.mean(prices)}')
print(f'median: {np.median(prices)}')
print(f'std: {np.std(prices)}')

# Для сравнения выборок можно скопировать два массива цен в `prices_1`, `prices_2` и далее выполнить:
# print(scipy.stats.mannwhitneyu(prices_1, prices_2))
