import os import requests import json import sys import platform # API ключ для CoreGPT API_KEY = os.getenv("COREGPT_API_KEY", "96CC4-2B9A7-3959B-D8EB7") API_URL = "https://core-gpt.com/v1/chat/completions" # Шаблоны для запросов COMMAND_PROMPT_TEMPLATE = ( "Сгенерируй команду для следующего запроса: \n\n" "\"{user_query}\"\n\n" "Правила:\n" "- Сгенерируй команды одной строкой, только команды, без объяснений, без markdown, эта команда будет выполнена автоматически.\n" "Информация о системе: ОС - {os}, версия Python - {python_version}, имя хоста - {hostname}, пользователь - {username}." ) def get_system_info(): """Собирает информацию о системе.""" return { "os": platform.system(), "python_version": platform.python_version(), "hostname": platform.node(), "username": os.getenv("USER") or os.getenv("USERNAME") or "unknown", } def get_ai_response(user_query): """Отправляет запрос в CoreGPT и возвращает ответ модели.""" system_info = get_system_info() prompt = COMMAND_PROMPT_TEMPLATE.format(user_query=user_query, **system_info) headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json", } payload = { "model": "CoreGPT", "messages": [{"role": "user", "content": prompt}], "stream": True, } try: response = requests.post(API_URL, headers=headers, data=json.dumps(payload), stream=True) response.raise_for_status() # Считываем потоковый ответ result = "" for line in response.iter_lines(): if line: # Пропускаем пустые строки decoded_line = line.decode("utf-8").strip() if decoded_line.startswith("data: "): try: chunk = json.loads(decoded_line[6:]) delta = chunk.get("choices", [{}])[0].get("delta", {}).get("content", "") result += delta except json.JSONDecodeError: continue return result.strip() except Exception as e: print(f"Ошибка при запросе к API: {e}") return None def execute_command(command): """Выполняет команду в терминале.""" os.system(command) def main(): """Главная функция.""" # Получаем запрос из аргументов командной строки или запрашиваем у пользователя user_query = " ".join(sys.argv[1:]).strip() or input("Введите ваш запрос: ").strip() if not user_query: print("Запрос не может быть пустым.") return print("Обращение к CoreGPT...") command = get_ai_response(user_query) if not command: print("Не удалось получить ответ от модели.") return print(f"Сгенерированная команда: \n\n{command}\n") choice = input("Выполнить команду?").strip().lower() if choice in ("n", "no"): print("Команда отменена.") else: print("Выполняю команду...\n") execute_command(command) if __name__ == "__main__": main()