Spaces:
Sleeping
Sleeping
| 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()) |