🤖 Собираем своего ИИ-агента: он понимает просьбу и записывает задачу (часть 1)
🤖 Собираем своего ИИ-агента: он понимает просьбу и записывает задачу (часть 1) Сделаем минимального агента-планировщика: модель решает, когда вызвать функцию, а Python выполняет её и сохраняет задачу в локальный файл. Агент не запускает команды и не имеет доступа к компьютеру — у него только одна разрешённая функция. 1) Подготовьте проект (Windows PowerShell): ```powershell mkdir ai-task-agent cd ai-task-agent py -m venv .venv .\.venv\Scripts\Activate.ps1 python -m pip install openai ``` Если команда `py` не найдена, установите Python с официального сайта и включите Python Launcher. Пакет OpenAI ставится официальной командой через pip. 2) Создайте API-ключ в кабинете OpenAI и задайте его только в текущем окне PowerShell: ```powershell $env:OPENAI_API_KEY="ваш_ключ" ``` Не вставляйте ключ в код, браузерную страницу или GitHub. Запросы к API могут тарифицироваться согласно вашему аккаунту. 3) Создайте файл `agent.py` и вставьте: ```python import json from pathlib import Path from openai import OpenAI client = OpenAI() MODEL = "gpt-6-astra" # замените на модель, доступную вашему API-проекту TASKS_FILE = Path("tasks.json") def save_task(title: str) -> str: tasks = json.loads(TASKS_FILE.read_text(encoding="utf-8")) if TASKS_FILE.exists() else [] if title not in tasks: tasks.append(title) TASKS_FILE.write_text(json.dumps(tasks, ensure_ascii=False, indent=2), encoding="utf-8") return f"В списке {len(tasks)} задач. Последняя: {title}" tools = [{ "type": "function", "name": "save_task", "description": "Добавляет одну короткую задачу в локальный список.", "parameters": { "type": "object", "properties": {"title": {"type": "string", "description": "Текст задачи"}}, "required": ["title"], "additionalProperties": False }, "strict": True }] input_items = [{"role": "user", "content": "Добавь задачу: проверить работу агента"}] response = client.responses.create(model=MODEL, tools=tools, input=input_items) input_items += response.output called = False for item in response.output: if item.type == "function_call" and item.name == "save_task": result = save_task(json.loads(item.arguments)["title"]) input_items.append({ "type": "function_call_output", "call_id": item.call_id, "output": result }) called = True if called: final = client.responses.create(model=MODEL, tools=tools, input=input_items) print(final.output_text) else: print(response.output_text) ``` 4) Запустите: ```powershell python agent.py Get-Content .\tasks.json ``` Проверка: в ответе появится число задач, а в `tasks.json` — «проверить работу агента». Повторный запуск не добавит дубликат. Что здесь делает агента «агентом»: модель выбирает инструмент, но сама функция остаётся обычным контролируемым Python-кодом. Следующая часть — превратим его в чат-бота и добавим историю диалога. Если остановились на ошибке, напишите её текст. Вы бы сначала подключили его к Telegram или сделали простую веб-страницу? А — Telegram, Б — веб. Ответьте в комментариях. Документация: https://developers.openai.com/api/docs/quickstart Вызов функций: https://developers.openai.com/api/docs/guides/function-calling #первыйхаб #технологии #ии #python