🤖 Собираем своего ИИ-агента: он понимает просьбу и записывает задачу (часть 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
Просмотры: 5