TGViewer
Антон Непша.js Антон Непша.js @nepshajs · 2.92K subscribers
Post #145 3.26K
Как заставить нейросеть выполнить ваш код на JS или Python

Нейросети вроде ChatGPT, DeepSeek или GigaChat можно научить взаимодействовать с окружающим миром: менять файлы на вашем диске, вызывать сторонние API или выполнять иные задачи в живом окружении.

Это делается довольно просто, и у большинства нейросетей применяется один и тот же подход: как у ChatGPT или DeepSeek, так и у GigaChat. Все они умеют работать с функциями.

Что такое функции
Если мы посмотрим на API любой нейросети, то функции там будут выглядеть непривычно. Вот пример функции из документации GigaChat:

{
"name": "weather_forecast",
"description": "Возвращает температуру на заданный период",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "Местоположение, например, название города"
},
"format": {
"type": "string",
"enum": [
"celsius",
"fahrenheit"
],
"description": "Единицы измерения температуры"
},
"num_days": {
"type": "integer",
"description": "Период, для которого нужно вернуть"
}
},
"required": [
"location",
"num_days"
]
}
}


Функция — обычный JSON.

Какой код эта функция выполнит?
Здесь всё просто. Никакой))
До тех пор, пока мы сами его не напишем. Поэтому придётся по-старинке объявить где-то у себя в коде обычную функцию с названием weather_forecast, как в поле name в объекте выше.
Принимаемые параметры тоже делаем такими же, как в описании. И реализацию этой функции тоже пишем сами.

Как нейросеть сможет её вызвать?
Нам нужно сообщить модели о том, что у неё есть такая возможность. Для этого передаём описание этой функции в запросе API нейросети, прямо вместе с вашим текстом.

Вот пример тела запроса с функцией в GigaChat API:

{
"model": "GigaChat",
"messages": [
{
"role": "user",
"content": "Погода в Москве на три дня"
}
],
"function_call": "auto",
"functions": [
// Добавляем все свои функции вот сюда
],
}


У ChatGPT это работает похожим образом, даже названия полей местами совпадают.

Что происходит дальше?
Модель распознает ваше сообщение и самостоятельно примет решение о том, нужно ли ей вызывать какую-то из функций, которые мы ей передали. Решение будет приниматься на основании вашего сообщения и текстовых описаний того, что функция делает и какие параметры принимает.

Если нейросеть посчитает, что функцию вызвать нужно, она вернёт в ответе название этой функции и параметры, которые нужны для её вызова. А нам остаётся сделать условный:

const { function_call } = response.message
// проверяем, что в ответе от нейросети есть признак вызова нашей функции
if (function_call.name === "weather_forecast") {
// вызываем функцию, которую сами же и написали
weather_forecast(function_call.arguments)
}

Всё. Естественно, вместо прогноза погоды функция может быть любой.

Мой бот, например, присылает мне в телегу логи с сервера, если я достаточно вежливо его об этом попрошу)

А в Python у библиотеки LangChain есть специальный декоратор tool, который упрощает создание функций.
Если внутрь функции с этим декоратором добавить описание в docstring, то библиотека сразу сформирует нужную структуру, готовую для того, чтобы передать её в нейросеть.
  • 🔥 18
  • 👍 7
  • ❤ 2
  • ❤‍🔥 1
  • 👌 1
More from @nepshajs
  1. Jul 30, 2026Моё хобби — менять названия полей в тулах и смотреть, как это влияет на качество заполнени…
  2. Jul 20, 2026Расширил свой недавний доклад про работу с GigaChat API и расскажу его 25 июля на Технохаб…
  3. Jul 17, 2026Никогда ещё не уходил с митапа под таким сильным впечатлением, как вчера после JS x AI con…
  4. Jul 15, 2026Агентские фреймворки больше не нужны Мне стали часто попадаться видео автора Jake Van Clie…
  5. Jul 10, 2026JS x AI митап в Сбер.Среде Я тут недавно осознал, что я уже два с половиной года работаю с…
  6. Jul 10, 2026Тра-та-та, а вот и я)))
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →