{"id":491395,"date":"2026-08-19T08:36:09","date_gmt":"2026-08-19T08:36:09","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=491395"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2026-08-19T08:36:09","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=491395","title":{"rendered":"Harness, \u0414\u0430 \u043f\u0440\u0435\u0431\u0443\u0434\u0435\u0442 \u0441 \u0442\u043e\u0431\u043e\u0439 JavaScript"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u042f\u0437\u044b\u043a\u043e\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c (LLM) \u0443\u043c\u0435\u0435\u0442 \u043e\u0434\u043d\u043e: \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442. \u0417\u0430\u0434\u0430\u043b\u0438 \u0432\u043e\u043f\u0440\u043e\u0441 &#8212; \u043e\u043d\u0430 \u0434\u043e\u043f\u0438\u0441\u0430\u043b\u0430 \u043e\u0442\u0432\u0435\u0442. AI-\u0430\u0433\u0435\u043d\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0432\u043e\u043a\u0440\u0443\u0433 \u043c\u043e\u0434\u0435\u043b\u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442 \u043e\u0431\u0432\u044f\u0437\u043a\u0443 (harness) &#8212; \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u043e\u0441\u0438\u0442 \u0447\u0442\u043e-\u0442\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c, \u0430 harness \u0431\u0435\u0440\u0451\u0442 \u0432\u044b\u0437\u043e\u0432 \u043d\u0430 \u0441\u0435\u0431\u044f. \u041c\u043e\u0436\u0435\u0442 \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0443 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430, \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u0441\u0435\u0447\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0437\u0430\u0449\u0438\u0442\u043d\u044b\u043c\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438 (guardrails).<\/p>\n<p>\u041c\u043e\u0449\u043d\u043e\u0441\u0442\u044c \u044d\u0442\u043e\u0439 \u043e\u0431\u0432\u044f\u0437\u043a\u0438 \u0447\u0430\u0441\u0442\u043e \u0432\u0430\u0436\u043d\u0435\u0435, \u0447\u0435\u043c \u043a\u0430\u0436\u0435\u0442\u0441\u044f. \u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u043f\u0430\u043c\u044f\u0442\u044c, \u0446\u0438\u043a\u043b \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0438 \u043d\u0430\u0431\u043e\u0440 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 (tools) \u043c\u0435\u043d\u044f\u044e\u0442 \u0438 \u0442\u043e, \u0447\u0442\u043e \u0430\u0433\u0435\u043d\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0443\u043c\u0435\u0435\u0442, \u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430. \u0415\u0441\u0442\u044c \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f, \u0433\u0434\u0435 \u043d\u0430 \u043e\u0434\u043d\u0438\u0445 \u0438 \u0442\u0435\u0445 \u0436\u0435 \u043c\u043e\u0434\u0435\u043b\u044f\u0445 \u0441\u043c\u0435\u043d\u0430 harness \u0432\u0435\u0434\u0435\u0442 \u043a \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430. Cursor \u0438\u043b\u0438 OpenRouter \u0438\u043d\u043e\u0433\u0434\u0430 \u043e\u0431\u0445\u043e\u0434\u044f\u0442 \u0440\u043e\u0434\u043d\u043e\u0439 harness Anthropic \u043d\u0430 \u0435\u0433\u043e \u0436\u0435 \u043c\u043e\u0434\u0435\u043b\u044f\u0445. \u041e\u0442\u0441\u044e\u0434\u0430 \u0436\u0435 \u0440\u0430\u0437\u0440\u044b\u0432 \u043c\u0435\u0436\u0434\u0443 \u0446\u0435\u043d\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438 \u0438 \u0446\u0435\u043d\u043e\u0439 API.<\/p>\n<p>\u0412\u0430\u0436\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u0430 &#8212; \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0435\u043c\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b. \u041e\u043d\u0438 \u0436\u0438\u0432\u0443\u0442 \u0440\u044f\u0434\u043e\u043c \u0441 \u0430\u0433\u0435\u043d\u0442\u043e\u043c \u0438\u043b\u0438 \u043f\u0440\u0438\u0435\u0437\u0436\u0430\u044e\u0442 \u0441 MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u041d\u0443\u0436\u043d\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 &#8212; \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442. \u041f\u043e\u0438\u0441\u043a \u043f\u043e CRM &#8212; <code>search_customer<\/code>, \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u043f\u0438\u0441\u044c\u043c\u0430 &#8212; <code>send_email<\/code>. MCP \u0441\u0434\u0435\u043b\u0430\u043b \u0442\u0430\u043a\u0443\u044e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c\u043e\u0439, \u0442.\u043a. \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u0430 \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u0430\u0433\u0435\u043d\u0442\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0435\u0433\u043e, \u043d\u0435 \u0432\u043b\u0435\u0437\u0430\u044f \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<p>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0432\u0441\u0435 \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u044b\u0437\u043e\u0432\u043e\u0432 tools \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435, \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 tools \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0434\u043b\u0438\u043d\u043d\u0435\u0435, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e &#8212; \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 tools &#8212; \u044d\u0442\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0438\u0437 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438 \u043e\u0442\u0432\u0435\u0442\u0430 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043c\u043e\u0434\u0435\u043b\u0438, \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043d\u0430 \u0432\u0441\u0435 \u044d\u0442\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u0438 \u0440\u0435\u0448\u0430\u0435\u0442, \u0447\u0442\u043e \u0441 \u044d\u0442\u0438\u043c \u0434\u0435\u043b\u0430\u0442\u044c, \u0438 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u043c\u0435\u0440\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c, \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e IT, \u0447\u0430\u0441\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u0430\u044f, \u0438 \u0441 \u043d\u0435\u0439 \u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0441\u044f \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u043b\u0443\u0447\u0448\u0435, \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0438 \u0434\u0435\u0448\u0435\u0432\u043b\u0435.<\/p>\n<p>\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 &#8212; \u0434\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439 \u0435\u0439 \u043a\u043e\u0434, \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0449\u0438\u0439 \u0447\u0430\u0441\u0442\u044c \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u0439, \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0435\u0433\u043e. \u0412 \u043e\u0431\u0449\u0435\u043c \u0432\u0438\u0434\u0435 \u0434\u043b\u044f \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u044d\u0442\u043e \u0437\u0432\u0443\u0447\u0438\u0442 \u0441\u0442\u0440\u0430\u0448\u043d\u043e\u0432\u0430\u0442\u043e, \u0432\u0435\u0434\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u0432\u0430\u043c \u0431\u044b \u043e\u0447\u0435\u043d\u044c \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435\/\u0441\u0435\u0440\u0432\u0435\u0440\u0435: \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0432\u0430\u0436\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0438 \u0442.\u0434. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0437-\u0437\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 \u043c\u043e\u0434\u0435\u043b\u0438, \u0432\u043e\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0441\u044c\u0431\u044b (\u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0441\u043a\u0430\u0437\u0430\u043b \u0443\u0434\u0430\u043b\u0438 \u044d\u0442\u043e, \u043d\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u043d\u044f\u043b\u0430 \u043f\u043e-\u0441\u0432\u043e\u0435\u043c\u0443, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u044d\u0442\u043e), \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 prompt injection \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u043b\u0438 \u0438\u0437 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0434\u0435\u043b\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u0434\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043d\u0430 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0443 (sandbox). \u0412 LangChain \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b &#8212; \u043a\u043e\u0434 \u0443\u0435\u0437\u0436\u0430\u0435\u0442 \u043d\u0430 \u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u044b, \u0433\u0434\u0435 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f. \u0415\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u043d\u0435\u0441\u0442\u0438 sandbox \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 Docker-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, \u0433\u0434\u0435 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0443 \u0438\u043b\u0438 \u0445\u043e\u0441\u0442\u0443 \u0432\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u043a\u0430\u043a \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u0430\u043c. \u0415\u0441\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u00ab\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435\u00bb \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u044b \u043d\u0430 \u0432\u0430\u0448\u0435\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 &#8212; \u043e\u043d\u0438 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0442 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0443 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \u043d\u0430 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043d\u043e \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043d\u0438\u0435 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438. \u041f\u043e\u0441\u043b\u0435 \u0434\u0435\u0441\u044f\u0442\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043e\u0434\u0438\u043d\u043d\u0430\u0434\u0446\u0430\u0442\u043e\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0436\u043c\u0443\u0442 \u043d\u0435 \u0433\u043b\u044f\u0434\u044f \u0438\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0430\u0432\u0442\u043e\u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435.<\/p>\n<p>\u0411\u043e\u043b\u0435\u0435 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 &#8212; \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0441 \u0437\u0430\u0434\u0430\u0447 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043b\u043e\u0433\u0438\u043a\u0438 LLM \u0438 \u0432\u0437\u044f\u0442\u044c \u0434\u043b\u044f \u043d\u0438\u0445 \u0441\u0430\u043c\u0443\u044e \u043b\u0435\u0433\u043a\u0443\u044e, \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u0443\u044e \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0443 &#8212; JavaScript-\u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u044f \u0440\u0438\u0441\u043a\u0438. \u041c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0438\u0439 \u043a\u0443\u0441\u043e\u043a \u043b\u043e\u0433\u0438\u043a\u0438, \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 (\u0441\u0430\u043c\u0438 \u0432\u044b\u0437\u043e\u0432\u044b \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0434\u0435\u043b\u0430\u0435\u0442 harness, \u043d\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u043e\u0442\u0432\u0435\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0441\u043a\u043b\u0435\u0438\u0442\u044c) \u0438 \u0437\u0430\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u0434\u043b\u044f \u0441\u0443\u0431\u0430\u0433\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0443 \u043a\u0430\u043a \u0442\u0430\u043a\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043c\u043e\u0433\u0430\u0442\u044c. \u041d\u0430\u0447\u043d\u0443 \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u0443 \u0441\u0435\u0431\u044f \u0432 LM Studio, \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u0439\u0434\u0443 \u043a \u0431\u043e\u043b\u0435\u0435 \u043e\u0431\u0449\u0435\u043c\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 \u043d\u0430 LangChain, \u0433\u0434\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 JS-\u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0443\u0436\u0435 \u043d\u0435 \u0442\u0430\u043a\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u043c, \u0430 \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u0447\u0430\u0441\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0438 \u0441 LLM \u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0435\u0439 \u0444\u043e\u043a\u0443\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e, \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u0443\u044f \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443 \u0441\u043a\u0440\u0438\u043f\u0442\u0443.<\/p>\n<h2>\u0417\u0430\u0447\u0435\u043c \u0430\u0433\u0435\u043d\u0442\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442\u044b &#8212; \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430 LM Studio<\/h2>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 LM Studio &#8212; \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438\u0437 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0438 \u0447\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u0441 \u043d\u0438\u043c\u0438. \u0415\u0441\u0442\u044c \u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438, \u043d\u043e LM Studio &#8212; \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 &#8212; \u0432\u0441\u0435 \u0432 \u043e\u0434\u043d\u043e\u043c UI-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435: \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0441 \u043e\u0446\u0435\u043d\u043a\u043e\u0439, \u0447\u0442\u043e \u0432\u0430\u0448 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0442\u044f\u043d\u0435\u0442, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0432 \u0434\u0432\u0430 \u043a\u043b\u0438\u043a\u0430 \u043c\u044b\u0448\u043a\u043e\u0439, \u0441\u0430\u043c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043d\u0443\u0436\u043d\u044b\u0435 \u0434\u0432\u0438\u0436\u043a\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0447\u0430\u0442-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c MCP, \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0447\u0435\u0440\u0435\u0437 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0442.\u0434.<\/p>\n<p>\u0411\u0435\u0440\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u0447\u0430\u0442, \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043c\u043e\u0434\u0435\u043b\u044c \u0438 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c <code>\u043a\u0430\u043a\u043e\u0435 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0447\u0438\u0441\u043b\u043e?<\/code><\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/e6b\/afc\/b1d\/e6bafcb1de17f4707b25910c7f84355b.png\" alt=\"LM Studio: \u0431\u0435\u0437 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0434\u0430\u0442\u043e\u0439 \u0438\u0437 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/e6b\/afc\/b1d\/e6bafcb1de17f4707b25910c7f84355b.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/e6b\/afc\/b1d\/e6bafcb1de17f4707b25910c7f84355b.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>LM Studio: \u0431\u0435\u0437 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0434\u0430\u0442\u043e\u0439 \u0438\u0437 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f<\/figcaption><\/div>\n<\/figure>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442, \u0447\u0442\u043e \u0441\u0435\u0433\u043e\u0434\u043d\u044f 24 \u0438\u044e\u043d\u044f 2026 \u0433\u043e\u0434\u0430, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a. \u042d\u0442\u043e \u0434\u0430\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0435\u0435 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0438. \u0423 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e \u0434\u0430\u0442\u0435, \u0437\u0430\u0441\u0442\u0440\u044f\u0432\u0448\u0435\u0435 \u043f\u0440\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438, \u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0435\u0441\u0442\u044c tools, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0435\u0440\u0435\u0434 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u043e \u0434\u0430\u0442\u0435 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442, \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0434\u0435\u043b\u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0434\u0430\u0442\u043e\u0439, \u0430 \u043d\u0435 \u0437\u0430\u0441\u0442\u0440\u044f\u0432\u0448\u0435\u0439 \u0434\u0430\u0442\u043e\u0439 \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0435\u0442 \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e tool, \u0442\u0430\u043a \u0447\u0442\u043e \u0448\u0430\u043d\u0441\u043e\u0432 \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0443 \u043d\u0435\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e.<\/p>\n<p>\u0412 LM Studio \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u0435\u0441\u0442\u044c plugin &#8212; js-code-sandbox, \u0441 \u043e\u0434\u043d\u0438\u043c-\u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c &#8212; <code>run_javascript<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043c\u043e\u0434\u0435\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 JavaScript\/TypeScript-\u043a\u043e\u0434 \u0432 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c in-process sandbox \u0431\u0435\u0437 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0441\u0435\u0442\u0438. \u0412\u043a\u043b\u044e\u0447\u0438\u043c \u0435\u0433\u043e \u0432 \u043f\u0440\u0430\u0432\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u043c \u043d\u0430\u0448 \u0437\u0430\u043f\u0440\u043e\u0441 <code>\u043a\u0430\u043a\u043e\u0435 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0447\u0438\u0441\u043b\u043e?<\/code>. \u0412 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043f\u0440\u0438 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u0438 \u043c\u043e\u0434\u0435\u043b\u044c \u0440\u0435\u0448\u0438\u043b\u0430, \u0447\u0442\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0435\u0439 \u043d\u0430\u0434\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0435\u0433\u043e, \u0430 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0442\u0432\u0435\u0442\u0438\u043b\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e:<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/5d3\/85d\/1c5\/5d385d1c5ba65cf5ffe2f20e1e4a98e3.png\" alt=\"LM Studio: \u0441 run_javascript \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c (tool) \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0434\u0430\u0442\u043e\u0439\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/5d3\/85d\/1c5\/5d385d1c5ba65cf5ffe2f20e1e4a98e3.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/5d3\/85d\/1c5\/5d385d1c5ba65cf5ffe2f20e1e4a98e3.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>LM Studio: \u0441 run_javascript \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c (tool) \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0434\u0430\u0442\u043e\u0439<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u0430, \u043d\u043e \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0434\u0435\u043b\u044c \u0443\u0437\u043d\u0430\u043b\u0430 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0434\u0430\u0442\u0443, \u0435\u0439 \u043d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043a\u0442\u043e-\u0442\u043e \u0435\u0439 \u0435\u0435 \u043d\u0430\u0437\u0432\u0430\u043b. \u041c\u044b \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0438\u0441\u0430\u043b\u0438 \u0441\u0430\u043c\u0438, \u043c\u044b \u0434\u0430\u0436\u0435 \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 prompt, \u043a\u0430\u043a \u0432\u043e\u043e\u0431\u0449\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u0434\u0430\u0442\u0443. \u041c\u043e\u0434\u0435\u043b\u044c \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u043e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430 javascript, \u0438 \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u041c\u044b \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u0441\u0430\u043c\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c tool &#8212; current_date, \u044d\u0442\u043e \u0431\u044b \u0434\u0430\u043b\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442, \u043d\u043e \u0442\u0443\u0442 \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0430\u043c\u0430 \u0434\u043e \u0432\u0441\u0435\u0433\u043e \u0434\u043e\u0434\u0443\u043c\u0430\u043b\u0430\u0441\u044c.<\/p>\n<p>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u0441\u043b\u043e\u0436\u043d\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0441\u043f\u0440\u0430\u0432\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u0440\u0435\u0442\u0438\u0439 \u0447\u0435\u0442\u0432\u0435\u0440\u0433 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u043d\u043e\u043b\u0443\u043d\u0438\u044f. \u0421\u043f\u0440\u043e\u0441\u0438\u043c \u043d\u0430\u0448\u0443 \u043c\u043e\u0434\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434: <code>\u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0442\u0440\u0435\u0442\u0438\u0439 \u0447\u0435\u0442\u0432\u0435\u0440\u0433 \u043f\u043e\u0441\u043b\u0435 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u043b\u0443\u043d\u0438\u044f<\/code>.<\/p>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0437\u0430\u0434\u0443\u043c\u0430\u043b\u0430\u0441\u044c, \u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0430 \u043a\u043e\u0434 \u0434\u043b\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0434\u0430\u0442\u044b, \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u043b\u0443\u043d\u0438\u044f, \u0432\u044b\u0432\u043e\u0434\u0430 \u0447\u0435\u0442\u0432\u0435\u0440\u0433\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0439 \u0434\u0430\u0442\u044b \u0438 \u0432\u0435\u0440\u043d\u0443\u043b\u0430\u0441\u044c \u0441 \u043e\u0442\u0432\u0435\u0442\u043e\u043c.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/f21\/f53\/0c3\/f21f530c3f7ef4a7ebe5129ffb510fba.png\" alt=\"LM Studio: \u0441 run_javascript \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c (tool) \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0442\u0440\u0435\u0442\u0438\u0439 \u0447\u0435\u0442\u0432\u0435\u0440\u0433 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u043d\u043e\u043b\u0443\u043d\u0438\u044f\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/f21\/f53\/0c3\/f21f530c3f7ef4a7ebe5129ffb510fba.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/f21\/f53\/0c3\/f21f530c3f7ef4a7ebe5129ffb510fba.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>LM Studio: \u0441 run_javascript \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c (tool) \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0442\u0440\u0435\u0442\u0438\u0439 \u0447\u0435\u0442\u0432\u0435\u0440\u0433 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u043d\u043e\u043b\u0443\u043d\u0438\u044f<\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0430\u043c\u0430 \u0440\u0435\u0448\u0438\u043b\u0430, \u0447\u0442\u043e \u0435\u0439 \u043d\u0430\u0434\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0441\u043a\u0440\u0438\u043f\u0442.<\/p>\n<pre><code class=\"javascript\">\/\/ Get current dateconst now = new Date();console.log(\"\u0421\u0435\u0439\u0447\u0430\u0441 (UTC):\", now.toISOString());\/\/ --- Find next full moon using synodic month calculation ---const synodic = 29.530588853; \/\/ daysconst newMoonEpochMs = Date.UTC(2000, 0, 6, 18, 14); \/\/ known new moonconst startMs = now.getTime();const startDays = startMs \/ 86400000;const epochDays = newMoonEpochMs \/ 86400000;\/\/ full moons occur at (i + 0.5) * synodic after epochlet i = Math.floor((startDays - epochDays) \/ synodic + 0.5);while ((epochDays + (i + 0.5) * synodic) * 86400000 &lt;= startMs) i++;const fullMoonMs = (epochDays + (i + 0.5) * synodic) * 86400000;const fmUtc = new Date(fullMoonMs);console.log(\"\u0411\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0435 \u043f\u043e\u043b\u043d\u043e\u043b\u0443\u043d\u0438\u0435 (UTC):\", fmUtc.toISOString());\/\/ Full moon date in Moscow time (UTC+3)const fmMoscow = new Date(fullMoonMs + 3 * 3600000);const fmDateStr = fmMoscow.toISOString().slice(0, 10);console.log(\"\u0414\u0430\u0442\u0430 \u043f\u043e\u043b\u043d\u043e\u043b\u0443\u043d\u0438\u044f (\u041c\u0421\u041a):\", fmDateStr);\/\/ --- Third Thursday strictly after the full moon date ---const fmDay = new Date(Date.parse(fmDateStr + \"T00:00:00Z\"));const thursdays = [];let d = new Date(fmDay.getTime() + 86400000); \/\/ day after full moonwhile (thursdays.length &lt; 3) {  if (d.getUTCDay() === 4) thursdays.push(d.toISOString().slice(0, 10));  d = new Date(d.getTime() + 86400000);}console.log(\"\u0427\u0435\u0442\u0432\u0435\u0440\u0433\u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u043d\u043e\u043b\u0443\u043d\u0438\u044f:\", thursdays);console.log(\"\u0422\u0440\u0435\u0442\u0438\u0439 \u0447\u0435\u0442\u0432\u0435\u0440\u0433:\", thursdays[2]);<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438, \u043e\u043d\u0430 \u043e\u0442\u0432\u0435\u0442\u0438\u043b\u0430, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043a \u044d\u0442\u043e\u043c\u0443 \u0441\u043a\u0440\u0438\u043f\u0442\u0443, \u0442.\u043a. \u044d\u0442\u043e \u043b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0430\u0446\u0438\u044f, \u0430 \u043d\u0435 \u0430\u0441\u0442\u0440\u043e\u043d\u043e\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0430\u0441\u0447\u0435\u0442 \u0444\u0430\u0437 \u041b\u0443\u043d\u044b, \u043d\u043e \u0441 \u0434\u0430\u0442\u043e\u0439 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u043b\u0430\u0441\u044c, \u0447\u0442\u043e \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u044b\u0439 \u0443\u0441\u043f\u0435\u0445.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0431\u044b \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u043b\u0443\u043d\u0438\u0435 \u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0438 \u0441\u0430\u043c\u0430, \u0442\u043e \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u043e\u0439 \u0446\u0435\u043f\u043e\u0447\u043a\u043e\u0439 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0439 \u0441 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u0438\u0437 \u044d\u0442\u0430\u043f\u043e\u0432 &#8212; \u0441\u043a\u0440\u0438\u043f\u0442 \u044d\u0442\u043e \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u0435\u0435. \u0415\u0441\u0442\u044c \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u043f\u043b\u0430\u0441\u0442 \u0437\u0430\u0434\u0430\u0447, \u0433\u0434\u0435 \u0441\u043a\u0440\u0438\u043f\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043b\u0443\u0447\u0448\u0435 &#8212; \u044d\u0442\u043e \u0431\u0430\u0437\u043e\u0432\u0430\u044f \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0430, \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u0434\u0430\u0442\u0430\u043c\u0438, \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0442\u0435\u043a\u0441\u0442\u0430 \u0438\u043b\u0438 JSON (\u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0433\u043e tool), \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u0430\u043c\u0438, \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0430\u043c\u0438 \u0438 \u0442.\u0434.<\/p>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438\u043b\u0438 \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0433\u043e tool \u0432 \u0447\u0430\u0442 \u0432\u0435\u0440\u043d\u0443\u043b\u0438\u0441\u044c \u0448\u0435\u0441\u0442\u044c \u0441\u0443\u043c\u043c \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c\u0438 \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u043d\u0430\u0434\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0432 \u043e\u0442\u0447\u0435\u0442\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439, \u043e\u0431\u0449\u0443\u044e \u0441\u0443\u043c\u043c\u0443, \u0441\u0440\u0435\u0434\u043d\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438 95-\u0439 \u043f\u0435\u0440\u0446\u0435\u043d\u0442\u0438\u043b\u044c. \u041c\u043e\u0434\u0435\u043b\u044c \u0432\u0441\u0435 \u0440\u0430\u0441\u0447\u0435\u0442\u044b \u043c\u043e\u0436\u0435\u0442 \u0441\u0432\u0435\u0441\u0442\u0438 \u043a \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u043c\u0443 \u0441\u043a\u0440\u0438\u043f\u0442\u0443, \u0438 \u044d\u0442\u043e \u0442\u043e\u0447\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u0434\u043e\u043b\u0433\u0438\u0435 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u043e\u0434\u0435\u043b\u0438, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u0441\u043a\u0440\u0438\u043f\u0442 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0434\u0435\u0436\u043d\u0435\u0435:<\/p>\n<pre><code>const amounts = [1200, 3500, 700, 8100, 940, 1250];const sorted = [...amounts].sort((a, b) =&gt; a - b);const total = amounts.reduce((sum, value) =&gt; sum + value, 0);const p95 = sorted[Math.ceil(sorted.length * 0.95) - 1];console.log({  count: amounts.length,  total,  average: total \/ amounts.length,  p95,});<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041d\u0430\u043c \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c tools <code>calculator<\/code>, <code>sum_payments<\/code> \u0438 <code>percentile<\/code>. \u041e\u0434\u0438\u043d \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u0430\u043a\u0438\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c\u0438 \u0437\u0430 \u0441\u0447\u0435\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e tool \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u0438, \u0430 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 javascript \u043c\u043e\u0434\u0435\u043b\u044c \u0438 \u0442\u0430\u043a \u0437\u043d\u0430\u0435\u0442. \u0421\u043a\u0440\u0438\u043f\u0442 \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u0435\u043d \u0437\u0430\u0432\u0438\u0441\u043d\u0443\u0442\u044c \u0438\u043b\u0438 \u0441\u044a\u0435\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0443\u0436\u043d\u044b \u0442\u0430\u0439\u043c\u0430\u0443\u0442 \u0438 \u043b\u0438\u043c\u0438\u0442 \u043f\u0430\u043c\u044f\u0442\u0438. \u041d\u043e \u0442\u0430\u043a\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0435\u0442 <code>~\/.ssh<\/code>, \u043d\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442 \u0430\u0440\u0445\u0438\u0432 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u043d\u0435 \u0443\u0434\u0430\u043b\u0438\u0442 \u0432\u0430\u0436\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435. \u0415\u0441\u043b\u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u043e js-code-sandbox, \u0442\u043e \u043e\u043d \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043e\u0434\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0447\u0430\u0442. \u0422.\u0435. \u0441\u043a\u0440\u0438\u043f\u0442 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0432 \u044d\u0442\u043e\u0439 \u043f\u0430\u043f\u043a\u0435, \u0438 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0435\u0433\u043e \u043f\u043e\u0437\u0436\u0435, \u043d\u043e \u0432\u043e\u0442 \u0434\u0440\u0443\u0433\u043e\u0439 \u0447\u0430\u0442 \u0431\u0443\u0434\u0435\u0442 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u0435\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u043e\u0438 \u0444\u0430\u0439\u043b\u044b.<\/p>\n<h2>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 JavaScript \u0432 LangChain<\/h2>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c, \u043a \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0441\u043e\u0437\u0434\u0430\u044e\u0449\u0438\u0445 \u0441\u0432\u043e\u0438\u0445 \u0430\u0433\u0435\u043d\u0442\u043e\u0432, \u0442\u043e \u0442\u0443\u0442 \u0441\u0430\u043c\u044b\u0439 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0439 framework &#8212; LangChain. \u041c\u043e\u0436\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043d\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 \u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0432 \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b. LangChain &#8212; \u044d\u0442\u043e \u0431\u0430\u0437\u0430 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f AI-\u0430\u0433\u0435\u043d\u0442\u043e\u0432. \u0422\u0430\u043a\u0436\u0435 \u0443 LangChain \u0435\u0441\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <code>deepagents<\/code> \u0441 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u043c Harness \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0445 \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 skills, todo, \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0445 sandbox (\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0445) \u0434\u043b\u044f python. \u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u043d\u0435\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 langchain_quickjs, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u043a\u043b\u0430\u0441\u0441 CodeInterpreterMiddleware, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0430\u0433\u0435\u043d\u0442\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 <code>eval<\/code> \u043d\u0430 \u0431\u0430\u0437\u0435 quickjs, \u043d\u043e \u0435\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0448\u0438\u0440\u0435, \u0447\u0435\u043c \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0438\u0437 LM Studio. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0435\u0433\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435.<\/p>\n<p>\u041f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0431\u043b\u043e\u043a\u0430 <code>CodeInterpreterMiddleware<\/code> \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u043f\u0440\u043e\u043c\u043f\u0442 \u0430\u0433\u0435\u043d\u0442\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442.<\/p>\n<p>\u0415\u0433\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 <code>render_repl_system_prompt<\/code> \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0435 <a href=\"https:\/\/github.com\/langchain-ai\/deepagents\/blob\/main\/libs\/partners\/quickjs\/langchain_quickjs\/_prompt.py\" rel=\"noopener noreferrer nofollow\"><code>langchain_quickjs\/_prompt.py<\/code><\/a>. \u041d\u0438\u0436\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: <code>timeout=5.0<\/code>, <code>memory_limit=64 MB<\/code>, <code>mode=\"thread\"<\/code>.<\/p>\n<pre><code>### InterpreterAn `eval` tool is available. It runs JavaScript in a persistent REPL.- State (variables, functions) persists across tool calls and across multiple turns for this conversation thread.- Top-level `await` works; Promises resolve before the call returns.- Runtime sandbox: no built-in filesystem, network, stdlib, or wall-clock APIs (`fetch`, `require`, `fs`, `process`, real `Date.now()` are unavailable or stubbed).- The REPL has no access to host tools, files, or the network: it is pure computation. Return values to communicate results.- Timeout: 5.0s per call. Memory: 64 MB total.- `console.log` output is captured and returned alongside the result.<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044d\u0442\u043e \u043d\u0435 \u0432\u0441\u0435, \u0435\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0446\u0438\u0438, \u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432, \u043d\u043e \u044d\u0442\u043e \u043c\u044b \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435. \u0418\u0437 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e, \u0432 \u043f\u0440\u043e\u043c\u043f\u0442 \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u043d \u0437\u0430\u043f\u0440\u0435\u0442 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0434\u0430\u0442\u044b \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c, \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u0430\u0448\u0438 \u043f\u0435\u0440\u0432\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0437 LM Studio \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0439 \u0446\u0435\u043b\u0438. \u0422\u0443\u0442 \u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0438\u0437 LangChain \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u044f \u043b\u043e\u0433\u0438\u043a\u0430, \u0438 \u043e\u043d\u0438 \u0435\u0451 \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f &#8212; \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c <code>capability-scoped execution layer<\/code>, \u0442.\u0435. \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c\u0438 \u0435\u043c\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 (tools). \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u0430\u0442\u0443 &#8212; \u044d\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430, \u0430 \u043e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u044f\u0432\u043d\u043e, \u0430 \u043d\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438. \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u044f\u0432\u043d\u043e \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u044e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0434\u0430\u0442\u043e\u0439 \u0432 \u0441\u0432\u043e\u0438\u0445 \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u0445. \u042d\u0442\u043e \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0435\u0441\u043b\u0438 \u0432\u044b \u0432 \u0441\u0432\u043e\u0435\u043c prompt \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442\u0435, \u0442\u043e \u0432\u0441\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u043d\u043e \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043b\u0443\u0447\u0448\u0435 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0435 \u0435\u0451 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439, \u0438\u043d\u0430\u0447\u0435 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0431\u0443\u0434\u0443\u0449\u0438\u043c \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u043e \u043e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0442\u044c.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u0447\u043d\u0435\u043c \u0441 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0430\u0433\u0435\u043d\u0442\u0430 \u043d\u0430 \u0431\u0430\u0437\u0435 LangChain (\u043f\u043e\u043a\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u043e\u0433\u043e deepagents \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u044b) \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0435\u043c\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f quickjs. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0430\u0433\u0435\u043d\u0442\u0443 \u043d\u0430\u0434\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 CodeInterpreterMiddleware, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0439 \u044d\u0442\u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b:<\/p>\n<pre><code class=\"python\">from langchain.chat_models import init_chat_modelfrom langchain.agents import create_agentfrom langchain_quickjs import CodeInterpreterMiddlewaremodel = init_chat_model(    \"qwen\/qwen3.8-27b\",    model_provider=\"openai\",    base_url=\"http:\/\/127.0.0.1:1234\/v1\",    api_key=\"x\",)agent = create_agent(    model=model,    middleware=[        CodeInterpreterMiddleware(          # \u0434\u0430\u043d\u043d\u044b\u0439 middleware \u0441\u0430\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 `eval` \u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u0442 prompt            timeout=5.0,                    # \u043b\u0438\u043c\u0438\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u043e\u0434\u0438\u043d \u0432\u044b\u0437\u043e\u0432 eval, \u0441\u0435\u043a\u0443\u043d\u0434\u044b            memory_limit=64 * 1024 * 1024,  # \u043f\u043e\u0442\u043e\u043b\u043e\u043a \u043a\u0443\u0447\u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430, \u0431\u0430\u0439\u0442\u044b        ),    ],)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0443 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430\u0448 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440.<\/p>\n<pre><code class=\"python\">result = agent.invoke(  {\"messages\": [    \"\u0432\u043e\u0442 \u043f\u043b\u0430\u0442\u0435\u0436\u0438 1200, 3500, 700, 8100, 940, 1250. \"    \"\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0448\u043b\u043e, \u043a\u0430\u043a\u043e\u0439 \u0441\u0440\u0435\u0434\u043d\u0438\u0439 \u0447\u0435\u043a \u0438 \u043a\u0430\u043a\u043e\u0439 p95? \"  ]})<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041d\u0430\u043f\u0435\u0447\u0430\u0442\u0430\u0435\u043c \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0434\u0438\u0430\u043b\u043e\u0433\u0430, \u043e\u0441\u043e\u0431\u043e \u043e\u0431\u0440\u0430\u0449\u0430\u044f \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0434\u0435\u0442\u0430\u043b\u0438 tool_call (\u0432\u044b\u0437\u043e\u0432 tool):<\/p>\n<pre><code class=\"python\">for msg in result[\"messages\"]:    print(getattr(msg, \"type\", type(msg).__name__))    for tc in getattr(msg, \"tool_calls\", None) or []:        name = tc.get(\"name\") if isinstance(tc, dict) else getattr(tc, \"name\", None)        args = tc.get(\"args\") if isinstance(tc, dict) else getattr(tc, \"args\", None)        print(f\"tool_call: name='{name}' args:\")        for arg_name, arg_value in args.items():            print(f\"{arg_name}:\")            print(arg_value)    content = getattr(msg, \"content\", None)    if content:        print(content)            print(\"-\" * 40)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0434\u043b\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0430\u043c\u0430 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0430 javascript, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b\u0430 \u0435\u0433\u043e \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0430 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0435\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432.<\/p>\n<pre><code>human\u0432\u043e\u0442 \u043f\u043b\u0430\u0442\u0435\u0436\u0438 1200, 3500, 700, 8100, 940, 1250. \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0448\u043b\u043e, \u043a\u0430\u043a\u043e\u0439 \u0441\u0440\u0435\u0434\u043d\u0438\u0439 \u0447\u0435\u043a \u0438 \u043a\u0430\u043a\u043e\u0439 p95? ----------------------------------------aitool_call: name='eval' args:code:const p = [1200, 3500, 700, 8100, 940, 1250];const sum = p.reduce((a,b)=&gt;a+b,0);const avg = sum\/p.length;const s = [...p].sort((a,b)=&gt;a-b);\/\/ nearest-rank p95const nr = s[Math.ceil(0.95*p.length)-1];\/\/ linear interpolation (numpy default)const idx = 0.95*(s.length-1);const lo = Math.floor(idx), hi = Math.ceil(idx);const lin = s[lo] + (idx-lo)*(s[hi]-s[lo]);console.log({sum, avg, sorted: s, nearestRank: nr, linear: lin});----------------------------------------tool&lt;stdout&gt;{sum: 15690, avg: 2615, sorted: [700, 940, 1200, 1250, 3500, 8100], nearestRank: 8100, linear: 6950}&lt;\/stdout&gt;&lt;result&gt;null&lt;\/result&gt;----------------------------------------ai\u041f\u043e \u0434\u0430\u043d\u043d\u044b\u043c 6 \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439 (700, 940, 1200, 1250, 3500, 8100):- **\u0412\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0448\u043b\u043e:** 15 690- **\u0421\u0440\u0435\u0434\u043d\u0438\u0439 \u0447\u0435\u043a:** 2 615- **P95:** \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043c\u0435\u0442\u043e\u0434\u0430 \u0440\u0430\u0441\u0447\u0451\u0442\u0430:  - \u043c\u0435\u0442\u043e\u0434 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0440\u0430\u043d\u0433\u0430 (\u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u043c\u0430\u043b\u044b\u0445 \u0432\u044b\u0431\u043e\u0440\u043e\u043a): **8 100** \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043b\u0430\u0442\u0451\u0436, \u0442.\u043a. 0.95 \u00d7 6 = 5.7 \u2192 \u043e\u043a\u0440\u0443\u0433\u043b\u044f\u0435\u043c \u0434\u043e 6-\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430;  - \u043b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u044f (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 numpy): **6 950**.\u0414\u043b\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0433\u043e \u0432\u044b\u0431\u043e\u0440\u043a\u0438 p95 \u043f\u043e\u0447\u0442\u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u043e\u043c, \u0442\u0430\u043a \u0447\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e\u0439 \u043c\u0435\u0442\u0440\u0438\u043a\u043e\u0439 \u0431\u044b\u043b \u0431\u044b \u043c\u0435\u0434\u0438\u0430\u043d\u043d\u044b\u0439 \u0447\u0435\u043a \u2014 **1 225**.----------------------------------------<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h3>LangChain \u0438 Programmatic Tool Calling (PTC) \u0438\u043b\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u0430\u044f \u043c\u0430\u0433\u0438\u044f \u0432\u043d\u0435 \u0425\u043e\u0433\u0432\u0430\u0440\u0434\u0441\u0430<\/h3>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u0435\u043d \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0434\u0430\u0442\u044b, \u0442\u043e, \u043a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u0440\u0430\u043d\u044c\u0448\u0435, \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0432 LangChain \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0435\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c tools, \u0430 \u043d\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432 \u0441\u0432\u043e\u0435\u043c prompt (\u0445\u043e\u0442\u044f \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e). \u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043c\u044b \u043f\u043e\u0442\u0435\u0440\u044f\u0435\u043c \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432, \u0442.\u043a. \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0434\u0435\u043b\u0438 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u0434\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u0432 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 (tool), \u0447\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0434\u0430\u0442\u0443, \u0430 \u043f\u043e\u0442\u043e\u043c \u0443\u0436\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 (tool) <code>eval<\/code> \u043d\u0430 \u0431\u0430\u0437\u0435 JS, \u043d\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0443\u0442 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0430\u0433\u0438\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 <code>deepagents<\/code> &#8212; \u0432 \u043d\u0435\u0439 \u0435\u0441\u0442\u044c \u0440\u0435\u0436\u0438\u043c, \u043a\u043e\u0433\u0434\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u043a\u0440\u0438\u043f\u0442 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c tools. \u042d\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435-\u0442\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u043a\u0430\u043d\u043e\u043d\u043e\u043c \u0430\u0433\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 (ReAct), \u043a\u043e\u0433\u0434\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 (tool) \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u043e\u043d\u0430 \u0436\u0435 \u0440\u0435\u0448\u0430\u0435\u0442, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0445\u043e\u0434\u0443. \u0422\u0443\u0442 \u043c\u043e\u0434\u0435\u043b\u044c \u0440\u0435\u0448\u0430\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 <code>eval<\/code>, \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u0443\u044f \u0435\u043c\u0443 \u0432\u044b\u0437\u043e\u0432 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 (tools) \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f programmatic tool calling, \u0438\u043b\u0438 PTC. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u043d\u0430\u0434\u043e \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b (tools), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u0434 \u0443\u0432\u0438\u0434\u0438\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 <code>tools<\/code>, \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 ptc \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u043a\u043b\u0430\u0441\u0441\u0430 CodeInterpreterMiddleware. \u041f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0435 tools \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u044c JavaScript \u0441 \u0437\u0430\u043c\u0435\u043d\u043e\u0439 \u0438\u043c\u0435\u043d \u043d\u0430 camelCase: <code>get_current_datetime<\/code> \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 <code>tools.getCurrentDatetime(...)<\/code>. \u0421\u0430\u043c\u0438 \u0432\u044b\u0437\u043e\u0432\u044b \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0434\u0435\u043b\u0430\u0435\u0442 harness \u043d\u0430 MCP, \u0441\u043a\u0440\u0438\u043f\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u0438\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0437\u043e\u0432 \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043e\u0442\u0432\u0435\u0442\u044b.<\/p>\n<p>\u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u044d\u0442\u043e \u043d\u0430 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435, \u0430 \u043f\u043e\u0442\u043e\u043c \u044f \u043f\u043e\u043a\u0430\u0436\u0443, \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0432\u0441\u0435 \u043c\u0435\u043d\u044f\u0435\u0442 \u0438 \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u0447\u0430\u0441\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0438 \u0441 LLM.<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u0430\u0448 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 tool \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0434\u0430\u0442\u044b \u0432 \u0432\u0438\u0434\u0435 python-\u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<pre><code class=\"python\">from datetime import datetime, timezonefrom langchain.tools import tool@tooldef get_current_datetime() -&gt; str:    \"\"\"Return the current date and time in UTC as an ISO 8601 string.\"\"\"    return datetime.now(timezone.utc).isoformat()<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0430\u0433\u0435\u043d\u0442\u0430 \u0438 \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0436\u0435\u043c, \u0447\u0442\u043e \u043d\u0430\u0448 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c tool <code>get_current_datetime<\/code>, \u0435\u0441\u043b\u0438 \u043e\u043d \u0435\u043c\u0443 \u043d\u0443\u0436\u0435\u043d. \u0417\u0430\u043c\u0435\u0442\u044c\u0442\u0435, \u043c\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u044d\u0442\u043e\u0442 tool \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0443, \u0430 \u043d\u0435 \u0441\u0430\u043c\u043e\u043c\u0443 \u0430\u0433\u0435\u043d\u0442\u0443 (\u0442\u0430\u043a \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0434\u0435\u043b\u044c \u043c\u043e\u0433\u043b\u0430 \u0435\u0433\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c):<\/p>\n<pre><code class=\"python\">agent = create_agent(    tools=None,                             # \u0421\u0430\u043c\u043e\u043c\u0443 \u0430\u0433\u0435\u043d\u0442\u0443 \u0432 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 get_current_datetime \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d    model=model,    middleware=[        CodeInterpreterMiddleware(          # \u0434\u0430\u043d\u043d\u044b\u0439 middleware \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 `eval` \u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u0442 system prompt            ptc=[get_current_datetime],            timeout=5.0,                    # \u043b\u0438\u043c\u0438\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u043e\u0434\u0438\u043d \u0432\u044b\u0437\u043e\u0432 eval, \u0441\u0435\u043a\u0443\u043d\u0434\u044b            memory_limit=64 * 1024 * 1024,  # \u043f\u043e\u0442\u043e\u043b\u043e\u043a \u043a\u0443\u0447\u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430, \u0431\u0430\u0439\u0442\u044b        ),    ],)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430\u0448 \u0441\u0442\u0430\u0440\u044b\u0439 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441:<\/p>\n<pre><code class=\"python\">result = agent.invoke({\"messages\": [\"\u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0442\u0440\u0435\u0442\u0438\u0439 \u0447\u0435\u0442\u0432\u0435\u0440\u0433 \u043f\u043e\u0441\u043b\u0435 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u043b\u0443\u043d\u0438\u044f?\"]})<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041d\u0430\u043f\u0435\u0447\u0430\u0442\u0430\u0435\u043c \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0434\u0438\u0430\u043b\u043e\u0433\u0430:<\/p>\n<pre><code class=\"python\">for msg in result[\"messages\"]:    print(getattr(msg, \"type\", type(msg).__name__))    for tc in getattr(msg, \"tool_calls\", None) or []:        name = tc.get(\"name\") if isinstance(tc, dict) else getattr(tc, \"name\", None)        args = tc.get(\"args\") if isinstance(tc, dict) else getattr(tc, \"args\", None)        print(f\"tool_call: name='{name}' args:\")        for arg_name, arg_value in args.items():            print(f\"{arg_name}:\")            print(arg_value)    content = getattr(msg, \"content\", None)    if content:        print(content)            print(\"-\" * 40)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 <code>const now = await tools.getCurrentDatetime({});<\/code> \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 &#8212; \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c tool_call \u043d\u0430\u0448\u0435\u0439 python \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>get_current_datetime<\/code>, \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0439 \u0438\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u0430<\/p>\n<pre><code>human\u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0442\u0440\u0435\u0442\u0438\u0439 \u0447\u0435\u0442\u0432\u0435\u0440\u0433 \u043f\u043e\u0441\u043b\u0435 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u043b\u0443\u043d\u0438\u044f?----------------------------------------aitool_call: name='eval' args:code:const now = await tools.getCurrentDatetime({});console.log(\"Current:\", now);\/\/ Find the next full moon using a known new moon reference and the synodic month\/\/ Known new moon: 2000-01-06 18:14 UTC (JD 2451550.26)const SYNODIC = 29.530588853;const newMoonRef = Date.UTC(2000, 0, 6, 18, 14);const msPerDay = 86400000;const nowMs = Date.parse(now);const daysSinceRef = (nowMs - newMoonRef) \/ msPerDay;\/\/ Number of synodic months since referenceconst n = Math.floor(daysSinceRef \/ SYNODIC);\/\/ Next full moon: we need the full moon (moon age = SYNODIC\/2) after now\/\/ Full moon phase offset from new moon = SYNODIC \/ 2let fullMoonMs = newMoonRef + (n * SYNODIC + SYNODIC \/ 2) * msPerDay;if (fullMoonMs &lt; nowMs) {  fullMoonMs += SYNODIC * msPerDay;}const fullMoonDate = new Date(fullMoonMs);console.log(\"Next full moon:\", fullMoonDate.toISOString());\/\/ Find the first Thursday after the full moonlet d = new Date(fullMoonMs);\/\/ Thursday = 4 in JS getUTCDay (0=Sun, 1=Mon, ..., 4=Thu)while (d.getUTCDay() !== 4) {  d.setUTCHours(d.getUTCHours() + 24);}console.log(\"First Thursday after full moon:\", d.toISOString());\/\/ Third Thursday = first Thursday + 14 daysconst thirdThursday = new Date(d.getTime() + 14 * msPerDay);console.log(\"Third Thursday after full moon:\", thirdThursday.toISOString());----------------------------------------tool&lt;stdout&gt;Current: 2026-08-18T20:30:50.790147+00:00Next full moon: 2026-08-28T02:07:47.938ZFirst Thursday after full moon: 2026-09-03T02:07:47.938ZThird Thursday after full moon: 2026-09-17T02:07:47.938Z&lt;\/stdout&gt;&lt;result&gt;null&lt;\/result&gt;----------------------------------------ai**\u0411\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0435 \u043f\u043e\u043b\u043d\u043e\u043b\u0443\u043d\u0438\u0435** \u2014 28 \u0430\u0432\u0433\u0443\u0441\u0442\u0430 2026 \u0433. (\u043f\u044f\u0442\u043d\u0438\u0446\u0430).**\u0422\u0440\u0435\u0442\u0438\u0439 \u0447\u0435\u0442\u0432\u0435\u0440\u0433 \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0433\u043e \u2014 17 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f 2026 \u0433\u043e\u0434\u0430.**| # | \u0414\u0430\u0442\u0430 ||---|------|| 1-\u0439 \u0447\u0435\u0442\u0432\u0435\u0440\u0433 | 3 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f 2026 || 2-\u0439 \u0447\u0435\u0442\u0432\u0435\u0440\u0433 | 10 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f 2026 || 3-\u0439 \u0447\u0435\u0442\u0432\u0435\u0440\u0433 | **17 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f 2026** |----------------------------------------<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0423\u0440\u0430. \u041c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u0440\u0430\u0441\u0447\u0435\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e JS \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u043c\u043e\u0434\u0435\u043b\u0438, \u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u043a\u043e\u0434. \u041c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u044d\u0442\u043e \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043b\u043e\u0433\u0438\u043a\u0435 \u0430\u0432\u0442\u043e\u0440\u043e\u0432 LangChain, \u0447\u0442\u043e \u0441\u043a\u0440\u0438\u043f\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043c, \u0447\u0442\u043e \u0435\u043c\u0443 \u044f\u0432\u043d\u043e \u0434\u0430\u043b\u0438, \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u044f\u0432\u043d\u043e \u0434\u0430\u043b\u0438 \u0435\u043c\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043d\u0430 python, \u043d\u043e \u0432\u044b\u0437\u0432\u0430\u043b\u0430\u0441\u044c \u043e\u043d\u0430 \u0438\u0437 JS &#8212; harness \u0440\u0435\u0448\u0438\u043b \u044d\u0442\u043e \u0437\u0430 \u043d\u0430\u0441.<\/p>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0433\u0434\u0435 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c, \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0438 \u0446\u0435\u043d\u0443 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u043d\u0430\u0448 \u0430\u0433\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 CRM. CRM \u0443 \u043d\u0430\u0441 \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0439 MCP (\u043b\u0438\u0431\u043e \u043e\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f, \u043b\u0438\u0431\u043e API \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u0441\u0430\u043c\u0438 \u0437\u0430 \u0432\u0435\u0447\u0435\u0440 \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438). \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438: <code>search_customer<\/code> &#8212; \u043f\u043e\u0438\u0441\u043a \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u043f\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c (\u0433\u043e\u0440\u043e\u0434, \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440, \u0438\u043c\u044f) <code>get_customer<\/code> &#8212; \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043f\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0443 <code>list_deals<\/code> &#8212; \u0441\u0434\u0435\u043b\u043a\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 <code>list_next_actions<\/code> &#8212; \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f: \u0441\u043e\u0437\u0432\u043e\u043d\u044b, \u0437\u0430\u0434\u0430\u0447\u0438, \u043f\u0438\u0441\u044c\u043c\u0430 <code>list_meetings<\/code> &#8212; \u0432\u0441\u0442\u0440\u0435\u0447\u0438 \u043f\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u0438\u043b\u0438 \u0441\u0434\u0435\u043b\u043a\u0435<\/p>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u043d\u0430\u0448 \u0430\u0433\u0435\u043d\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u043e\u0442 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430 \u043e\u0442\u0434\u0435\u043b\u0430 \u043f\u0440\u043e\u0434\u0430\u0436 \u0432 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u043c \u0447\u0430\u0442\u0435: <code>\u0421 \u043a\u0435\u043c \u0438\u0437 \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u043e\u0432 \u0432 \u0421\u0430\u043c\u0430\u0440\u0435 \u043d\u0430\u0434\u043e \u0441\u043e\u0437\u0432\u043e\u043d\u0438\u0442\u044c\u0441\u044f \u0438\u043b\u0438 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043d\u0435\u0434\u0435\u043b\u0435<\/code>.<\/p>\n<p>\u0412 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0430\u0433\u0435\u043d\u0442\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435 (ReAct) \u044d\u0442\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0448\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u044b\u0437\u043e\u0432\u043e\u0432 tools \u043c\u043e\u0434\u0435\u043b\u044c\u044e:<\/p>\n<ul>\n<li>\n<p>\u043c\u043e\u0434\u0435\u043b\u044c \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u043a <code>search_customer<\/code> &#8212; \u043f\u043e\u0438\u0441\u043a \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043f\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0443 \u0433\u043e\u0440\u043e\u0434 \u0421\u0430\u043c\u0430\u0440\u0430<\/p>\n<\/li>\n<li>\n<p><code>search_customer<\/code> \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u043e\u0442\u0432\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 \u043c\u043e\u0434\u0435\u043b\u044c<\/p>\n<\/li>\n<li>\n<p>\u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, \u0447\u0430\u0441\u0442\u043e \u0441 \u043b\u0438\u0448\u043d\u0438\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438: \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u044b, \u0442\u0435\u0433\u0438, \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 id, \u0441\u0442\u0430\u0440\u044b\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u044b<\/p>\n<\/li>\n<li>\n<p>\u043c\u043e\u0434\u0435\u043b\u044c \u0447\u0438\u0442\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0438 \u0434\u043b\u044f \u041a\u0410\u0416\u0414\u041e\u0413\u041e \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 <\/p>\n<ul>\n<li>\n<p>\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u043a tool <code>get_customer<\/code>, <code>list_deals<\/code>, <code>list_next_actions<\/code>, <code>list_meetings<\/code> \u0438 \u043a\u043b\u0430\u0434\u0435\u0442 \u0435\u0433\u043e \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0430<\/p>\n<\/li>\n<li>\n<p><code>get_customer<\/code>, <code>list_deals<\/code>, <code>list_next_actions<\/code>, <code>list_meetings<\/code> \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0430 MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u043e\u0442\u0432\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 \u043c\u043e\u0434\u0435\u043b\u044c<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u0438\u0437 \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0449\u0438\u0445 \u043c\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435, \u0447\u0430\u0442 \u043f\u0440\u043e\u0431\u0443\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u0440\u0430\u0441\u0438\u0432\u043e \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442<\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 JSON \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0445\u043e\u0434 \u043c\u043e\u0434\u0435\u043b\u0438 \u0437\u0430\u043d\u043e\u0432\u043e \u0442\u0430\u0449\u0438\u0442 \u0443\u0436\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0435 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0438, \u0441\u0434\u0435\u043b\u043a\u0438, \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438 \u0432\u0441\u0442\u0440\u0435\u0447\u0438. \u041d\u0430 \u0434\u0435\u0441\u044f\u0442\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u0445 \u044d\u0442\u043e \u043e\u0434\u0438\u043d \u043f\u043e\u0438\u0441\u043a \u043f\u043b\u044e\u0441 \u0447\u0435\u0442\u044b\u0440\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0433\u043e: \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u043e\u0440\u043e\u043a\u0430 tool results \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u0438. \u0414\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e, \u043c\u043e\u0434\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u043e\u0431\u0449\u0435 \u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u043d\u0438\u0445 \u0443\u043f\u0443\u0441\u0442\u0438\u0442\u044c + \u0432\u0441\u0435 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043b\u0435\u0436\u0430\u0442\u044c \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0430.<\/p>\n<p>\u0412\u043e\u0442 \u0442\u0443\u0442 PTC \u043a\u0430\u043a \u0440\u0430\u0437 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043d\u0430 \u0447\u0442\u043e \u043e\u043d \u0441\u043f\u043e\u0441\u043e\u0431\u0435\u043d. \u0411\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f, \u0438 \u0441\u043a\u0440\u0438\u043f\u0442 \u043c\u043e\u0436\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0435 \u0441\u0430\u043c. \u0427\u0442\u043e\u0431\u044b \u0441\u043a\u0440\u0438\u043f\u0442 \u043c\u043e\u0433 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0442\u0435 \u0436\u0435 tools \u0441\u0430\u043c, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u044f\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u0438\u0445 \u0432 PTC \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0430\u0433\u0435\u043d\u0442\u0430 <code>CodeInterpreterMiddleware<\/code>:<\/p>\n<pre><code class=\"python\">CodeInterpreterMiddleware(    ptc=[        \"get_current_datetime\",        \"search_customer\",        \"get_customer\",        \"list_deals\",        \"list_next_actions\",        \"list_meetings\",    ],)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0421 PTC \u043c\u043e\u0434\u0435\u043b\u044c \u0421\u0410\u041c\u0410 \u043f\u0438\u0448\u0435\u0442 \u043e\u0434\u043d\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043f\u043e\u0434 \u0442\u043e\u0442 \u0436\u0435 \u0432\u043e\u043f\u0440\u043e\u0441 \u043f\u0440\u043e \u0421\u0430\u043c\u0430\u0440\u0443:<\/p>\n<pre><code>const now = new Date(await tools.getCurrentDatetime({}));const mskOffsetMs = 3 * 3600000; \/\/ \u041c\u0421\u041a, \u043a\u0430\u043a \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441 \u043f\u043e\u043b\u043d\u043e\u043b\u0443\u043d\u0438\u0435\u043cconst msk = new Date(now.getTime() + mskOffsetMs);const daysUntilMonday = (1 + 7 - msk.getUTCDay()) % 7 || 7;const weekStart = new Date(  Date.UTC(msk.getUTCFullYear(), msk.getUTCMonth(), msk.getUTCDate() + daysUntilMonday) - mskOffsetMs,);const weekEnd = new Date(weekStart.getTime() + 7 * 86400000);const inNextWeek = (value) =&gt; {  if (!value) return false;  const t = new Date(value);  return t &gt;= weekStart &amp;&amp; t &lt; weekEnd;};const found = await tools.searchCustomer({ city: \"\u0421\u0430\u043c\u0430\u0440\u0430\" });const customers = Array.isArray(found) ? found : (found &amp;&amp; found.items) || [];const rows = await Promise.all(  customers.map(async (hit) =&gt; {    const [card, deals, actions, meetings] = await Promise.all([      tools.getCustomer({ id: hit.id }),      tools.listDeals({ customerId: hit.id }),      tools.listNextActions({ customerId: hit.id }),      tools.listMeetings({ customerId: hit.id }),    ]);    const calls = actions.filter((action) =&gt; action.type === \"call\" &amp;&amp; inNextWeek(action.due));    const weekMeetings = meetings.filter((meeting) =&gt; inNextWeek(meeting.start));    return {      name: card.name,      meetings: weekMeetings.slice(0, 5),      calls: calls.slice(0, 5),      openDeals: deals.filter((deal) =&gt; deal.status !== \"closed\").length,    };  }),);return rows.filter((row) =&gt; row.meetings.length &gt; 0 || row.calls.length &gt; 0);<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0422\u0435 \u0436\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 tools \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u0447\u0442\u043e \u0438 \u0432 ReAct, \u043f\u043b\u044e\u0441 \u0440\u0430\u043c\u043a\u0430 \u00ab\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043d\u0435\u0434\u0435\u043b\u044f\u00bb \u0438 \u0444\u0438\u043b\u044c\u0442\u0440 \u0441\u043e\u0437\u0432\u043e\u043d\u043e\u0432 \u0438 \u0432\u0441\u0442\u0440\u0435\u0447. \u0412\u0441\u0451 \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430. \u041c\u043e\u0434\u0435\u043b\u044c \u0443\u0432\u0438\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u0437 <code>return<\/code>: \u0441 \u043a\u0435\u043c \u0432\u0441\u0442\u0440\u0435\u0447\u0430, \u0441 \u043a\u0435\u043c \u0437\u0432\u043e\u043d\u043e\u043a.<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0435\u0441\u0442\u044c \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u044f \u0442\u043e\u043a\u0435\u043d\u043e\u0432: \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0441 \u043f\u043e\u043b\u043d\u044b\u043c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u043c. \u0412 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043d\u0435 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0435 \u0441\u0434\u0435\u043b\u043a\u0438, \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u043f\u043e\u043b\u044f CRM \u0438 \u043f\u043e\u043b\u043d\u044b\u0435 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0438 \u0432\u0441\u0442\u0440\u0435\u0447. \u0426\u0438\u043a\u043b \u043f\u043e <code>customers<\/code> \u043f\u0440\u043e\u0439\u0434\u0451\u0442 \u043f\u043e \u0432\u0441\u0435\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c \u0441\u043f\u0438\u0441\u043a\u0430, \u0447\u0442\u043e \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0434\u043b\u044f \u0434\u043b\u0438\u043d\u043d\u044b\u0445 \u0446\u0435\u043f\u043e\u0447\u0435\u043a, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445 \u0441\u0430\u043c\u043e\u0439 LLM \u043f\u043e \u0434\u043b\u0438\u043d\u043d\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438. \u0418\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043a\u043e\u0434 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0431\u044b\u0442\u044c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u043e\u0432 \u043e\u043d \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043f\u043e\u0438\u0441\u043a\u0430, \u043e\u043d \u043f\u0440\u043e\u0439\u0434\u0435\u0442 \u043f\u043e \u043d\u0438\u043c \u0432\u0441\u0435\u043c.<\/p>\n<p>\u041d\u043e \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, LLM \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u043c\u043d\u0430\u044f. \u0421\u043a\u0440\u0438\u043f\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e \u0441\u0445\u0435\u043c\u0430\u043c\u0438. \u041e\u0448\u0438\u0431\u043a\u0430 \u0432 \u043d\u0451\u043c \u043b\u043e\u043c\u0430\u0435\u0442 \u0432\u0435\u0441\u044c \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u043e\u0439 \u0448\u0430\u0433, \u0430 \u043d\u0435 \u043e\u0434\u0438\u043d \u0432\u044b\u0437\u043e\u0432, \u043f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0435 \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0430\u043c\u0430 \u043f\u0440\u0430\u0432\u0438\u0442 \u043a\u043e\u0434 \u0438 \u043f\u0440\u043e\u0431\u0443\u0435\u0442 \u0435\u0449\u0435 \u0440\u0430\u0437. PTC \u043f\u043b\u043e\u0445\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u043e\u0433\u043e \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u0438\u043b\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043a API. \u041e\u043d \u043e\u043a\u0443\u043f\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043c, \u0433\u0434\u0435 \u043c\u0435\u0436\u0434\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438 \u0435\u0441\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0440\u0435\u0448\u0430\u0435\u0442 \u043b\u0443\u0447\u0448\u0435 \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0432\u0430\u0436\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0439 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 ptc \u0432 CodeInterpreterMiddleware, \u044d\u0442\u043e\u0442 \u043a\u043b\u0430\u0441\u0441 \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u0442 \u043d\u0430\u0448 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u043f\u0440\u043e\u043c\u043f\u0442, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0442\u0443\u0434\u0430 \u043e\u0431\u0449\u0435\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 ptc \u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u044b\u0445 \u0435\u043c\u0443 tools.<\/p>\n<pre><code>### API Reference \u2014 `tools` namespaceThe agent tools listed below are exposed on the global object at `globalThis.tools` (also reachable as `tools`). Each takes a single object argument and returns a Promise that resolves to the tool's native value: strings as strings, numbers as numbers, lists as arrays, dicts as objects, and `None` as `null`. You do NOT need to `JSON.parse` results \u2014 they are already typed.Invocation pattern: `await tools.&lt;name&gt;({ ... })`.- Use `await` to get tool results; combine with `Promise.all` for independent calls so they run concurrently.- If the task needs multiple tool calls, prefer one `eval` invocation that performs all of them rather than splitting the work across multiple `eval` calls \u2014 each round-trip costs a model turn.- Pipeline dependent calls within a single program. If a result from one tool is needed as input to a later tool, chain them in one program instead of returning the intermediate value to the model.- If a tool returns an ID or other value that can be passed directly into the next tool, trust it and chain the calls instead of stopping to double-check it.- To inspect an intermediate value, `console.log` it inside the same program; otherwise, fetch as much information as possible in one call.- Only split work across multiple `eval` invocations when you genuinely cannot determine what to do next without additional model reasoning or user input.Example shape \u2014 substitute real tool names:```typescriptconst users = await tools.findUsers({ name: \"Ada\" });const userId = users[0].id;const [city, normalized] = await Promise.all([  tools.cityForUser({ user_id: userId }),  tools.normalize({ name: \"Ada\" }),]);console.log({ city, normalized });``````typescript\/** \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0434\u0430\u0442\u0443 \u0438 \u0432\u0440\u0435\u043c\u044f \u0441 \u0447\u0430\u0441\u043e\u0432\u044b\u043c \u043f\u043e\u044f\u0441\u043e\u043c *\/tools.getCurrentDatetime(input: Record&lt;string, unknown&gt;): Promise&lt;unknown&gt;```<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0430\u0436\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u043e PTC &#8212; LangChain \u043d\u0430 \u0432\u044b\u0437\u043e\u0432\u044b tools \u0438\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c (Human-in-the-Loop). \u0422.\u0435. \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c <code>interruptOn<\/code> \u0441 \u043f\u0435\u0440\u0435\u0447\u043d\u0435\u043c tools, \u043d\u043e \u0442\u0430\u043a\u0438\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0432\u044b\u0437\u043e\u0432\u044b tools \u043f\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0443 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0430 \u0432\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 \u0438\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442 \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0442\u0430\u043a \u0447\u0442\u043e \u0432 PTC \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b (tool), \u0447\u0442\u043e \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u0435\u0441\u044c tool <code>eval<\/code>, \u043d\u043e \u0442\u043e\u0433\u0434\u0430 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0442\u044c \u0432\u0435\u0441\u044c \u0441\u043a\u0440\u0438\u043f\u0442, \u0447\u0442\u043e \u043e\u043d \u0445\u043e\u0447\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c.<\/p>\n<p>\u0422.\u0435. \u0432 Deep Agents \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442:<\/p>\n<ol>\n<li>\n<p>\u0412 PTC-allowlist \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0447\u0438\u0442\u0430\u044e\u0449\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b: \u043f\u043e\u0438\u0441\u043a, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0438, \u0441\u043f\u0438\u0441\u043e\u043a \u0444\u0430\u0439\u043b\u043e\u0432, \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0438\u0448\u0443\u0449\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 \u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438, \u0433\u0434\u0435 <code>interruptOn<\/code> \u0432\u0438\u0434\u0438\u0442 \u043a\u0430\u0436\u0434\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u0447\u0438\u0441\u043b\u043e PTC-\u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 <code>maxPtcCalls<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0432\u0441\u0451 \u0436\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430.<\/p>\n<\/li>\n<\/ol>\n<p>\u0414\u0440\u0443\u0433\u0438\u0435 harness \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442, \u0447\u0442\u043e \u043c\u043e\u0441\u0442 \u043c\u0435\u0436\u0434\u0443 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c \u0438 tools \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u043d\u0430\u0447\u0435. \u0412 DeepSeek Harness Code mode \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 <code>await tools.name()<\/code> \u0441\u043d\u043e\u0432\u0430 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 pipeline: \u043f\u0440\u0430\u0432\u0438\u043b\u0430, guard, approval, \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435, \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u0427\u0435\u043b\u043e\u0432\u0435\u043a \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432. \u0423 Anthropic Programmatic Tool Calling \u043a\u043e\u0434 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c tool call, \u0430 \u043a\u043b\u0438\u0435\u043d\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 <code>tool_use<\/code> \u0438 \u0441\u0430\u043c \u0440\u0435\u0448\u0430\u0435\u0442, \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u043b\u0438. Cloudflare Code Mode \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 <code>requiresApproval<\/code> \u043d\u0430 \u043c\u0435\u0442\u043e\u0434\u0430\u0445 connector \u0438 pause\/approve\/resume \u0432 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435. \u0412\u0441\u0435 \u0442\u0440\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442 \u0432\u0430\u0436\u043d\u0443\u044e \u0438\u0434\u0435\u044e: \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043c\u043e\u0434\u0435\u043b\u0438, \u043d\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0435 \u0438\u0441\u0447\u0435\u0437\u0430\u044e\u0442 \u0438\u0437 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0438 \u0430\u0443\u0434\u0438\u0442\u0430. \u041e\u0447\u0435\u043d\u044c \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e LangChain \u043f\u0435\u0440\u0435\u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c.<\/p>\n<p>\u041d\u043e \u0438 \u044d\u0442\u043e \u0435\u0449\u0435 \u043d\u0435 \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 JS-\u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 \u0432 LangChain. \u0421\u043a\u0440\u0438\u043f\u0442\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0433\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0441\u0443\u0431\u0430\u0433\u0435\u043d\u0442\u0430\u043c\u0438, \u0432\u043f\u0440\u043e\u0447\u0435\u043c, \u044d\u0442\u043e \u0443\u0436\u0435 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0434\u0440\u0443\u0433\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u2026 \u0438 \u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0441\u0432\u0435\u0442\u0438\u0442\u044c \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u2026<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1071944\/\">https:\/\/habr.com\/ru\/articles\/1071944\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u042f\u0437\u044b\u043a\u043e\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c (LLM) \u0443\u043c\u0435\u0435\u0442 \u043e\u0434\u043d\u043e: \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442. \u0417\u0430\u0434\u0430\u043b\u0438 \u0432\u043e\u043f\u0440\u043e\u0441 &#8212; \u043e\u043d\u0430 \u0434\u043e\u043f\u0438\u0441\u0430\u043b\u0430 \u043e\u0442\u0432\u0435\u0442. AI-\u0430\u0433\u0435\u043d\u0442 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0432\u043e\u043a\u0440\u0443\u0433 \u043c\u043e\u0434\u0435\u043b\u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442 \u043e\u0431\u0432\u044f\u0437\u043a\u0443 (harness) &#8212; \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u043e\u0441\u0438\u0442 \u0447\u0442\u043e-\u0442\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c, \u0430 harness \u0431\u0435\u0440\u0451\u0442 \u0432\u044b\u0437\u043e\u0432 \u043d\u0430 \u0441\u0435\u0431\u044f. \u041c\u043e\u0436\u0435\u0442 \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0443 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430, \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u0441\u0435\u0447\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0437\u0430\u0449\u0438\u0442\u043d\u044b\u043c\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438 (guardrails).\u041c\u043e\u0449\u043d\u043e\u0441\u0442\u044c \u044d\u0442\u043e\u0439 \u043e\u0431\u0432\u044f\u0437\u043a\u0438 \u0447\u0430\u0441\u0442\u043e \u0432\u0430\u0436\u043d\u0435\u0435, \u0447\u0435\u043c \u043a\u0430\u0436\u0435\u0442\u0441\u044f. \u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u043f\u0430\u043c\u044f\u0442\u044c, \u0446\u0438\u043a\u043b \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0438 \u043d\u0430\u0431\u043e\u0440 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 (tools) \u043c\u0435\u043d\u044f\u044e\u0442 \u0438 \u0442\u043e, \u0447\u0442\u043e \u0430\u0433\u0435\u043d\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0443\u043c\u0435\u0435\u0442, \u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430. \u0415\u0441\u0442\u044c \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f, \u0433\u0434\u0435 \u043d\u0430 \u043e\u0434\u043d\u0438\u0445 \u0438 \u0442\u0435\u0445 \u0436\u0435 \u043c\u043e\u0434\u0435\u043b\u044f\u0445 \u0441\u043c\u0435\u043d\u0430 harness \u0432\u0435\u0434\u0435\u0442 \u043a \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430. Cursor \u0438\u043b\u0438 OpenRouter \u0438\u043d\u043e\u0433\u0434\u0430 \u043e\u0431\u0445\u043e\u0434\u044f\u0442 \u0440\u043e\u0434\u043d\u043e\u0439 harness Anthropic \u043d\u0430 \u0435\u0433\u043e \u0436\u0435 \u043c\u043e\u0434\u0435\u043b\u044f\u0445. \u041e\u0442\u0441\u044e\u0434\u0430 \u0436\u0435 \u0440\u0430\u0437\u0440\u044b\u0432 \u043c\u0435\u0436\u0434\u0443 \u0446\u0435\u043d\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438 \u0438 \u0446\u0435\u043d\u043e\u0439 API.\u0412\u0430\u0436\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u0430 &#8212; \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0435\u043c\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b. \u041e\u043d\u0438 \u0436\u0438\u0432\u0443\u0442 \u0440\u044f\u0434\u043e\u043c \u0441 \u0430\u0433\u0435\u043d\u0442\u043e\u043c \u0438\u043b\u0438 \u043f\u0440\u0438\u0435\u0437\u0436\u0430\u044e\u0442 \u0441 MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u041d\u0443\u0436\u043d\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 &#8212; \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442. \u041f\u043e\u0438\u0441\u043a \u043f\u043e CRM &#8212; search_customer, \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u043f\u0438\u0441\u044c\u043c\u0430 &#8212; send_email. MCP \u0441\u0434\u0435\u043b\u0430\u043b \u0442\u0430\u043a\u0443\u044e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c\u043e\u0439, \u0442.\u043a. \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u0430 \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u0430\u0433\u0435\u043d\u0442\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0435\u0433\u043e, \u043d\u0435 \u0432\u043b\u0435\u0437\u0430\u044f \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0432\u0441\u0435 \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u044b\u0437\u043e\u0432\u043e\u0432 tools \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435, \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 tools \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0434\u043b\u0438\u043d\u043d\u0435\u0435, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e &#8212; \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 tools &#8212; \u044d\u0442\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0438\u0437 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438 \u043e\u0442\u0432\u0435\u0442\u0430 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043c\u043e\u0434\u0435\u043b\u0438, \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043d\u0430 \u0432\u0441\u0435 \u044d\u0442\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u0438 \u0440\u0435\u0448\u0430\u0435\u0442, \u0447\u0442\u043e \u0441 \u044d\u0442\u0438\u043c \u0434\u0435\u043b\u0430\u0442\u044c, \u0438 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u043c\u0435\u0440\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c, \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e IT, \u0447\u0430\u0441\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u0430\u044f, \u0438 \u0441 \u043d\u0435\u0439 \u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0441\u044f \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u043b\u0443\u0447\u0448\u0435, \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0438 \u0434\u0435\u0448\u0435\u0432\u043b\u0435.\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 &#8212; \u0434\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439 \u0435\u0439 \u043a\u043e\u0434, \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0449\u0438\u0439 \u0447\u0430\u0441\u0442\u044c \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u0439, \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0435\u0433\u043e. \u0412 \u043e\u0431\u0449\u0435\u043c \u0432\u0438\u0434\u0435 \u0434\u043b\u044f \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u044d\u0442\u043e \u0437\u0432\u0443\u0447\u0438\u0442 \u0441\u0442\u0440\u0430\u0448\u043d\u043e\u0432\u0430\u0442\u043e, \u0432\u0435\u0434\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u0432\u0430\u043c \u0431\u044b \u043e\u0447\u0435\u043d\u044c \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435\/\u0441\u0435\u0440\u0432\u0435\u0440\u0435: \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0432\u0430\u0436\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0438 \u0442.\u0434. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0437-\u0437\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 \u043c\u043e\u0434\u0435\u043b\u0438, \u0432\u043e\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0441\u044c\u0431\u044b (\u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0441\u043a\u0430\u0437\u0430\u043b \u0443\u0434\u0430\u043b\u0438 \u044d\u0442\u043e, \u043d\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u043d\u044f\u043b\u0430 \u043f\u043e-\u0441\u0432\u043e\u0435\u043c\u0443, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u044d\u0442\u043e), \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 prompt injection \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u043b\u0438 \u0438\u0437 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0434\u0435\u043b\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u0434\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043d\u0430 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0443 (sandbox). \u0412 LangChain \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b &#8212; \u043a\u043e\u0434 \u0443\u0435\u0437\u0436\u0430\u0435\u0442 \u043d\u0430 \u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u044b, \u0433\u0434\u0435 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f. \u0415\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u043d\u0435\u0441\u0442\u0438 sandbox \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 Docker-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, \u0433\u0434\u0435 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0443 \u0438\u043b\u0438 \u0445\u043e\u0441\u0442\u0443 \u0432\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u043a\u0430\u043a \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u0430\u043c. \u0415\u0441\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u00ab\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435\u00bb \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u044b \u043d\u0430 \u0432\u0430\u0448\u0435\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 &#8212; \u043e\u043d\u0438 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0442 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0443 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430 \u043d\u0430 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043d\u043e \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043d\u0438\u0435 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438. \u041f\u043e\u0441\u043b\u0435 \u0434\u0435\u0441\u044f\u0442\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043e\u0434\u0438\u043d\u043d\u0430\u0434\u0446\u0430\u0442\u043e\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0436\u043c\u0443\u0442 \u043d\u0435 \u0433\u043b\u044f\u0434\u044f \u0438\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0430\u0432\u0442\u043e\u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435.\u0411\u043e\u043b\u0435\u0435 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 &#8212; \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0441 \u0437\u0430\u0434\u0430\u0447 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043b\u043e\u0433\u0438\u043a\u0438 LLM \u0438 \u0432\u0437\u044f\u0442\u044c \u0434\u043b\u044f \u043d\u0438\u0445 \u0441\u0430\u043c\u0443\u044e \u043b\u0435\u0433\u043a\u0443\u044e, \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u0443\u044e \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0443 &#8212; JavaScript-\u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u044f \u0440\u0438\u0441\u043a\u0438. \u041c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0438\u0439 \u043a\u0443\u0441\u043e\u043a \u043b\u043e\u0433\u0438\u043a\u0438, \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 (\u0441\u0430\u043c\u0438 \u0432\u044b\u0437\u043e\u0432\u044b \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0434\u0435\u043b\u0430\u0435\u0442 harness, \u043d\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u043e\u0442\u0432\u0435\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0441\u043a\u043b\u0435\u0438\u0442\u044c) \u0438 \u0437\u0430\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u0434\u043b\u044f \u0441\u0443\u0431\u0430\u0433\u0435\u043d\u0442\u043e\u0432.\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0443 \u043a\u0430\u043a \u0442\u0430\u043a\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043c\u043e\u0433\u0430\u0442\u044c. \u041d\u0430\u0447\u043d\u0443 \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u0443 \u0441\u0435\u0431\u044f \u0432 LM Studio, \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u0439\u0434\u0443 \u043a \u0431\u043e\u043b\u0435\u0435 \u043e\u0431\u0449\u0435\u043c\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 \u043d\u0430 LangChain, \u0433\u0434\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 JS-\u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0443\u0436\u0435 \u043d\u0435 \u0442\u0430\u043a\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u043c, \u0430 \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u0447\u0430\u0441\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0438 \u0441 LLM \u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0435\u0439 \u0444\u043e\u043a\u0443\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e, \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u0443\u044f \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443 \u0441\u043a\u0440\u0438\u043f\u0442\u0443.\u0417\u0430\u0447\u0435\u043c \u0430\u0433\u0435\u043d\u0442\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442\u044b &#8212; \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430 LM Studio\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 LM Studio &#8212; \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438\u0437 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0438 \u0447\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u0441 \u043d\u0438\u043c\u0438. \u0415\u0441\u0442\u044c \u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438, \u043d\u043e LM Studio &#8212; \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 &#8212; \u0432\u0441\u0435 \u0432 \u043e\u0434\u043d\u043e\u043c UI-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435: \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0441 \u043e\u0446\u0435\u043d\u043a\u043e\u0439, \u0447\u0442\u043e \u0432\u0430\u0448 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0442\u044f\u043d\u0435\u0442, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0432 \u0434\u0432\u0430 \u043a\u043b\u0438\u043a\u0430 \u043c\u044b\u0448\u043a\u043e\u0439, \u0441\u0430\u043c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043d\u0443\u0436\u043d\u044b\u0435 \u0434\u0432\u0438\u0436\u043a\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0447\u0430\u0442-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c MCP, \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0447\u0435\u0440\u0435\u0437 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0442.\u0434.\u0411\u0435\u0440\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u0447\u0430\u0442, \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043c\u043e\u0434\u0435\u043b\u044c \u0438 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c \u043a\u0430\u043a\u043e\u0435 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0447\u0438\u0441\u043b\u043e?LM Studio: \u0431\u0435\u0437 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0434\u0430\u0442\u043e\u0439 \u0438\u0437 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f\u041c\u043e\u0434\u0435\u043b\u044c \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442, \u0447\u0442\u043e \u0441\u0435\u0433\u043e\u0434\u043d\u044f 24 \u0438\u044e\u043d\u044f 2026 \u0433\u043e\u0434\u0430, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a. \u042d\u0442\u043e \u0434\u0430\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0435\u0435 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0438. \u0423 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e \u0434\u0430\u0442\u0435, \u0437\u0430\u0441\u0442\u0440\u044f\u0432\u0448\u0435\u0435 \u043f\u0440\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438, \u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0435\u0441\u0442\u044c tools, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0435\u0440\u0435\u0434 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u043e \u0434\u0430\u0442\u0435 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442, \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0434\u0435\u043b\u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0434\u0430\u0442\u043e\u0439, \u0430 \u043d\u0435 \u0437\u0430\u0441\u0442\u0440\u044f\u0432\u0448\u0435\u0439 \u0434\u0430\u0442\u043e\u0439 \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0435\u0442 \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e tool, \u0442\u0430\u043a \u0447\u0442\u043e \u0448\u0430\u043d\u0441\u043e\u0432 \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0443 \u043d\u0435\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e.\u0412 LM Studio \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u0435\u0441\u0442\u044c plugin &#8212; js-code-sandbox, \u0441 \u043e\u0434\u043d\u0438\u043c-\u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c &#8212; run_javascript, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043c\u043e\u0434\u0435\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 JavaScript\/TypeScript-\u043a\u043e\u0434 \u0432 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c in-process sandbox \u0431\u0435\u0437 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0441\u0435\u0442\u0438. \u0412\u043a\u043b\u044e\u0447\u0438\u043c \u0435\u0433\u043e \u0432 \u043f\u0440\u0430\u0432\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u043c \u043d\u0430\u0448 \u0437\u0430\u043f\u0440\u043e\u0441 \u043a\u0430\u043a\u043e\u0435 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0447\u0438\u0441\u043b\u043e?. \u0412 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043f\u0440\u0438 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u0438 \u043c\u043e\u0434\u0435\u043b\u044c \u0440\u0435\u0448\u0438\u043b\u0430, \u0447\u0442\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0435\u0439 \u043d\u0430\u0434\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0435\u0433\u043e, \u0430 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0442\u0432\u0435\u0442\u0438\u043b\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e:LM Studio: \u0441 run_javascript \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c (tool) \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0434\u0430\u0442\u043e\u0439\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u0430, \u043d\u043e \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0434\u0435\u043b\u044c \u0443\u0437\u043d\u0430\u043b\u0430 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0434\u0430\u0442\u0443, \u0435\u0439 \u043d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043a\u0442\u043e-\u0442\u043e \u0435\u0439 \u0435\u0435 \u043d\u0430\u0437\u0432\u0430\u043b. \u041c\u044b \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0438\u0441\u0430\u043b\u0438 \u0441\u0430\u043c\u0438, \u043c\u044b \u0434\u0430\u0436\u0435 \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 prompt, \u043a\u0430\u043a \u0432\u043e\u043e\u0431\u0449\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u0434\u0430\u0442\u0443. \u041c\u043e\u0434\u0435\u043b\u044c \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u043e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430 javascript, \u0438 \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u041c\u044b \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u0441\u0430\u043c\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c tool &#8212; current_date, \u044d\u0442\u043e \u0431\u044b \u0434\u0430\u043b\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442, \u043d\u043e \u0442\u0443\u0442 \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0430\u043c\u0430 \u0434\u043e \u0432\u0441\u0435\u0433\u043e \u0434\u043e\u0434\u0443\u043c\u0430\u043b\u0430\u0441\u044c.\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u0441\u043b\u043e\u0436\u043d\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0441\u043f\u0440\u0430\u0432\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u0440\u0435\u0442\u0438\u0439 \u0447\u0435\u0442\u0432\u0435\u0440\u0433 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u043d\u043e\u043b\u0443\u043d\u0438\u044f. \u0421\u043f\u0440\u043e\u0441\u0438\u043c \u043d\u0430\u0448\u0443 \u043c\u043e\u0434\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434: \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0442\u0440\u0435\u0442\u0438\u0439 \u0447\u0435\u0442\u0432\u0435\u0440\u0433 \u043f\u043e\u0441\u043b\u0435 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u043b\u0443\u043d\u0438\u044f.\u041c\u043e\u0434\u0435\u043b\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0437\u0430\u0434\u0443\u043c\u0430\u043b\u0430\u0441\u044c, \u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0430 \u043a\u043e\u0434 \u0434\u043b\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0434\u0430\u0442\u044b, \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u043b\u0443\u043d\u0438\u044f, \u0432\u044b\u0432\u043e\u0434\u0430 \u0447\u0435\u0442\u0432\u0435\u0440\u0433\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0439 \u0434\u0430\u0442\u044b \u0438 \u0432\u0435\u0440\u043d\u0443\u043b\u0430\u0441\u044c \u0441 \u043e\u0442\u0432\u0435\u0442\u043e\u043c.LM Studio: \u0441 run_javascript \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c (tool) \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0442\u0440\u0435\u0442\u0438\u0439 \u0447\u0435\u0442\u0432\u0435\u0440\u0433 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u043d\u043e\u043b\u0443\u043d\u0438\u044f\u0414\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0430\u043c\u0430 \u0440\u0435\u0448\u0438\u043b\u0430, \u0447\u0442\u043e \u0435\u0439 \u043d\u0430\u0434\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0441\u043a\u0440\u0438\u043f\u0442.\/\/ Get current dateconst now = new Date();console.log(&#171;\u0421\u0435\u0439\u0447\u0430\u0441 (UTC):&#187;, now.toISOString());\/\/ &#8212; Find next full moon using synodic month calculation &#8212;const synodic = 29.530588853; \/\/ daysconst newMoonEpochMs = Date.UTC(2000, 0, 6, 18, 14); \/\/ known new moonconst startMs = now.getTime();const startDays = startMs \/ 86400000;const epochDays = newMoonEpochMs \/ 86400000;\/\/ full moons occur at (i + 0.5) * synodic after epochlet i = Math.floor((startDays &#8212; epochDays) \/ synodic + 0.5);while ((epochDays + (i + 0.5) * synodic) * 86400000 &lt;= startMs) i++;const fullMoonMs = (epochDays + (i + 0.5) * synodic) * 86400000;const fmUtc = new Date(fullMoonMs);console.log(&#171;\u0411\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0435 \u043f\u043e\u043b\u043d\u043e\u043b\u0443\u043d\u0438\u0435 (UTC):&#187;, fmUtc.toISOString());\/\/ Full moon date in Moscow time (UTC+3)const fmMoscow = new Date(fullMoonMs + 3 * 3600000);const fmDateStr = fmMoscow.toISOString().slice(0, 10);console.log(&#171;\u0414\u0430\u0442\u0430 \u043f\u043e\u043b\u043d\u043e\u043b\u0443\u043d\u0438\u044f (\u041c\u0421\u041a):&#187;, fmDateStr);\/\/ &#8212; Third Thursday strictly after the full moon date &#8212;const fmDay = new Date(Date.parse(fmDateStr + &#171;T00:00:00Z&#187;));const thursdays = [];let d = new Date(fmDay.getTime() + 86400000); \/\/ day after full moonwhile (thursdays.length &lt; 3) {  if (d.getUTCDay() === 4) thursdays.push(d.toISOString().slice(0, 10));  d = new Date(d.getTime() + 86400000);}console.log(&#171;\u0427\u0435\u0442\u0432\u0435\u0440\u0433\u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u043d\u043e\u043b\u0443\u043d\u0438\u044f:&#187;, thursdays);console.log(&#171;\u0422\u0440\u0435\u0442\u0438\u0439 \u0447\u0435\u0442\u0432\u0435\u0440\u0433:&#187;, thursdays[2]);\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438, \u043e\u043d\u0430 \u043e\u0442\u0432\u0435\u0442\u0438\u043b\u0430, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043a \u044d\u0442\u043e\u043c\u0443 \u0441\u043a\u0440\u0438\u043f\u0442\u0443, \u0442.\u043a. \u044d\u0442\u043e \u043b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0430\u0446\u0438\u044f, \u0430 \u043d\u0435 \u0430\u0441\u0442\u0440\u043e\u043d\u043e\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0430\u0441\u0447\u0435\u0442 \u0444\u0430\u0437 \u041b\u0443\u043d\u044b, \u043d\u043e \u0441 \u0434\u0430\u0442\u043e\u0439 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u043b\u0430\u0441\u044c, \u0447\u0442\u043e \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u044b\u0439 \u0443\u0441\u043f\u0435\u0445.\u0415\u0441\u043b\u0438 \u0431\u044b \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u043b\u0443\u043d\u0438\u0435 \u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0438 \u0441\u0430\u043c\u0430, \u0442\u043e \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u043e\u0439 \u0446\u0435\u043f\u043e\u0447\u043a\u043e\u0439 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0439 \u0441 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u0438\u0437 \u044d\u0442\u0430\u043f\u043e\u0432 &#8212; \u0441\u043a\u0440\u0438\u043f\u0442 \u044d\u0442\u043e \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u0435\u0435. \u0415\u0441\u0442\u044c \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u043f\u043b\u0430\u0441\u0442 \u0437\u0430\u0434\u0430\u0447, \u0433\u0434\u0435 \u0441\u043a\u0440\u0438\u043f\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043b\u0443\u0447\u0448\u0435 &#8212; \u044d\u0442\u043e \u0431\u0430\u0437\u043e\u0432\u0430\u044f \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0430, \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u0434\u0430\u0442\u0430\u043c\u0438, \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0442\u0435\u043a\u0441\u0442\u0430 \u0438\u043b\u0438 JSON (\u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0433\u043e tool), \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u0430\u043c\u0438, \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0430\u043c\u0438 \u0438 \u0442.\u0434.\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438\u043b\u0438 \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0433\u043e tool \u0432 \u0447\u0430\u0442 \u0432\u0435\u0440\u043d\u0443\u043b\u0438\u0441\u044c \u0448\u0435\u0441\u0442\u044c \u0441\u0443\u043c\u043c \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c\u0438 \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u043d\u0430\u0434\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0432 \u043e\u0442\u0447\u0435\u0442\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439, \u043e\u0431\u0449\u0443\u044e \u0441\u0443\u043c\u043c\u0443, \u0441\u0440\u0435\u0434\u043d\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438 95-\u0439 \u043f\u0435\u0440\u0446\u0435\u043d\u0442\u0438\u043b\u044c. \u041c\u043e\u0434\u0435\u043b\u044c \u0432\u0441\u0435 \u0440\u0430\u0441\u0447\u0435\u0442\u044b \u043c\u043e\u0436\u0435\u0442 \u0441\u0432\u0435\u0441\u0442\u0438 \u043a \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u043c\u0443 \u0441\u043a\u0440\u0438\u043f\u0442\u0443, \u0438 \u044d\u0442\u043e \u0442\u043e\u0447\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u0434\u043e\u043b\u0433\u0438\u0435 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u043e\u0434\u0435\u043b\u0438, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u0441\u043a\u0440\u0438\u043f\u0442 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0434\u0435\u0436\u043d\u0435\u0435:const amounts = [1200, 3500, 700, 8100, 940, 1250];const sorted = [&#8230;amounts].sort((a, b) =&gt; a &#8212; b);const total = amounts.reduce((sum, value) =&gt; sum + value, 0);const p95 = sorted[Math.ceil(sorted.length * 0.95) &#8212; 1];console.log({  count: amounts.length,  total,  average: total \/ amounts.length,  p95,});\u041d\u0430\u043c \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c tools calculator, sum_payments \u0438 percentile. \u041e\u0434\u0438\u043d \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u0430\u043a\u0438\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c\u0438 \u0437\u0430 \u0441\u0447\u0435\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e tool \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u0438, \u0430 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 javascript \u043c\u043e\u0434\u0435\u043b\u044c \u0438 \u0442\u0430\u043a \u0437\u043d\u0430\u0435\u0442. \u0421\u043a\u0440\u0438\u043f\u0442 \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u0435\u043d \u0437\u0430\u0432\u0438\u0441\u043d\u0443\u0442\u044c \u0438\u043b\u0438 \u0441\u044a\u0435\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0443\u0436\u043d\u044b \u0442\u0430\u0439\u043c\u0430\u0443\u0442 \u0438 \u043b\u0438\u043c\u0438\u0442 \u043f\u0430\u043c\u044f\u0442\u0438. \u041d\u043e \u0442\u0430\u043a\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0435\u0442 ~\/.ssh, \u043d\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442 \u0430\u0440\u0445\u0438\u0432 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u043d\u0435 \u0443\u0434\u0430\u043b\u0438\u0442 \u0432\u0430\u0436\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435. \u0415\u0441\u043b\u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u043e js-code-sandbox, \u0442\u043e \u043e\u043d \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043e\u0434\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0447\u0430\u0442. \u0422.\u0435. \u0441\u043a\u0440\u0438\u043f\u0442 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0432 \u044d\u0442\u043e\u0439 \u043f\u0430\u043f\u043a\u0435, \u0438 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0435\u0433\u043e \u043f\u043e\u0437\u0436\u0435, \u043d\u043e \u0432\u043e\u0442 \u0434\u0440\u0443\u0433\u043e\u0439 \u0447\u0430\u0442 \u0431\u0443\u0434\u0435\u0442 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u0435\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u043e\u0438 \u0444\u0430\u0439\u043b\u044b.\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 JavaScript \u0432 LangChain\u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c, \u043a \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0441\u043e\u0437\u0434\u0430\u044e\u0449\u0438\u0445 \u0441\u0432\u043e\u0438\u0445&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-491395","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/491395","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=491395"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/491395\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=491395"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=491395"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=491395"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}