File size: 6,525 Bytes
58a9b80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import os  # Импортируем модуль для работы с переменными окружения
import asyncio  # Импортируем модуль для поддержки асинхронного программирования
from dotenv import load_dotenv  # Импортируем функцию для загрузки переменных окружения из файла .env
from openai import OpenAI
# Загружаем переменные окружения из файла .env
load_dotenv()
api_key=os.getenv("API_KEY_openai")
async def main():
    client = OpenAI(api_key=api_key)
    # Пример параметров для запроса
    params = {
        "нарушение": "ОНР",  # Тип речевого нарушения
        "цель_занятия": "Развитие фонематического слуха",  # Цель занятия
        "месяц": "апрель",  # Месяц проведения занятия
        "инвентарь": "зеркало, карточки с изображениями",  # Необходимый инвентарь
        "количество_детей": 1,  # Количество детей на занятии
        "длительность_занятия": 30,  # Длительность занятия в минутах
        "наличие_ДЗ": False,  # Наличие домашнего задания (True или False)
        "загруженные_материалы": None,  # Путь к загруженным материалам, если есть
        "разрешен_web_search": True  # Разрешение на использование веб-поиска
    }

    # Формируем текст запроса (промпт) на основе предоставленных параметров
    prompt = f"""
    Ты — эксперт в области логопедии, специализирующийся на разработке занятий для детей с речевыми нарушениями. На вход ты получаешь следующие параметры:
    - **Нарушение:** {params['нарушение']}
    - **Цель занятия:** {params['цель_занятия']}
    - **Месяц:** {params['месяц']}
    - **Инвентарь:** {params['инвентарь']}
    - **Количество детей:** {params['количество_детей']}
    - **Длительность занятия:** {params['длительность_занятия']}
    - **Наличие домашнего задания:** {params['наличие_ДЗ']}
    - **Загруженные материалы (если есть):** {params['загруженные_материалы']}
    - **Разрешен web search:** {params['разрешен_web_search']}

    На основе этих параметров составь конспект занятия, который должен включать:
    1. **Тема занятия, цель и задачи:** Четко сформулируй тему занятия, основную цель и конкретные задачи, которые необходимо решить.
    2. **Необходимые материалы:** Перечисли все материалы и инвентарь, необходимые для проведения занятия.
    3. **Ход занятия:** Разбей занятие на логически последовательные этапы.
    4. **Встроенные в ход занятия упражнения с достаточным количеством материала:** Приведи конкретные упражнения с подробными примерами.
        ВАЖНО: если разрешен web search: True, подбери примеры для упражнений из релевантных источников. Обязательно интегрируй ссылки на найденные источники в текст ответа.
    5. **Использование загруженных файлов (если есть):** Если логопед загрузил файлы с логопедическими материалами, используй их для поиска наиболее релевантных фрагментов и интегрируй их в ход занятия.
    6. **Домашнее задание (если True):** Если параметр 'наличие_ДЗ' указывает на наличие домашнего задания, предложи конкретное домашнее задание, соответствующее теме занятия.
    """

    # Определяем список инструментов, которые будут использоваться в запросе
    tools = []
    tool_choice = None  # По умолчанию tool_choice отсутствует

    if params['разрешен_web_search']:
        tools.append({
            "type": "web_search_preview",
            "search_context_size": "medium",
            "user_location": {
                "type": "approximate",
                "country": "RU"
            }
        })
        tool_choice = {"type": "web_search_preview"}  # Устанавливаем tool_choice только если web search включен

    if params['загруженные_материалы']:
        tools.append({"type": "file_search"})  # Добавляем инструмент поиска по файлам, если материалы загружены

    # Отправляем запрос к API OpenAI с использованием эндпоинта responses
    response = client.responses.create(
        model="gpt-4o-mini",  # Используемая модель
        input=prompt,  # Текст запроса
        tools=tools if tools else None,  # Включаем инструменты, если они были определены
        tool_choice=tool_choice,  # Передаем tool_choice только если он определен
        max_output_tokens=1200  # Максимальное количество токенов в ответе
    )

    # Выводим результат в консоль
    print(response.output_text)

# Запускаем асинхронную функцию
asyncio.run(main())