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())