Новое Распределяем каналы MAX по категориям и территориям. Читать новость
Открытый канал ID 77024526448052

⚡Первый Хаб⚡

Главный IT-хаб в MAX. Нейросети, гаджеты, код, автоматизация и кибербезопасность — простым языком. Для тех, кто живёт технологиями и хочет быть на шаг впереди. 🚀

Открыть в MAX

Публикации за период

По реакциям

Поиск и вся лента — после бесплатной регистрации. Свои даты — по подписке; владелец канала видит их бесплатно. Сортировка по реакциям — по подписке. Зарегистрироваться

Загрузка…

🤖 ИИ-агент на Python, часть 2: научим его показывать список задач

В первой части агент сохранял задачу в `tasks.json`. Теперь добавим безопасный инструмент `list_tasks`: модель сможет попросить Python показать этот файл, но не получит произвольный доступ к компьютеру.

1) В `agent.py`, рядом с `save_task`, добавьте функцию:
```python
def list_tasks() -> str:
if not TASKS_FILE.exists():
return "Список задач пока пуст."
tasks = json.loads(TASKS_FILE.read_text(encoding="utf-8"))
if not tasks:
return "Список задач пока пуст."
return "\n".join(f"{i}. {task}" for i, task in enumerate(tasks, start=1))
```
Она читает только `tasks.json` и нумерует строки. Если файл ещё не создан, вернёт понятный ответ.

2) В массив `tools` добавьте описание второй функции:
```python
{
"type": "function",
"name": "list_tasks",
"description": "Показывает все задачи из локального tasks.json.",
"parameters": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": False
},
"strict": True
}
```
Сохраните там же описание `save_task` из первой части.

3) В цикле обработки `response.output` добавьте ветку:
```python
if item.name == "list_tasks":
result = list_tasks()
elif item.name == "save_task":
args = json.loads(item.arguments)
result = save_task(args["title"])
else:
raise RuntimeError(f"Неизвестная функция: {item.name}")

input_items.append({
"type": "function_call_output",
"call_id": item.call_id,
"output": result,
})
```
После цикла передайте `input_items` обратно в Responses API, как в первой части, и выведите `final.output_text`. Проверьте обе команды: «Покажи мои задачи» и «Добавь задачу: проверить список».

Ожидаемый результат: агент вызывает `list_tasks`, Python читает файл и возвращает нумерованный список; модель формулирует ответ. Для пустого файла появится сообщение, что список пуст. Проверьте содержимое `tasks.json` вручную.

Важно: функция доступна только потому, что вы описали её в `tools` и добавили явную ветку в код. Не используйте `eval` и не запускайте полученные от модели команды.

В следующей части добавим отметку задачи как выполненной. Что удобнее: А — номером, Б — текстом задачи? Напишите вариант в комментариях.

Документация по вызову функций: https://developers.openai.com/api/docs/guides/function-calling
Официальный Python SDK: https://github.com/openai/openai-python

#первыйхаб #технологии #ии #python #разработка
Просмотры: 3
Перейти в пост Открыть в MAX Сообщить о неточности
🤖 Собираем своего ИИ-агента: он понимает просьбу и записывает задачу (часть 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
Перейти в пост Открыть в MAX Сообщить о неточности
🎙️ Голосовой помощник в браузере: распознаём команду и отвечаем — часть 1

Соберём небольшой прототип: браузер услышит фразу, найдёт совпадение в наших правилах и произнесёт ответ. Пока это не языковая модель, а понятный первый слой будущего ИИ-помощника: микрофон → распознанный текст → логика → голос.

1) Создайте файл index.html и вставьте код:

<!doctype html>
<html lang="ru">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Голосовой помощник</title>
<button id="start">🎙️ Сказать команду</button>
<p id="status">Нажмите кнопку и произнесите: «привет» или «помощь».</p>
<script>
const status = document.querySelector("#status");
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
function answer(text) {
const q = text.toLowerCase();
if (q.includes("привет")) return "Привет! Я слушаю.";
if (q.includes("помощь")) return "Пока я умею здороваться и показывать эту подсказку.";
return "Пока не знаю эту команду. Скажите «помощь».";
}
if (!SpeechRecognition) {
status.textContent = "В этом браузере распознавание речи не поддерживается.";
} else {
const recognition = new SpeechRecognition();
recognition.lang = "ru-RU";
recognition.continuous = false;
recognition.interimResults = false;
recognition.onstart = () => status.textContent = "Слушаю…";
recognition.onresult = event => {
const heard = event.results[0][0].transcript;
const reply = answer(heard);
status.textContent = `Вы сказали: «${heard}». Ответ: ${reply}`;
const speech = new SpeechSynthesisUtterance(reply);
speech.lang = "ru-RU";
window.speechSynthesis.speak(speech);
};
recognition.onerror = event => status.textContent = `Ошибка распознавания: ${event.error}`;
document.querySelector("#start").onclick = () => recognition.start();
}
</script>
</html>

2) Откройте папку с файлом в терминале и запустите локальный сервер: `python -m http.server 8000` (в Windows можно попробовать `py -m http.server 8000`). Перейдите на `http://localhost:8000`.
3) Нажмите кнопку и разрешите сайту доступ к микрофону. Проверьте команды «привет» и «помощь».
4) Если видите сообщение о неподдерживаемом распознавании, попробуйте актуальную версию Chrome или Edge. Поддержка `SpeechRecognition` ограничена и отличается между браузерами; синтез речи поддерживается шире. Распознавание может использовать внешний сервис браузера, поэтому не произносите конфиденциальные данные.

В следующей части добавим список команд и историю диалога. Документация: https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API/Using_the_Web_Speech_API

Какой следующий шаг интереснее: А — запуск команд ПК, Б — подключение локальной модели или В — память диалога? Напишите в комментариях.

#первыйхаб #технологии #искусственныйинтеллект #разработка #голосовойпомощник
Просмотры: 5
Перейти в пост Открыть в MAX Сообщить о неточности
🎙 Голосовой помощник на Python — часть 1/3: сначала логика команд

Задача: собрать каркас помощника, который отвечает на команды. Начнём с текста — так можно проверить логику до подключения микрофона и ИИ.

1. Создайте файл assistant.py и вставьте:

```python
def answer(command):
command = command.strip().lower()

if command in ("привет", "здравствуй"):
return "Привет! Чем помочь?"
if command in ("время", "который час"):
from datetime import datetime
return datetime.now().strftime("Сейчас %H:%M")
if command in ("стоп", "выход"):
return None
return "Пока не знаю такую команду."

while True:
command = input("Вы: ")
response = answer(command)
if response is None:
print("Помощник: Завершаю работу.")
break
print("Помощник:", response)
```

2. Откройте командную строку в папке с файлом и запустите `python assistant.py`. Если команда `python` не находится, попробуйте `py assistant.py`.

3. Проверьте: введите `привет`, затем `время`, потом `стоп`. На неизвестную фразу программа должна ответить, что команда пока не настроена.

Почему начинаем так: распознавание речи и ИИ лучше подключать к отдельному обработчику команд. Тогда можно менять микрофон или модель, не переписывая логику ответов. Здесь пока нет распознавания речи и генеративного ИИ — это следующий этап.

Справка по запуску скриптов в Windows: https://docs.python.org/3/using/windows.html

Что добавить во второй части: А) распознавание речи, Б) голосовой ответ? Напишите вариант в комментариях.

#первыйхаб #технологии #ИИ #Python #голосовойпомощник
Просмотры: 2
Перейти в пост Открыть в MAX Сообщить о неточности
ВКонтакте Телеграм Одноклассники
Избранное в datool.ru

Следите за каналом в личном кабинете

Зарегистрируйтесь в datool.ru, чтобы добавить канал «⚡Первый Хаб⚡» в избранное и отслеживать его показатели.

Зарегистрироваться
Для владельцев каналов

Подтвердите свой канал

Войдите или зарегистрируйтесь в datool.ru, затем добавьте нашего бота в канал по инструкции в личном кабинете. После проверки владения замок исчезнет и вам станет доступно управление каналом.

Войти или зарегистрироваться

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти