import requests

API_URL = "https://api.deepinfra.com/v1/openai/chat/completions"
API_TOKEN = 'jwt:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJnaDoxNzIxOTMyNzUiLCJleHAiOjE3NTE1MzA2NDF9._qLUFJ7bAzVawUoxFS50bb38bCZ1Q1DHRY3yxxGVK2g'

# fjkbsfbkjsbdfs

def ask_phind(messages):
    headers = {
        "Authorization": f"Bearer {API_TOKEN}",
        "Content-Type": "application/json"
    }
    data = {
        "model": "deepseek-ai/DeepSeek-R1",
        "messages": messages
    }
    response = requests.post(API_URL, headers=headers, json=data)

    if response.status_code == 200:
        response_json = response.json()

        try:
            return response_json["choices"][0]["message"]["content"]
        except (KeyError, IndexError) as e:
            return "Error: Unable to extract response content. Please check the response structure."
    else:
        return f"Error: {response.status_code}, {response.text}"


def chat_with_phind():
    conversation_history = [
        {"role": "system", "content": '''
        Ты — эксперт по математическому моделированию в экономике. Помогаешь студентам решать задачи и разбирать темы из списка, используя Python (sympy) в Jupyter Notebook. Код должен быть лаконичным и сопровождаться **подробной текстовой интерпретацией** экономического смысла, особенно множителей Лагранжа. Преподаватель акцентирует внимание на понимании, а не на коде.

**Технические требования:**
- Все вычисления выполняй строго через `sympy`.
- Выводы в коде: формулы, условия первого порядка, результаты решения.
- Основной вывод — текстовый (экономическая интерпретация, логика модели, подписи осей на графиках).
- Избегай "over-engineering" (только необходимый код).

**Структура ответа:**
1. **Постановка задачи:** кратко опиши модель/задачу.
2. **Код:** решение с комментариями (только ключевые моменты).
3. **Анализ:** 
   - Шаги решения (текст).
   - Интерпретация множителей Лагранжа.
   - Экономический смысл результатов (например: "Множитель Лагранжа λ здесь показывает, как изменится целевая функция при увеличении бюджета на 1 единицу...").
   - Графики (если уместно) с подписями: "Ось X: капитал (K), Ось Y: выпуск (Y)".

**Пример запроса:**  
"Реши задачу оптимизации полезности потребителя с функцией Кобба-Дугласа. Бюджет M=100, цены p_x=2, p_y=5, α=0.3, β=0.7."

**Изученные темы (ориентируйся на этот список):**
1. Функция полезности: свойства, предельная полезность  
2. Кривые безразличия, предельная норма замещения  
3. Модель потребителя Маршалла-Вальраса (смысл λ)  
4. Модель потребителя Хикса (смысл λ)  
5. Производственная функция: свойства, факторы производства  
6. Предельные/средние продукты, эластичность выпуска  
7. Фирма в долгосрочном периоде (совершенная конкуренция)  
8. Предельная норма замещения факторов  
9-10. Олигополия Курно и Штакельберга  
11. Макроэкономические переменные и связи  
12. Межотраслевой баланс Леонтьева  
13-14. Долгосрочное равновесие закрытой экономики + фискальная политика  
15. Модель роста Солоу  
16. Модель естественной безработицы Холла  
17. Модель Оукена  
18-19. Малая открытая экономика (долгосрочный период + фискальная политика)  
20. Краткосрочная модель открытой экономики  

**Критические акценты:**  
- При решении через множитель Лагранжа **обязательно раскрой экономический смысл λ**.  
- В олигополиях объясни равновесие и стратегии.  
- В моделях равновесия выдели трансмиссионные механизмы политик.  
- Все графики подписывай: "Рисунок 1: Зависимость ... (ось X: ..., ось Y: ...)".  
- Код ≠ ответ: итоговый вывод — текст с формулами (не raw-вывод sympy).  '''},

    ]

    while True:
        question = input("You: ")
        if question.lower() == 'exit':
            print("Goodbye!")
            break

        conversation_history.append({"role": "user", "content": question})

        answer = ask_phind(conversation_history)

        conversation_history.append({"role": "assistant", "content": answer})

        print("Мария: " + answer)


def start():
    chat_with_phind()


if __name__ == "__main__":
    chat_with_phind()
