{"id":392959,"date":"2024-06-29T10:42:57","date_gmt":"2024-06-29T10:42:57","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=392959"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=392959","title":{"rendered":"<span>\u0418\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0425\u0443\u0434\u043e\u0436\u043d\u0438\u043a \u2014 Google \u043e\u0442 \u043c\u0438\u0440\u0430 Text-To-Img<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u043c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0414\u043c\u0438\u0442\u0440\u0438\u0439 \u041a\u0430\u0440\u043b\u043e\u0432\u0441\u043a\u0438\u0439 \u0438 \u044f \u043b\u044e\u0431\u043b\u044e \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0448\u0435\u0434\u0435\u0432\u0440\u044b, \u043d\u043e\u00a0\u0443\u00a0\u043c\u0435\u043d\u044f \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u00a0\u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0442\u0435\u0440\u043f\u0435\u043d\u0438\u044f \u0434\u043e\u0432\u0435\u0441\u0442\u0438 \u0445\u043e\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437\u00a0\u043d\u0438\u0445 \u0434\u043e\u00a0\u043a\u043e\u043d\u0446\u0430. <\/p>\n<p>\u0420\u0430\u043d\u0435\u0435 \u044f \u0443\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u0432\u0430\u043c \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u043e\u0433\u043e <a href=\"https:\/\/page.hyoo.ru\/#!=o9jnhf_7v21c4\" rel=\"noopener noreferrer nofollow\">\u0443\u0431\u0438\u0439\u0446\u0443 \u0413\u0443\u0433\u043b \u041f\u043e\u0438\u0441\u043a\u0430<\/a>. \u041f\u043e\u043b\u044c\u0437\u0443\u044e\u0441\u044c \u0438\u043c \u0434\u043e\u00a0\u0441\u0438\u0445 \u043f\u043e\u0440 \u0438 \u0434\u043e\u0432\u043e\u043b\u0435\u043d \u0447\u0438\u0441\u0442\u043e\u0442\u043e\u0439 \u0432\u044b\u0434\u0430\u0447\u0438. \u0422\u0435\u043f\u0435\u0440\u044c\u00a0\u0436\u0435 \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0443\u0431\u0438\u0439\u0446\u0443 Artstation \u0434\u043b\u044f\u00a0\u0442\u0432\u043e\u0440\u0447\u0435\u0441\u043a\u0438\u0445\u00a0\u043b\u0438\u0447\u043d\u043e\u0441\u0442\u0435\u0439, \u0443\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0442\u0435\u0440\u043f\u0435\u043d\u0438\u044f \u0445\u0432\u0430\u0442\u0430\u0435\u0442\u00a0\u043b\u0438\u0448\u044c \u043d\u0430\u00a0\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0438\u043d\u0443\u0442, \u0437\u0430\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0434\u043e \u0443\u0441\u043f\u0435\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0443\u044e \u043a\u0440\u0430\u0441\u043e\u0442\u0443. \u0418 \u0432\u00a0\u044d\u0442\u043e\u043c \u043d\u0430\u043c \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0435 \u0441\u0435\u0442\u0438. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/7e0\/96f\/e13\/7e096fe134ed3ab310eaedbbb91ae160.jpeg\" alt=\"$hyoo_artist_app $mol_pagetitle @ \\Artificial Artist\" title=\"$hyoo_artist_app $mol_pagetitle @ \\Artificial Artist\" width=\"791\" height=\"927\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7e0\/96f\/e13\/7e096fe134ed3ab310eaedbbb91ae160.jpeg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>$hyoo_artist_app $mol_pagetitle @ \\Artificial Artist<\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432\u0430\u0441 \u0436\u0434\u0451\u0442 \u0440\u0435\u0432\u0435\u0440\u0441\u2011\u0438\u043d\u0436\u0435\u043d\u0438\u0440\u0438\u043d\u0433 HuggingFace API \u0434\u043b\u044f\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 Kandinsky, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430 100\u00a0\u044f\u0437\u044b\u043a\u0430\u0445 \u043c\u0438\u0440\u0430 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043c\u043e\u0434\u0435\u043b\u0438 Small100, \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043b\u0435\u043d\u0442\u044b \u0432\u00a0\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430 \u043d\u0430 $mol \u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u0442\u0432\u0430 \u0418\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0425\u0443\u0434\u043e\u0436\u043d\u0438\u043a\u0430. <\/p>\n<h2>Server API <\/h2>\n<p>\u0418\u0442\u0430\u043a, \u043f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u0438\u0434\u0451\u043c \u043d\u0430 <a href=\"https:\/\/github.com\/\" rel=\"noopener noreferrer nofollow\"><s>github.com<\/s><\/a> <a href=\"https:\/\/huggingface.co\" rel=\"noopener noreferrer nofollow\">huggingface.co<\/a>. \u0422\u0430\u043c \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 <a href=\"https:\/\/huggingface.co\/models\" rel=\"noopener noreferrer nofollow\">\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0442\u0435\u043d \u0442\u044b\u0441\u044f\u0447 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0432\u043a\u0443\u0441<\/a>. \u041d\u0430\u0441 \u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u0435\u0436\u0430\u044f <a href=\"https:\/\/huggingface.co\/ai-forever\/Kandinsky_2.1\" rel=\"noopener noreferrer nofollow\">ai-forever\/Kandinsky_2.1<\/a>: <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/a6e\/482\/d3e\/a6e482d3e9ed1e90309342ddd3b2d3b4.jpeg\" alt=\"\u041e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043d\u043e \u043d\u0438\u0444\u0438\u0433\u0430 \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e\" title=\"\u041e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043d\u043e \u043d\u0438\u0444\u0438\u0433\u0430 \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e\" width=\"1000\" height=\"541\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a6e\/482\/d3e\/a6e482d3e9ed1e90309342ddd3b2d3b4.jpeg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>\u041e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043d\u043e \u043d\u0438\u0444\u0438\u0433\u0430 \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043c\u044b \u0435\u0451, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0435\u00a0\u0431\u0443\u0434\u0435\u043c, \u0430\u00a0\u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u00a0\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0438 \u0432\u00a0\u043e\u0431\u043b\u0430\u043a\u0435. \u041a\u00a0\u0441\u0447\u0430\u0441\u0442\u044c\u044e, <a href=\"https:\/\/huggingface.co\/spaces\/ai-forever\/Kandinsky2.1\" rel=\"noopener noreferrer nofollow\">\u0440\u044f\u0434\u043e\u043c<\/a> \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 <em>\u0441\u043f\u0435\u0439\u0441<\/em>, \u043d\u0430\u00a0\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c\u0441\u044f \u0441\u00a0\u044d\u0442\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u044e: <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/d8f\/0ff\/84a\/d8f0ff84acb06fcd36d2aad534379574.jpeg\" alt=\"\u0416\u0435\u043b\u0435\u0437\u043d\u0430\u044f \u043b\u0435\u0434\u0438\" title=\"\u0416\u0435\u043b\u0435\u0437\u043d\u0430\u044f \u043b\u0435\u0434\u0438\" width=\"698\" height=\"794\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d8f\/0ff\/84a\/d8f0ff84acb06fcd36d2aad534379574.jpeg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>\u0416\u0435\u043b\u0435\u0437\u043d\u0430\u044f \u043b\u0435\u0434\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u0415\u0449\u0451 \u043e\u0434\u043d\u043e \u0441\u0447\u0430\u0441\u0442\u044c\u0435\u00a0\u2014 \u044d\u0442\u043e\u0442 \u0441\u043f\u0435\u0439\u0441 \u0433\u043e\u043d\u044f\u0435\u0442 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0438 \u043d\u0430\u00a0GPU. \u0415\u0433\u043e \u043c\u043e\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e\u00a0\u0431\u044b \u0444\u043e\u0440\u043a\u043d\u0443\u0442\u044c \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043e\u0434\u00a0\u0441\u0435\u0431\u044f, \u043a\u0430\u043a\u00a0\u044f \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/huggingface.co\/spaces\/jin-nin\/artist\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a>, \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0432 \u0432\u043c\u0435\u0441\u0442\u0435 3\u00a0\u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0438: <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/195\/932\/24a\/19593224a0628d6ac18079612d1b7259.jpeg\" alt=\"\u0414\u0432\u0430 \u0433\u0438\u043d\u043e\u0438\u0434\u0430 \u0438 \u041b\u0413\u0411\u0422-\u043b\u043e\u0448\u0430\u0434\u043a\u0430\" title=\"\u0414\u0432\u0430 \u0433\u0438\u043d\u043e\u0438\u0434\u0430 \u0438 \u041b\u0413\u0411\u0422-\u043b\u043e\u0448\u0430\u0434\u043a\u0430\" width=\"1279\" height=\"731\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/195\/932\/24a\/19593224a0628d6ac18079612d1b7259.jpeg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>\u0414\u0432\u0430 \u0433\u0438\u043d\u043e\u0438\u0434\u0430 \u0438 \u041b\u0413\u0411\u0422-\u043b\u043e\u0448\u0430\u0434\u043a\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u043e\u00a0\u0442\u043e\u0433\u0434\u0430 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430\u00a0CPU, \u0447\u0442\u043e\u00a0\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0438, \u043a\u0430\u043a\u00a0\u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430, \u043c\u0435\u043d\u0435\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e. \u0422\u0430\u043a \u0447\u0442\u043e\u00a0\u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e, \u0447\u0442\u043e\u00a0\u0435\u0441\u0442\u044c. \u0411\u043b\u0430\u0433\u043e, \u0441\u043f\u0435\u0439\u0441 \u0441\u00a0Kandinsky\u00a0\u2014 \u043d\u0435\u00a0\u0442\u0430\u043a\u043e\u0439 \u0437\u0432\u0435\u0437\u0434\u043e\u043b\u0451\u0442, \u043a\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/huggingface.co\/spaces\/ArtGAN\/Stable-Diffusion-ControlNet-WebUI\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e\u0442<\/a>: <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c91\/061\/b1d\/c91061b1ddeda7fc9018708cac0b5b8f.png\" alt=\"\u0417\u0432\u0435\u0437\u0434\u043e\u043b\u0451\u0442 \u043a\u043b\u0430\u0441\u0441\u0430 &quot;\u0421\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0414\u0438\u0444\u0444\u0443\u0437\u043e\u0440&quot;\" title=\"\u0417\u0432\u0435\u0437\u0434\u043e\u043b\u0451\u0442 \u043a\u043b\u0430\u0441\u0441\u0430 &quot;\u0421\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0414\u0438\u0444\u0444\u0443\u0437\u043e\u0440&quot;\" width=\"1440\" height=\"1059\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c91\/061\/b1d\/c91061b1ddeda7fc9018708cac0b5b8f.png\"\/><\/p>\n<div><figcaption>\u0417\u0432\u0435\u0437\u0434\u043e\u043b\u0451\u0442 \u043a\u043b\u0430\u0441\u0441\u0430 &#171;\u0421\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0414\u0438\u0444\u0444\u0443\u0437\u043e\u0440&#187;<\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u043e\u0434 \u0441\u043f\u0435\u0439\u0441\u0430 \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u0441\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0438\u0442\u043e\u043d\u043e\u0432\u0441\u043a\u043e\u0433\u043e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 <a href=\"https:\/\/gradio.app\/docs\/\" rel=\"noopener noreferrer nofollow\">Gradio<\/a>, \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f <em>\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b<\/em>, \u043f\u043e\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0442\u0440\u043e\u044f\u0442\u0441\u044f REST \u0438 WS API, \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u043d\u0430 <a href=\"https:\/\/svelte.dev\/\" rel=\"noopener noreferrer nofollow\">Svelte<\/a> \u0438 <a href=\"https:\/\/tailwindcss.com\/\" rel=\"noopener noreferrer nofollow\">Tailwind<\/a>, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u043f\u043e\u00a0\u0441\u0441\u044b\u043b\u043a\u0430\u043c \u0432\u0438\u0434\u0430: <a href=\"https:\/\/ai-forever-kandinsky2-1.hf.space\/\" rel=\"noopener noreferrer nofollow\">https:\/\/ai\u2011forever\u2011kandinsky2\u20131.hf.space\/<\/a>. <\/p>\n<p>\u041d\u0435\u00a0\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 <em>\u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u043e\u0441\u0442\u044c<\/em> Svelte, \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u0435\u0441\u043e\u043c \u0432\u00a0\u043f\u043e\u043b \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442\u0430. \u0418 \u0434\u043e\u00a0\u0447\u0435\u0433\u043e \u044f \u043c\u0438\u0440\u043e\u043b\u044e\u0431\u0438\u0432\u044b\u0439, \u043d\u043e\u00a0\u0442\u043e\u0433\u043e, \u043a\u0442\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b Tailwind, \u0442\u044f\u043d\u0443\u0449\u0438\u0439 \u0437\u0430\u00a0\u0441\u043e\u0431\u043e\u0439 200\u041a\u0411 \u0441\u0442\u0438\u043b\u0435\u0439, \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043a\u0430\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0414\u0432\u0430\u0436\u0434\u044b, \u0447\u0442\u043e\u0431\u044b \u0442\u043e\u0447\u043d\u043e \u043d\u0435\u00a0\u0440\u0430\u0437\u043c\u043d\u043e\u0436\u0438\u043b\u0441\u044f, \u0438\u0431\u043e \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0435\u0433\u043e \u0441\u0442\u0438\u043b\u0435\u0439\u00a0\u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e <code>!inhumane<\/code>. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b17\/0cf\/e6f\/b170cfe6f088d69aaa90216850b22ccd.png\" alt=\"\u0417\u0430\u0434\u043d\u0435\u043f\u0440\u0438\u0432\u043e\u0434\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0434\u043d\u0438\u0439 \u043a\u043e\u043d\u0435\u0446\" title=\"\u0417\u0430\u0434\u043d\u0435\u043f\u0440\u0438\u0432\u043e\u0434\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0434\u043d\u0438\u0439 \u043a\u043e\u043d\u0435\u0446\" width=\"835\" height=\"837\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b17\/0cf\/e6f\/b170cfe6f088d69aaa90216850b22ccd.png\"\/><\/p>\n<div><figcaption>\u0417\u0430\u0434\u043d\u0435\u043f\u0440\u0438\u0432\u043e\u0434\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0434\u043d\u0438\u0439 \u043a\u043e\u043d\u0435\u0446<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u043e\u0442 \u0441\u0434\u0435\u043b\u0430\u043b\u0438\u00a0\u0431\u044b \u043e\u043d\u0438 \u0444\u0440\u043e\u043d\u0442 \u043d\u0430 <a href=\"https:\/\/mol.hyoo.ru\/\" rel=\"noopener noreferrer nofollow\">$mol<\/a>\u00a0\u2014 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0434\u0438\u0437\u0430\u0439\u043d \u043c\u043e\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e\u00a0\u0431\u044b \u0437\u0430\u00a0\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0435 \u043c\u0438\u043d\u0443\u0442\u044b \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0447\u0430\u0441\u043e\u0432, <a href=\"https:\/\/t.me\/h_y_o_o\/2128\/2158\" rel=\"noopener noreferrer nofollow\">\u0443\u043f\u0430\u0440\u044b\u0432\u0430\u044f\u0441\u044c \u0441\u043e\u043b\u044f\u043c\u0438<\/a>, \u0447\u0442\u043e\u0431\u044b \u043d\u0435\u00a0\u0441\u043e\u0439\u0442\u0438 \u0441\u00a0\u0443\u043c\u0430. \u0414\u0430\u00a0\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f\u00a0\u0431\u044b \u043e\u043d \u043a\u0443\u0434\u0430 \u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u0435\u0439. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7bf\/b82\/420\/7bfb82420d41fc6a5fd6494f3a6772dd.png\" alt=\"\u0418\u043d\u0441\u0430\u0439\u0434\u0435\u0440\u0441\u043a\u0438\u0439 \u0441\u043b\u0438\u0432\" title=\"\u0418\u043d\u0441\u0430\u0439\u0434\u0435\u0440\u0441\u043a\u0438\u0439 \u0441\u043b\u0438\u0432\" width=\"741\" height=\"163\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7bf\/b82\/420\/7bfb82420d41fc6a5fd6494f3a6772dd.png\"\/><\/p>\n<div><figcaption>\u0418\u043d\u0441\u0430\u0439\u0434\u0435\u0440\u0441\u043a\u0438\u0439 \u0441\u043b\u0438\u0432<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0430\u043a\u00a0\u0436\u0435 \u043a\u0430\u043a\u00a0\u0432 $mol, \u0432\u00a0Gradio \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u043a\u0430\u043a\u00a0\u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043f\u0443\u0442\u0451\u043c \u0438\u0445 \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0438. \u0421\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0435\u0434\u043d\u0435\u0435, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0437\u0430\u0442\u043e \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0444\u0438\u0447\u0430: \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043a\u0430\u043a\u00a0\u043f\u043e\u0442\u043e\u043a \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u0422\u043e \u0435\u0441\u0442\u044c \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e, \u0432\u00a0\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0435\u00a0\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0430\u00a0\u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u0438 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u044c\u044e: <\/p>\n<pre><code class=\"python\">Prompt = gr.Textbox( label=\"Prompt\" ) Image = gr.Image() Imagine = gr.Button( \"Imagine\" )  Imagine.click( imagine, inputs=[ Prompt ], outputs=[ Image ], api_name=\"imagine\" )<\/code><\/pre>\n<p>\u0422\u0443\u0442 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435, \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0438 \u043a\u043d\u043e\u043f\u043a\u0443, \u0430\u00a0\u043f\u043e\u0442\u043e\u043c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0443, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u043b\u0430 \u043f\u0438\u0442\u043e\u043d\u043e\u0432\u0441\u043a\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0441\u00a0\u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0432\u0437\u044f\u0442\u044b\u043c\u0438 \u0438\u0437\u00a0\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f, \u0430\u00a0\u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0435 \u0435\u044e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u0441\u043e\u0432\u044b\u0432\u0430\u043b\u0430 \u0432\u00a0\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443. <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0430\u0432\u0442\u043e\u0440 \u043a\u043e\u0434\u0430 \u0437\u0430\u0434\u0430\u043b API\u2011\u0438\u043c\u044f \u0434\u043b\u044f\u00a0\u043a\u043d\u043e\u043f\u043a\u0438, \u0442\u043e \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u0430\u044f \u043a\u00a0\u043d\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043f\u043e\u00a0REST \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u0443 \u0432\u0438\u0434\u0430 <a href=\"https:\/\/http.hyoo.ru\/#!uri=https%3A%2F%2Fhyoo-translate.hf.space%2Frun%2Ftranslate\/method=post\/body=%7B%20%22data%22%3A%20%5B%20%22en%22%2C%20%22%D0%98%D1%81%D0%BA%D1%83%D1%81%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9%20%D0%A5%D1%83%D0%B4%D0%BE%D0%B6%D0%BD%D0%B8%D0%BA%22%20%5D%20%7D\/headers=Content-Type%3A%20application%2Fjson\" rel=\"noopener noreferrer nofollow\">hyoo\u2011translate.hf.space\/run\/translate<\/a>, \u0430\u00a0\u0432\u00a0\u043f\u043e\u0434\u0432\u0430\u043b\u0435 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 \u0432\u044b \u043d\u0430\u0439\u0434\u0451\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443, \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0443\u044e \u043d\u0435\u043f\u043b\u043e\u0445\u0443\u044e \u0430\u0432\u0442\u043e\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u0434\u043e\u043a\u0443 \u043f\u043e\u00a0API: <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b89\/009\/351\/b89009351a2781d18e1bd8283b1775b1.png\" alt=\"\u0418\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0445\u0443..\" title=\"\u0418\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0445\u0443..\" width=\"950\" height=\"1080\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b89\/009\/351\/b89009351a2781d18e1bd8283b1775b1.png\"\/><\/p>\n<div><figcaption>\u0418\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0445\u0443..<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u043e\u00a0\u0443 \u044d\u0442\u043e\u0433\u043e API \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u0430 \u0431\u0435\u0434\u0430\u00a0\u2014 \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441 \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043e\u043b\u0433\u0438\u043c, \u0442\u043e \u043e\u043d \u043e\u0442\u0432\u0430\u043b\u0438\u0442\u0441\u044f \u043f\u043e\u00a0\u0442\u0430\u0439\u043c\u0430\u0443\u0442\u0443. \u0410\u00a0\u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u044d\u0442\u043e \u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435\u00a0\u0440\u0435\u0434\u043a\u043e\u0435, \u0442\u043e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c WebSocket API, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0438 \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 Gradio \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434. \u0422\u0443\u0442 \u0443\u0436\u0435 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u043e\u0432, \u0437\u0430\u0442\u043e \u0435\u0441\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u00a0\u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430. <\/p>\n<h2>WebSocket API <\/h2>\n<p>\u041a\u00a0\u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043d\u0430\u00a0WS API \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u0435\u0442, \u0442\u0430\u043a \u0447\u0442\u043e\u00a0\u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u043e\u043c \u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u043d\u0430\u0443\u0447\u043d\u043e\u0433\u043e \u0442\u044b\u043a\u0430. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e, \u0437\u0430\u043c\u0435\u0442\u0438\u043c, \u0447\u0442\u043e\u00a0\u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u043e\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043d\u0430\u00a0\u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442 \u0432\u0438\u0434\u0430: <\/p>\n<pre><code class=\"ruby\">wss:\/\/ai-forever-kandinsky2-1.hf.space\/queue\/join<\/code><\/pre>\n<p>\u041f\u043e\u00a0\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f. \u0422\u043e \u0435\u0441\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0438 \u0434\u0430\u043b\u0435\u0435 \u0441\u043b\u0430\u0442\u044c RPC \u0437\u0430\u043f\u0440\u043e\u0441\u044b. \u041e\u043a, \u043d\u0435\u00a0\u043e\u0441\u0438\u043b\u0438\u043b\u0438, \u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e\u00a0\u0437\u0430\u00a0\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0442\u0430\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f. \u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0443\u00a0\u043d\u0430\u0441 \u0445\u0435\u0448: <\/p>\n<pre><code class=\"json\">{ \"msg\": \"send_hash\" }<\/code><\/pre>\n<p>\u042d\u0442\u043e\u0442 \u0445\u0435\u0448 \u043d\u0430\u00a0\u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u043d\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 RPC\u2011\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438 \u043c\u043e\u0436\u0435\u0442\u00a0\u0431\u044b\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439. \u0412\u0438\u0434\u0438\u043c\u043e \u044d\u0442\u043e \u0437\u0430\u0434\u0435\u043b \u043d\u0430\u00a0\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432\u00a0\u043e\u0434\u043d\u043e\u043c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0438. \u0418 \u0445\u043e\u0442\u044c \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u00a0\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u043d\u0430\u043c \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043d\u043e\u0441\u0438\u0442\u044c\u0441\u044f \u0441\u00a0\u044d\u0442\u0438\u043c \u0445\u0435\u0448\u043e\u043c \u0432\u00a0\u043a\u0430\u0436\u0434\u043e\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0438, \u043a\u0430\u043a\u00a0\u043a\u0443\u0440\u0438\u0446\u0430 \u0441\u00a0\u044f\u0439\u0446\u043e\u043c. <\/p>\n<p>\u0427\u0442\u043e\u00a0\u0436, \u043a\u043b\u0438\u0435\u043d\u0442 \u043e\u0442\u0441\u044b\u043b\u0430\u0435\u0442 \u0445\u0435\u0448 \u0438 \u043d\u043e\u043c\u0435\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0438: <\/p>\n<pre><code class=\"json\">{ \"session_hash\": \"jnjiyncjiub\", \"fn_index\": 2 }<\/code><\/pre>\n<p>\u0414\u0430, \u043f\u043e\u00a0\u0441\u043e\u043a\u0435\u0442\u0443 \u0432\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0430\u00a0\u0442\u043e\u0447\u043d\u0435\u0435 \u043a\u043d\u043e\u043f\u043a\u0438, \u0430\u00a0\u0435\u0449\u0451 \u0442\u043e\u0447\u043d\u0435\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043a\u043b\u0438\u043a\u043e\u0432 \u043f\u043e\u00a0\u043a\u043d\u043e\u043f\u043a\u0430\u043c, \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u043c \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0432\u00a0\u043a\u043e\u0434\u0435, \u0430\u00a0\u043d\u0435\u00a0\u043f\u043e\u00a0\u0438\u043c\u0435\u043d\u0438 \u043a\u0430\u043a\u00a0\u0432\u00a0\u0441\u043b\u0443\u0447\u0430\u0435 REST. \u041d\u0430\u0434\u043e\u00a0\u043b\u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c, \u0447\u0442\u043e\u00a0\u0442\u0430\u043a\u043e\u0439 API \u043e\u0447\u0435\u043d\u044c \u0445\u0440\u0443\u043f\u043a\u0438\u0439, \u0438 \u0442\u0430\u043a \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u00a0\u043d\u0430\u0434\u043e? \u041d\u0443 \u0440\u0430\u0437 \u043c\u044b \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u043c \u0442\u0430\u043a\u043e\u0435 \u0432\u00a0\u0441\u043e\u0444\u0442\u0435 \u043e\u0442\u00a0\u043a\u0440\u0443\u043f\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u0442\u043e \u0432\u0438\u0434\u0438\u043c\u043e \u0434\u0430, \u043d\u0430\u0434\u043e: <\/p>\n<blockquote>\n<p>? \u041b\u0443\u0447\u0448\u0435 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0437\u0430\u0434\u0430\u0442\u044c \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u043d\u043e\u0435 \u0438\u043c\u044f \u044f\u0432\u043d\u043e, \u0447\u0435\u043c \u043d\u0435\u044f\u0432\u043d\u043e \u0437\u0430\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u00a0\u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0439 \u0432\u00a0\u043a\u043e\u0434\u0435, \u043e\u0431\u0440\u0435\u043a\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043d\u0430\u00a0\u043e\u0442\u043b\u0430\u0434\u043a\u0443 \u043c\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0431\u0430\u0433\u043e\u0432, \u0432\u044b\u043b\u0435\u0437\u0430\u044e\u0449\u0438\u0445 \u043a\u0430\u043a\u00a0\u0433\u0440\u0438\u0431\u044b \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0438\u0437\u2011\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u00a0\u0441\u0442\u0430\u0440\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442 \u0432\u0441\u0451 \u0435\u0449\u0451 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043f\u043e\u00a0\u0441\u0442\u0430\u0440\u043e\u043c\u0443 \u043d\u043e\u043c\u0435\u0440\u0443. <\/p>\n<\/blockquote>\n<p>\u0412\u043e <a href=\"https:\/\/mol.hyoo.ru\/#!section=docs\/=vv2nig_s5zr0f\" rel=\"noopener noreferrer nofollow\">view.tree<\/a>, \u043a\u0441\u0442\u0430\u0442\u0438, \u044d\u0442\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u043d\u0430\u00a0\u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430\u00a0\u2014 \u0442\u0430\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u0441\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0438\u043c\u0435\u044e\u0442 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430, \u043d\u043e\u00a0\u043d\u0435\u00a0\u0431\u0443\u0434\u0435\u043c \u0437\u0430\u0431\u0435\u0433\u0430\u0442\u044c \u0432\u043f\u0435\u0440\u0451\u0434. <\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0432 \u043d\u0430\u0448\u0435\u00a0\u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0442\u043e\u0440\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0441\u0435\u0440\u0432\u0435\u0440 \u0441\u0442\u0430\u0432\u0438\u0442 \u043d\u0430\u0441 \u0432\u00a0\u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043b\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441\u00a0\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e\u00a0\u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0438 \u0432\u00a0\u043d\u0435\u0439: <\/p>\n<pre><code class=\"json\">{ \"avg_event_concurrent_process_time\": 9.63406398266656, \"avg_event_process_time\": 9.63406398266656, \"msg\": \"estimation\", \"queue_eta\": 125, \"queue_size\": 15, \"rank\": 14, \"rank_eta\": 154.14502372266497 }<\/code><\/pre>\n<p>\u0422\u0443\u0442 \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e\u00a0\u0432\u00a0\u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0441\u0435\u0439\u0447\u0430\u0441 15\u00a0\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u043c\u044b \u043d\u0430 14\u00a0\u043c\u0435\u0441\u0442\u0435, \u0430\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0436\u0434\u0430\u0442\u044c \u0430\u0436 \u0434\u0432\u0435 \u0441\u00a0\u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043e\u0439 \u043c\u0438\u043d\u0443\u0442\u044b. \u041d\u0443, \u044d\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0430\u043d\u0448\u043b\u0430\u0433, \u0430\u00a0\u0442\u0430\u043a, \u0432\u00a0\u043b\u0443\u0447\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0443\u0436\u0435 \u0438 \u0447\u0435\u0440\u0435\u0437 10\u00a0\u0441\u0435\u043a\u0443\u043d\u0434, \u0435\u0441\u043b\u0438 \u0432\u0435\u0440\u0438\u0442\u044c \u0441\u0440\u0435\u0434\u043d\u0435\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430. <\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0442\u043e\u0432 \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430\u0448\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c, \u0442\u043e \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0442 \u0443\u00a0\u043d\u0430\u0441 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438: <\/p>\n<pre><code class=\"json\">{ \"msg\": \"send_data\" }<\/code><\/pre>\n<p>\u041d\u0430 \u0447\u0442\u043e \u043a\u043b\u0438\u0435\u043d\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442: <\/p>\n<pre><code class=\"json\">{ \"session_hash\": \"jnjiyncjiub\", \"fn_index\": 2, \"data\": [ \"Artificial Artist\", \"ugly mug\" ] }<\/code><\/pre>\n<p> \u0410 \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u043e\u0448\u0451\u043b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c: <\/p>\n<pre><code class=\"json\">{ \"msg\": \"process_starts\" }<\/code><\/pre>\n<p> \u0418 \u0435\u0441\u043b\u0438 \u0437\u0432\u0451\u0437\u0434\u044b \u0441\u043b\u043e\u0436\u0430\u0442\u0441\u044f \u0443\u0434\u0430\u0447\u043d\u043e, \u0442\u043e \u0432\u0441\u043a\u043e\u0440\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442: <\/p>\n<pre><code class=\"json\">{     \"msg\": \"process_completed\",     \"success\": true,     \"output\": {         \"data\": [[             {                 \"is_file\": true,                 \"data\": null,                 \"name\": \"\/tmp\/tmpwln8_d7p\/tmprk7jefgn.png\"             }         ]],         \"is_generating\": false,         \"duration\": 9.59670877456665,         \"average_duration\": 9.432154195723134     } }<\/code><\/pre>\n<p>\u0424\u043b\u0430\u0433 <code>is_generating<\/code> \u043f\u043e\u00a0\u0432\u0441\u0435\u0439 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f\u00a0\u043b\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u0438\u043b\u0438\u00a0\u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u043c. \u0410\u00a0\u0444\u043b\u0430\u0433 <code>is_file<\/code> \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f\u00a0\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 <code>data<\/code> (\u0434\u043b\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Data:_URL\" rel=\"noopener noreferrer nofollow\">data\u2011uri<\/a>) \u0438\u043b\u0438\u00a0\u0436\u0435 \u0438\u0445 \u043d\u0430\u0434\u043e \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0438\u0437\u00a0\u0444\u0430\u0439\u043b\u0430, \u043f\u0443\u0442\u044c \u043a\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0443\u043a\u0430\u0437\u0430\u043d \u0432 <code>name<\/code>. <\/p>\n<p> \u0427\u0442\u043e\u00a0\u0436, \u0431\u0435\u0440\u0451\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043f\u0443\u0442\u044c, \u043f\u0440\u0438\u043a\u043b\u0435\u0438\u0432\u0430\u0435\u043c \u043a\u00a0\u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u0443 \u0434\u043b\u044f\u00a0\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432, \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430\u00a0\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0432\u0438\u0434\u0430: <\/p>\n<pre><code class=\"ruby\">https:\/\/ai-forever-kandinsky2-1.hf.space\/file=\/tmp\/tmpwln8_d7p\/tmprk7jefgn.png<\/code><\/pre>\n<p> \u041d\u0443 \u0430 \u0435\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0439\u0434\u0451\u0442 \u043d\u0435 \u0442\u0430\u043a, \u0442\u043e \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u0438\u0448\u043b\u0451\u0442 \u043b\u0430\u043a\u043e\u043d\u0438\u0447\u043d\u043e\u0435: <\/p>\n<pre><code class=\"json\">{     \"msg\": \"process_completed\",     \"success\": false,     \"output\": {         \"error\": null     } }<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438\u00a0\u0436\u0435 \u0432\u044b\u0434\u0443\u043c\u0430\u0435\u0442\u0435, \u0447\u0442\u043e\u00a0\u0437\u0430\u0434\u0430\u0447\u0430 \u043c\u043e\u0436\u0435\u0442\u00a0\u043b\u0438\u0431\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c\u0441\u044f \u0443\u0441\u043f\u0435\u0445\u043e\u043c,\u00a0\u043b\u0438\u0431\u043e \u043e\u0448\u0438\u0431\u043a\u043e\u0439, \u0442\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u0439\u0442\u0435 \u0435\u0449\u0451 \u0440\u0430\u0437. \u0412\u0435\u0434\u044c \u0442\u0443\u0442 \u0437\u0430\u0434\u0430\u0447\u0430 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c\u0441\u044f \u0435\u0449\u0451 \u0438 \u00ab\u043f\u043e\u0448\u0451\u043b \u043d\u0430\u00a0\u0444\u0438\u0433\u00bb: <\/p>\n<pre><code class=\"json\">{ \"msg\": \"queue_full\" }<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/d4e\/000\/a2d\/d4e000a2d32ac3d57784102d8a69da2b.jpeg\" alt=\"\u041f\u0440\u043e\u0442\u0435\u0447\u043a\u0438 \u0432 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f\u0445\" title=\"\u041f\u0440\u043e\u0442\u0435\u0447\u043a\u0438 \u0432 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f\u0445\" width=\"792\" height=\"853\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d4e\/000\/a2d\/d4e000a2d32ac3d57784102d8a69da2b.jpeg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>\u041f\u0440\u043e\u0442\u0435\u0447\u043a\u0438 \u0432 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f\u0445<\/figcaption><\/div>\n<\/figure>\n<h2>TypeScript API <\/h2>\n<p>\u0427\u0442\u043e\u00a0\u0436, \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043d\u0435\u00a0\u0441\u043b\u043e\u0436\u043d\u044b\u0439. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0435\u0433\u043e \u0432\u00a0\u043e\u0431\u043e\u0431\u0449\u0451\u043d\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u0438 \u0441\u00a0HuggingFace \u043c\u043e\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e \u0434\u0430\u0436\u0435 \u0441\u0440\u0435\u0434\u043d\u0438\u043c \u043f\u0430\u043b\u044c\u0446\u0435\u043c \u043b\u0435\u0432\u043e\u0439 \u043d\u043e\u0433\u0438. <\/p>\n<p> \u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u043a\u00a0REST API \u043f\u0440\u043e\u0449\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e: <\/p>\n<pre><code class=\"typescript\">export function $mol_huggingface_rest( space: string, method: string, ... data: readonly any[] ) {  const uri = `https:\/\/${space}.hf.space\/run\/${method}` const response = $mol_fetch.json( uri, { method: 'post', headers: { \"Content-Type\": \"application\/json\" }, body: JSON.stringify({ data }), } ) as any  if( 'error' in response ) { $mol_fail( new Error( response.error ?? 'Unknown API error' ) ) }  return response.data as readonly any[]  }<\/code><\/pre>\n<p> \u0427\u0443\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c WS API: <\/p>\n<pre><code class=\"typescript\">export function $mol_huggingface_ws( space: string, fn_index: number, ... data: readonly any[] ) {  const session_hash = $mol_guid() const socket = new WebSocket( `wss:\/\/${space}.hf.space\/queue\/join` )  const promise = new Promise&lt; readonly any[] >( ( done, fail )=> {  socket.onclose = event => { if( event.reason ) fail( new Error( event.reason ) ) }  socket.onerror = event => { fail( new Error( `Socket error` ) ) }  socket.onmessage = event => {  const message = JSON.parse( event.data ) switch( message.msg ) {  case 'send_hash':  return socket.send( JSON.stringify({ session_hash, fn_index }) )  case 'estimation': return  case 'queue_full': fail( new Error( `Queue full` ) )  case 'send_data':  return socket.send( JSON.stringify({ session_hash, fn_index, data }) )  case 'process_starts': return  case 'process_completed':  if( message.success ) { return done( message.output.data ) } else { return fail( new Error( message.output.error ?? `Unknown API error` ) ) }  default:  return fail( new Error( `Unknown message type: ${ message.msg }` ) )  }  }  } )  return Object.assign( promise, { destructor: ()=> socket.close() } )  }<\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430\u00a0\u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0432\u00a0\u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0438. \u041e\u043d \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u0432\u0435\u0434\u0451\u0442 \u043d\u043e\u0432\u044b\u0439 \u0442\u0435\u043a\u0441\u0442, \u0438 \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u0443\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u0432\u044b\u0437\u043e\u0432. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u043e\u00a0\u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0442\u0438\u043a\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0441\u0442\u0430\u0442\u044c\u0435: <a href=\"https:\/\/habr.com\/ru\/companies\/ruvds\/articles\/725208\/\" rel=\"noopener noreferrer nofollow\">\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c<\/a>. <\/p>\n<p>\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043e\u0431\u0451\u0440\u0442\u043a\u0443 \u043d\u0430\u0434 \u044d\u0442\u0438\u043c\u0438 \u0434\u0432\u0443\u043c\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u043c\u0435\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432\u00a0\u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u0442 \u043d\u0430\u0441 \u043d\u0430\u00a0\u0444\u0438\u0433: <\/p>\n<pre><code class=\"typescript\">export function $mol_huggingface_run( space: string, method: string | number, ... data: readonly any[] ) { while( true ) {  try {  if( typeof method === 'number' ) { const run = $mol_wire_sync( $mol_huggingface_ws ) return run( space, method, ... data ) } else { return $mol_huggingface_rest( space, method, ... data ) }  } catch( error ) {  if( $mol_promise_like( error ) ) $mol_fail_hidden( error )  if( error instanceof Error &amp;&amp; error.message === `Queue full` ) { $mol_fail_log( error ) continue }  $mol_fail_hidden( error ) }  } }<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043c\u0435\u0442\u043e\u0434 \u0443\u043a\u0430\u0437\u0430\u043d \u043a\u0430\u043a\u00a0\u0447\u0438\u0441\u043b\u043e, \u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u0447\u0435\u0440\u0435\u0437 WS API, \u0430\u00a0\u0435\u0441\u043b\u0438 \u043a\u0430\u043a\u00a0\u0441\u0442\u0440\u043e\u043a\u0430, \u0442\u043e \u0447\u0435\u0440\u0435\u0437 REST API. \u0422\u0430\u043a \u043a\u0430\u043a\u00a0\u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>$mol_huggingface_ws<\/code> \u0443\u00a0\u043d\u0430\u0441 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0430\u044f, \u0442\u043e \u0435\u0451 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043c\u0430\u0433\u0438\u044e \u0432\u043d\u0435 \u0425\u043e\u0433\u0432\u0430\u0440\u0442\u0441\u0430. \u0410\u00a0\u0432\u043e\u0442 <code>$mol_huggingface_rest<\/code> \u0443\u0436\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0430\u044f, \u0430\u00a0\u0432\u0441\u044f \u043c\u0430\u0433\u0438\u044f \u0441\u043f\u0440\u044f\u0442\u0430\u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0438, \u0442\u0430\u043a \u0447\u0442\u043e\u00a0\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0435\u0439 \u043d\u0435\u00a0\u043d\u0443\u0436\u043d\u0430. <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430\u00a0\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0447\u0435\u0440\u0435\u0437 Kandinsky \u043f\u043e\u00a0\u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u0437\u0438\u0442\u0438\u0432\u043d\u043e\u043c\u0443 \u0438 \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u043e\u043c\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c: <\/p>\n<pre><code class=\"typescript\">export function $hyoo_artist_imagine( prompt: string, forbid = '', ) {  if( !prompt ) return ''  const space = 'ai-forever-kandinsky2-1'  const path = $mol_huggingface_run( space, 2, prompt, forbid, )[0][0].name as string  return `https:\/\/${space}.hf.space\/file=${path}`  }<\/code><\/pre>\n<p>\u0410\u00a0\u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0443\u0447\u0438\u0442\u044c \u0435\u0451 \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u044f\u0437\u044b\u043a\u0438, \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0434\u043b\u044f\u00a0\u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 \u0441\u00a0\u043b\u044e\u0431\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043d\u0430\u00a0\u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/huggingface.co\/alirezamsh\/small100\" rel=\"noopener noreferrer nofollow\">\u043c\u043e\u0434\u0435\u043b\u044c small100<\/a>: <\/p>\n<pre><code class=\"typescript\">export function $hyoo_lingua_translate( lang: string, text: string, ) {  if( !text.trim() ) return ''  return $mol_huggingface_run( 'hyoo-translate', 0, lang, text )[0] as string  }<\/code><\/pre>\n<p><em>\u0422\u0430\u0434\u0430\u043c!<\/em> \u0412\u0441\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u044b\u0445 \u043d\u0430\u043c \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u043a \u0438\u043d\u043a\u0430\u043f\u0441\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0432\u00a0\u043f\u0430\u0440\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0441\u00a0\u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430\u043c\u0438: <\/p>\n<pre><code class=\"typescript\">function $hyoo_lingua_translate( lang: string, text: string ): string function $hyoo_artist_imagine( prompt: string, forbid?: string ): string<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/6d8\/097\/7c2\/6d80977c252dc411d8ec4d0f711f157f.jpeg\" alt=\"\u0423 \u043c\u0435\u043d\u0435 \u0432\u043d\u0443\u0442\u0440\u0435\u2026 \u0433\u043c\u2026 \u043d\u0435\u2026\u00a0\u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0430\" title=\"\u0423 \u043c\u0435\u043d\u0435 \u0432\u043d\u0443\u0442\u0440\u0435\u2026 \u0433\u043c\u2026 \u043d\u0435\u2026\u00a0\u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0430\" width=\"792\" height=\"856\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6d8\/097\/7c2\/6d80977c252dc411d8ec4d0f711f157f.jpeg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>\u0423 \u043c\u0435\u043d\u0435 \u0432\u043d\u0443\u0442\u0440\u0435\u2026 \u0433\u043c\u2026 \u043d\u0435\u2026\u00a0\u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0430<\/figcaption><\/div>\n<\/figure>\n<h2>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 <\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043b\u0435\u0434\u0438\u0442\u0435 \u0437\u0430\u00a0\u0440\u0443\u043a\u0430\u043c\u0438 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0438\u043d\u0430\u0447\u0435 \u0432\u0441\u0451 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u0435: <\/p>\n<pre><code class=\"ruby\">$hyoo_artist_app $mol_page title &lt;= title_default @ \\Artificial Artist head \/ &lt;= Query $mol_search hint &lt;= title_default query? &lt;=> query_changed? \\ submit? &lt;=> imagine? null &lt;= Source $mol_link_source uri \\https:\/\/github.com\/hyoo-ru\/artist.hyoo.ru body \/ &lt;= Images $mol_infinite row_ids? &lt;=> images? \/ after* &lt;= images_more* \/ Row* &lt;= Image* $mol_image minimal_width 256 minimal_height 256 uri &lt;= image* \\<\/code><\/pre>\n<p>\u0422\u0443\u0442 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0442\u0438\u043f\u0438\u0447\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u0433\u0434\u0435 \u0432\u00a0\u0448\u0430\u043f\u043a\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 \u0438 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430\u00a0\u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0410\u00a0\u0432\u00a0\u0442\u0435\u043b\u0435\u00a0\u2014 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u043b\u0435\u043d\u0442\u0430 \u0438\u0437\u00a0\u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0441\u00a0\u043d\u0435\u00a0\u043c\u0435\u043d\u0435\u0435, \u0447\u0435\u043c 256\u00a0\u043f\u0438\u043a\u0441\u0435\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c. <\/p>\n<p>\u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0432\u0430\u043c \u043d\u0435\u00a0\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c, \u0442\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c\u0441\u044f \u0441\u00a0\u043d\u0438\u043c \u0432 <a href=\"https:\/\/mol.hyoo.ru\/#!section=view.tree\/source=%24hyoo_artist_app%20%24mol_page%0A%09title%20%3C%3D%20title_default%20%40%20%5CArtificial%20Artist%0A%09head%20%2F%0A%09%09%3C%3D%20Query%20%24mol_search%0A%09%09%09hint%20%3C%3D%20title_default%0A%09%09%09query%3F%20%3C%3D%3E%20query_changed%3F%20%5C%0A%09%09%09submit%3F%20%3C%3D%3E%20imagine%3F%20null%0A%09%09%3C%3D%20Source%20%24mol_link_source%0A%09%09%09uri%20%5Chttps%3A%2F%2Fgithub.com%2Fhyoo-ru%2Fartist.hyoo.ru%0A%09body%20%2F%0A%09%09%3C%3D%20Images%20%24mol_infinite%0A%09%09%09row_ids%3F%20%3C%3D%3E%20images%3F%20%2F%0A%09%09%09after*%20%3C%3D%20images_more*%20%2F%0A%09%09%09Row*%20%3C%3D%20Image*%20%24mol_image%0A%09%09%09%09minimal_width%20256%0A%09%09%09%09minimal_height%20256%0A%09%09%09%09uri%20%3C%3D%20image*%20%5C%0A\" rel=\"noopener noreferrer nofollow\">\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0435<\/a>. \u041d\u0443 \u0438\u043b\u0438, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435\u00a0\u0441\u043f\u043e\u0440\u0442\u0441\u043c\u0435\u043d, \u0442\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/mol.hyoo.ru\/#!section=docs\/=vv2nig_s5zr0f\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e<\/a>, \u043a\u043e\u0442\u043e\u0440\u043e\u0439, \u043a\u0430\u043a\u00a0\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u043d\u0435\u0442. <\/p>\n<p>\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u00a0\u044f\u0437\u044b\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u00a0\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u0422\u0435\u043a\u0441\u0442\u044b \u043d\u0430\u00a0\u0440\u0430\u0437\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0440\u044f\u0434\u043e\u043c: <\/p>\n<pre><code class=\"json\">{ \"$hyoo_artist_app_title_default\": \"\u0418\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0425\u0443\u0434\u043e\u0436\u043d\u0438\u043a\" }<\/code><\/pre>\n<p>\u041d\u043e\u00a0\u0435\u0441\u043b\u0438 \u043a\u0430\u043a\u043e\u0433\u043e\u2011\u0442\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0435\u00a0\u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f\u00a0\u2014 \u043d\u0435\u00a0\u0431\u0435\u0434\u0430. $mol_locale \u043d\u0430\u00a0\u043b\u0435\u0442\u0443 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0451\u0442 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u0442\u0435\u043a\u0441\u0442 \u043d\u0430\u00a0\u043d\u0443\u0436\u043d\u044b\u0439 \u044f\u0437\u044b\u043a. \u0410\u00a0\u0435\u0441\u043b\u0438 \u043d\u0435\u00a0\u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f, \u0442\u043e \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u0442\u0435\u043a\u0441\u0442. \u0412\u00a0\u043a\u0440\u0430\u0439\u043d\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u043a\u043b\u044e\u0447. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ef9\/deb\/d14\/ef9debd148575f6227c946798079fa49.png\" alt=\"\u0418\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440\" title=\"\u0418\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440\" width=\"741\" height=\"418\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ef9\/deb\/d14\/ef9debd148575f6227c946798079fa49.png\"\/><\/p>\n<div><figcaption>\u0418\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440<\/figcaption><\/div>\n<\/figure>\n<p> <em>\u0412\u043e\u0443, \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u043a\u0438\u0434\u0430\u043b\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u0430 \u0443\u0436\u0435 \u0432\u0441\u0451 \u043e\u043f\u0440\u044f\u0442\u043d\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442!<\/em> <\/p>\n<h2> \u041b\u043e\u0433\u0438\u043a\u0430 <\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u0439\u043b\u0435\u0440\u043f\u043b\u0435\u0439\u0442\u0430, \u043e\u0442\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0432\u0448\u0438\u0441\u044c \u043e\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0448\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430: <\/p>\n<pre><code class=\"typescript\">namespace $.$$ { export class $hyoo_artist_app extends $.$hyoo_artist_app { \/\/ whole logic here } }<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0440\u043e\u0441 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0441 \u0431\u0435\u0437\u044b\u043c\u044f\u043d\u043d\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u0432 \u0443\u0440\u043b\u0435: <\/p>\n<pre><code class=\"typescript\">@ $mol_mem query( next?: string ) { return this.$.$mol_state_arg.value( '', next ) ?? '' }<\/code><\/pre>\n<p>\u0420\u0430\u0437\u043e\u0431\u044c\u0451\u043c \u0435\u0433\u043e \u043d\u0430 \u0434\u0432\u0435 \u0433\u0440\u0443\u043f\u043f\u044b \u0442\u043e\u043a\u0435\u043d\u043e\u0432: \u043f\u043e\u0437\u0438\u0442\u0438\u0432\u043d\u044b\u0435 \u0438 \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u044b\u0435. <\/p>\n<pre><code class=\"typescript\">@ $mol_mem tokens() {  const { prefer = [], forbid = [], } = $mol_array_groups( this.query().split( \/\\s+\/g ).filter( v => v ), token => token.startsWith( '-' ) ? 'forbid' : 'prefer', )  return { prefer, forbid: forbid.map( token => token.slice(1) ), }  }<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0445\u043e\u0447\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0430 \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0430\u0441\u044c, \u0447\u0442\u043e\u0431\u044b \u0447\u0442\u043e\u2011\u0442\u043e \u043d\u0435\u00a0\u043f\u043e\u043f\u0430\u043b\u043e \u043d\u0430\u00a0\u043a\u0430\u0440\u0442\u0438\u043d\u0443, \u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043a\u0430\u043a\u00a0\u0432\u00a0\u0413\u0443\u0433\u043b \u041f\u043e\u0438\u0441\u043a\u0435 \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u044d\u0442\u043e, \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u044f\u044f \u043c\u0438\u043d\u0443\u0441\u0430\u043c\u0438 \u043a\u0430\u0436\u0434\u043e\u0435 \u0441\u043b\u043e\u0432\u043e: <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/2ee\/800\/86c\/2ee80086ce4d33f1e7b56aa171ae6754.jpeg\" alt=\"\u041f\u043e\u043b\u043d\u043e\u0446\u0432\u0435\u0442\u043d\u043e\u0435 \u0438\u0437\" title=\"\u041f\u043e\u043b\u043d\u043e\u0446\u0432\u0435\u0442\u043d\u043e\u0435 \u0438\u0437\" width=\"791\" height=\"855\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2ee\/800\/86c\/2ee80086ce4d33f1e7b56aa171ae6754.jpeg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>\u041f\u043e\u043b\u043d\u043e\u0446\u0432\u0435\u0442\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435<\/figcaption><\/div>\n<\/figure>\n<p>\u0418\u0434\u0451\u043c \u0434\u0430\u043b\u0435\u0435. \u041a\u0430\u0436\u0434\u0443\u044e \u0433\u0440\u0443\u043f\u043f\u0443 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u043c \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0431\u0435\u043b \u0438 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0451\u043c \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439: <\/p>\n<pre><code class=\"typescript\">@ $mol_mem prompts() { const { prefer, forbid } = this.tokens() return [ prefer, forbid ].map( tokens => this.$.$hyoo_lingua_translate( 'en', tokens.join( ' ' ), ) ) as [ string, string ] }<\/code><\/pre>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u043e\u0432\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u043f\u043e\u00a0\u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430\u00a0\u043d\u0435\u0451 \u0432\u00a0\u0432\u0438\u0434\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u0438\u043b\u0438\u00a0\u043f\u0443\u0441\u0442\u043e\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u00a0\u0431\u044b\u043b \u043f\u0443\u0441\u0442\u043e\u0439: <\/p>\n<pre><code class=\"typescript\">images_more( from: string | null ) { const uri = this.$.$hyoo_artist_imagine( ... this.prompts() ) return uri ? [ uri ] : [] }<\/code><\/pre>\n<p>\u0412 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u043e\u043a\u043d\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441, \u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0435 \u043f\u0443\u0441\u0442\u043e\u0439: <\/p>\n<pre><code class=\"typescript\">@ $mol_mem title() { if( !this.query() ) return this.title_default() return `${ this.query() } \/ ${ this.title_default() }` }<\/code><\/pre>\n<p>\u041f\u0440\u0438 \u043e\u0447\u0438\u0441\u0442\u043a\u0435 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f, \u0441\u0442\u0438\u0440\u0430\u0435\u043c \u0438 \u0437\u0430\u043f\u0440\u043e\u0441 : <\/p>\n<pre><code class=\"typescript\">@ $mol_mem query_changed( next?: string ) { if( next === '' ) this.query( '' ) return next ?? this.query() }<\/code><\/pre>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0436\u043c\u0451\u0442 Enter, \u043c\u0435\u043d\u044f\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0432\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439: <\/p>\n<pre><code class=\"typescript\">imagine() { this.query( this.query_changed() ) }<\/code><\/pre>\n<p><em>\u0412\u0443\u0430\u043b\u044f!<\/em> \u0411\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u043b\u0435\u043d\u0442\u0430 \u0433\u043e\u0442\u043e\u0432\u0430: <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/fa6\/634\/f6b\/fa6634f6bb2f9b23cd393c1ae61e294b.jpeg\" alt=\"\u0412\u0435\u0447\u0435\u0440\u043d\u0438\u0439 \u043c\u0430\u043a\u0438\u044f\u0436 \u0432\u044b\u0448\u0435\u043b \u0438\u0437 \u043f\u043e\u0434 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f\" title=\"\u0412\u0435\u0447\u0435\u0440\u043d\u0438\u0439 \u043c\u0430\u043a\u0438\u044f\u0436 \u0432\u044b\u0448\u0435\u043b \u0438\u0437 \u043f\u043e\u0434 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f\" width=\"794\" height=\"844\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fa6\/634\/f6b\/fa6634f6bb2f9b23cd393c1ae61e294b.jpeg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>\u0412\u0435\u0447\u0435\u0440\u043d\u0438\u0439 \u043c\u0430\u043a\u0438\u044f\u0436 \u0432\u044b\u0448\u0435\u043b \u0438\u0437 \u043f\u043e\u0434 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f<\/figcaption><\/div>\n<\/figure>\n<p>\u0410\u00a0\u043a\u0430\u043a\u00a0\u0436\u0435 \u0445\u0443\u043a\u0438 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430, \u0441\u043f\u0438\u043d\u043d\u0435\u0440\u044b, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u043b\u0438\u0441\u0442\u0430\u043d\u043d\u044b\u0445 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438? \u0412 $mol \u043c\u044b \u0442\u0430\u043a\u043e\u0439 \u0445\u0435\u0440\u043d\u0451\u0439 \u043d\u0435\u00a0\u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u0441\u044f, \u0430\u00a0\u043f\u0438\u0448\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0438\u0441\u0442\u0443\u044e \u0438 \u043d\u0435\u00a0\u0437\u0430\u043c\u0443\u0442\u043d\u0451\u043d\u043d\u0443\u044e \u0431\u0438\u0437\u043d\u0435\u0441\u2011\u043b\u043e\u0433\u0438\u043a\u0443. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435\u00a0\u0436\u0435 \u0432\u0441\u0451\u00a0\u2014 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0435\u00a0\u0434\u043e\u043b\u0435\u0442\u0430\u044f \u0434\u043e\u00a0\u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438. <\/p>\n<h2>\u0421\u043e\u0432\u0441\u0435\u043c \u043a\u0440\u0430\u0441\u043e\u0442\u0430 <\/h2>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c\u00a0\u043b\u0438\u0448\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u043b\u043a\u0438\u0445 \u0448\u0442\u0440\u0438\u0445\u043e\u0432 \u043d\u0430 <a href=\"https:\/\/mol.hyoo.ru\/#!section=docs\/=xwq9q5_f966fg\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043a\u0430\u0441\u043a\u0430\u0434\u043d\u044b\u0445 \u0441\u0442\u0438\u043b\u044f\u0445<\/a> \u0434\u043b\u044f\u00a0\u0435\u0434\u0438\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e\u0433\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043a\u0430\u0440\u0442\u0438\u043d \u0438 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0430\u00a0\u043b\u044e\u0431\u044b\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u0445 \u044d\u043a\u0440\u0430\u043d\u043e\u0432: <\/p>\n<pre><code class=\"typescript\">namespace $.$$ {  const Frame: $mol_style_properties = { margin: 'auto', width: '768px', maxWidth: '100%', height: 'auto', aspectRatio: 1, }  $mol_style_define( $hyoo_artist_app, {  Body: { padding: [ 0, $mol_gap.block ], },  Images: { gap: $mol_gap.block, After: Frame, },  Image: Frame,  } )  }<\/code><\/pre>\n<p>\u041d\u0443 \u0447\u0442\u043e \u0436, \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0442\u0443\u0442 \u0443\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u0447\u0435\u0433\u043e \u0443\u0431\u0430\u0432\u0438\u0442\u044c, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u0438\u0448\u043b\u0430 \u043f\u043e\u0440\u0430 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/artist.hyoo.ru\/\" rel=\"noopener noreferrer nofollow\">\u0418\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0425\u0443\u0434\u043e\u0436\u043d\u0438\u043a\u0430<\/a> \u0441\u0430\u043c\u0438\u043c:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/93c\/98c\/b52\/93c98cb52c265a61ce24e31b5ae892be.jpeg\" alt=\"\u041f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u043d\u0430 $mol\" title=\"\u041f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u043d\u0430 $mol\" width=\"794\" height=\"855\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/93c\/98c\/b52\/93c98cb52c265a61ce24e31b5ae892be.jpeg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>\u041f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u043d\u0430 $mol<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u0440\u0438\u044f\u0442\u043d\u043e\u0433\u043e \u0432\u0430\u043c \u0434\u0443\u043c\u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433\u0430! <\/p>\n<h2>\u041f\u043e\u0441\u0442-\u041c\u0435\u0442\u0430-\u0421\u0430\u0440\u043a\u0430\u0437\u043c <\/h2>\n<p>\u041f\u043e\u043f\u0443\u0442\u043d\u043e, \u043d\u0430\u00a0\u0442\u043e\u0439\u00a0\u0436\u0435 small100\u00a0\u0431\u044b\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0442\u0430\u043a\u00a0\u0436\u0435 \u0438 \u0441\u0435\u0440\u0432\u0438\u0441 \u043e\u043d\u043b\u0430\u0439\u043d \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 <a href=\"https:\/\/idea.hyoo.ru\/#!person=4ynowz_qskrm7\/project=vurzto_swgcwj\" rel=\"noopener noreferrer nofollow\">Lingua Franca<\/a>. \u041a\u00a0\u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u043e\u043d \u043d\u0435\u00a0\u043e\u0447\u0435\u043d\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438 \u043d\u0435\u00a0\u043e\u0447\u0435\u043d\u044c\u00a0\u0431\u044b\u0441\u0442\u0440\u043e \u0438\u0431\u043e \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0430 \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u043d\u0430\u00a0CPU. \u041d\u043e, \u0432\u00a0\u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442\u00a0\u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0447\u0438\u043a\u043e\u0432, \u043e\u043d \u043a\u0443\u0434\u0430 \u0443\u0434\u043e\u0431\u043d\u0435\u0435, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0434\u043e \u0432\u044b\u0432\u0435\u0440\u044f\u0442\u044c \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044f \u043f\u043e\u043e\u0447\u0435\u0440\u0451\u0434\u043d\u043e \u0432\u00a0\u043e\u0431\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b. \u041d\u043e\u00a0\u044d\u0442\u043e \u0443\u0436\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f.. <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430 \u043d\u0435\u00a0\u0445\u0432\u0430\u0442\u0438\u043b\u043e \u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u0445\u0430\u0440\u0434\u043a\u043e\u0440\u043d\u044b\u0445 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u00a0\u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0430\u043c\u0438, \u043c\u043e\u0436\u0435\u0442\u0435 \u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0441\u0442\u0440\u0438\u043c \u0441\u00a0\u043e\u0434\u043d\u0438\u043c \u0438\u0437\u00a0\u044d\u0442\u0430\u043f\u043e\u0432 \u044d\u0432\u043e\u043b\u044e\u0446\u0438\u0438 \u0418\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0425\u0443\u0434\u043e\u0436\u043d\u0438\u043a\u0430 \u043f\u043e\u0434\u00a0\u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u043c \u0445\u0443\u0434\u043e\u0436\u043d\u0438\u043a\u0430 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u043d\u0430\u0442\u0443\u0440\u0430\u043b\u044c\u043d\u043e\u043c\u0443: <\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/6437307be855c8d43dec09f3\" data-style=\"\" id=\"6437307be855c8d43dec09f3\" width=\"\"><\/div>\n<p>\u041e\u0431\u0441\u0443\u0434\u0438\u0442\u044c \u044d\u0442\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043d\u0430\u0448\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u0432 <a href=\"https:\/\/t.me\/h_y_o_o\/417\" rel=\"noopener noreferrer nofollow\">\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0442\u0435\u043c\u0435<\/a> \u043d\u0430\u00a0\u0444\u043e\u0440\u0443\u043c\u0435 Hyper Dev. \u0410\u00a0\u0435\u0441\u043b\u0438 \u043d\u0435\u00a0\u0431\u043e\u0438\u0442\u0435\u0441\u044c \u0438\u043d\u043d\u043e\u0432\u0430\u0446\u0438\u0439 \u0438 \u043a\u043e\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439\u00a0\u2014 \u043f\u0438\u0448\u0438\u0442\u0435 <a href=\"https:\/\/page.hyoo.ru\/#!=4ynowz_qskrm7\" rel=\"noopener noreferrer nofollow\">\u043c\u043d\u0435<\/a> \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u044b. <\/p>\n<hr\/>\n<p><a href=\"https:\/\/page.hyoo.ru\/#!=6tl6wt_thpcai\" rel=\"noopener noreferrer nofollow\">\u0410\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u043d\u0430 $hyoo_page.<\/a> <\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/52a\/a9b\/b0d\/52aa9bb0d1c7e70de80c97f1fef03ad0.png\" width=\"366\" height=\"509\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/52a\/a9b\/b0d\/52aa9bb0d1c7e70de80c97f1fef03ad0.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><\/p>\n<div class=\"tm-article-poll-container\"><!--[--><\/p>\n<div class=\"tm-article-poll tm-article-poll_variant-bordered\">\n<div class=\"tm-notice tm-notice_positive tm-article-poll__notice\"><!----><\/p>\n<div class=\"tm-notice__inner\"><!----><\/p>\n<div class=\"tm-notice__content\" data-test-id=\"notice-content\"><!--[--><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/articles\/728736\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><!--]--><\/div>\n<\/div>\n<\/div>\n<p><!--[--><\/p>\n<div class=\"tm-article-poll__header\">\u0411\u043e\u0438\u0442\u0435\u0441\u044c \u043b\u0438 \u0432\u044b \u0418\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0418\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0430?<\/div>\n<div class=\"tm-article-poll__answers\"><!--[--><\/p>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">6.12% <\/span><span class=\"tm-article-poll__answer-label\">\u041d\u0435\u0442, \u0432\u0435\u0434\u044c \u043e\u043d \u0436\u0435 \u043d\u0430\u0438\u0432\u043d\u044b\u0439 \u0438 \u0433\u043b\u0443\u043f\u044b\u0439<\/span><span class=\"tm-article-poll__answer-votes\">3<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 6.12%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">12.24% <\/span><span class=\"tm-article-poll__answer-label\">\u0414\u0430, \u0432\u0435\u0434\u044c \u043e\u043d \u043d\u0435 \u0432\u0435\u0434\u0430\u0435\u0442, \u0447\u0442\u043e \u0442\u0432\u043e\u0440\u0438\u0442<\/span><span class=\"tm-article-poll__answer-votes\">6<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 12.24%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">12.24% <\/span><span class=\"tm-article-poll__answer-label\">\u0414\u0430, \u043c\u044b \u043e\u0431\u0440\u0435\u0447\u0435\u043d\u044b<\/span><span class=\"tm-article-poll__answer-votes\">6<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 12.24%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">53.06% <\/span><span class=\"tm-article-poll__answer-label\">\u041d\u0435\u0442, \u044f \u043b\u044e\u0434\u0435\u0439 \u0431\u043e\u043b\u044c\u0448\u0435 \u0431\u043e\u044e\u0441\u044c<\/span><span class=\"tm-article-poll__answer-votes\">26<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width: 53.06%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">16.33% <\/span><span class=\"tm-article-poll__answer-label\">\u041d\u0435\u0442, \u0441 \u0447\u0435\u0433\u043e \u0431\u044b \u043c\u043d\u0435 \u0441\u0435\u0431\u044f \u0431\u043e\u044f\u0442\u044c\u0441\u044f<\/span><span class=\"tm-article-poll__answer-votes\">8<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 16.33%\"><\/div>\n<\/div>\n<\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll__stats\"> \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 49 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.   \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0438\u0441\u044c 5 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. <\/div>\n<p><!--]--><\/div>\n<p><!--]--><\/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\/728736\/\"> https:\/\/habr.com\/ru\/articles\/728736\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u043c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0414\u043c\u0438\u0442\u0440\u0438\u0439 \u041a\u0430\u0440\u043b\u043e\u0432\u0441\u043a\u0438\u0439 \u0438 \u044f \u043b\u044e\u0431\u043b\u044e \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0448\u0435\u0434\u0435\u0432\u0440\u044b, \u043d\u043e\u00a0\u0443\u00a0\u043c\u0435\u043d\u044f \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u00a0\u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0442\u0435\u0440\u043f\u0435\u043d\u0438\u044f \u0434\u043e\u0432\u0435\u0441\u0442\u0438 \u0445\u043e\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437\u00a0\u043d\u0438\u0445 \u0434\u043e\u00a0\u043a\u043e\u043d\u0446\u0430. <\/p>\n<p>\u0420\u0430\u043d\u0435\u0435 \u044f \u0443\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u0432\u0430\u043c \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u043e\u0433\u043e <a href=\"https:\/\/page.hyoo.ru\/#!=o9jnhf_7v21c4\" rel=\"noopener noreferrer nofollow\">\u0443\u0431\u0438\u0439\u0446\u0443 \u0413\u0443\u0433\u043b \u041f\u043e\u0438\u0441\u043a\u0430<\/a>. \u041f\u043e\u043b\u044c\u0437\u0443\u044e\u0441\u044c \u0438\u043c \u0434\u043e\u00a0\u0441\u0438\u0445 \u043f\u043e\u0440 \u0438 \u0434\u043e\u0432\u043e\u043b\u0435\u043d \u0447\u0438\u0441\u0442\u043e\u0442\u043e\u0439 \u0432\u044b\u0434\u0430\u0447\u0438. \u0422\u0435\u043f\u0435\u0440\u044c\u00a0\u0436\u0435 \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0443\u0431\u0438\u0439\u0446\u0443 Artstation \u0434\u043b\u044f\u00a0\u0442\u0432\u043e\u0440\u0447\u0435\u0441\u043a\u0438\u0445\u00a0\u043b\u0438\u0447\u043d\u043e\u0441\u0442\u0435\u0439, \u0443\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0442\u0435\u0440\u043f\u0435\u043d\u0438\u044f \u0445\u0432\u0430\u0442\u0430\u0435\u0442\u00a0\u043b\u0438\u0448\u044c \u043d\u0430\u00a0\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0438\u043d\u0443\u0442, \u0437\u0430\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0434\u043e \u0443\u0441\u043f\u0435\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0443\u044e \u043a\u0440\u0430\u0441\u043e\u0442\u0443. \u0418 \u0432\u00a0\u044d\u0442\u043e\u043c \u043d\u0430\u043c \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0435 \u0441\u0435\u0442\u0438. <\/p>\n<figure class=\"full-width\">\n<div><figcaption>$hyoo_artist_app $mol_pagetitle @ \\Artificial Artist<\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432\u0430\u0441 \u0436\u0434\u0451\u0442 \u0440\u0435\u0432\u0435\u0440\u0441\u2011\u0438\u043d\u0436\u0435\u043d\u0438\u0440\u0438\u043d\u0433 HuggingFace API \u0434\u043b\u044f\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 Kandinsky, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430 100\u00a0\u044f\u0437\u044b\u043a\u0430\u0445 \u043c\u0438\u0440\u0430 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043c\u043e\u0434\u0435\u043b\u0438 Small100, \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043b\u0435\u043d\u0442\u044b \u0432\u00a0\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430 \u043d\u0430 $mol \u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u0442\u0432\u0430 \u0418\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0425\u0443\u0434\u043e\u0436\u043d\u0438\u043a\u0430. <\/p>\n<h2>Server API <\/h2>\n<p>\u0418\u0442\u0430\u043a, \u043f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u0438\u0434\u0451\u043c \u043d\u0430 <a href=\"https:\/\/github.com\/\" rel=\"noopener noreferrer nofollow\"><s>github.com<\/s><\/a> <a href=\"https:\/\/huggingface.co\" rel=\"noopener noreferrer nofollow\">huggingface.co<\/a>. \u0422\u0430\u043c \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 <a href=\"https:\/\/huggingface.co\/models\" rel=\"noopener noreferrer nofollow\">\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0442\u0435\u043d \u0442\u044b\u0441\u044f\u0447 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0432\u043a\u0443\u0441<\/a>. \u041d\u0430\u0441 \u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u0435\u0436\u0430\u044f <a href=\"https:\/\/huggingface.co\/ai-forever\/Kandinsky_2.1\" rel=\"noopener noreferrer nofollow\">ai-forever\/Kandinsky_2.1<\/a>: <\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u041e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043d\u043e \u043d\u0438\u0444\u0438\u0433\u0430 \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043c\u044b \u0435\u0451, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0435\u00a0\u0431\u0443\u0434\u0435\u043c, \u0430\u00a0\u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u00a0\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0438 \u0432\u00a0\u043e\u0431\u043b\u0430\u043a\u0435. \u041a\u00a0\u0441\u0447\u0430\u0441\u0442\u044c\u044e, <a href=\"https:\/\/huggingface.co\/spaces\/ai-forever\/Kandinsky2.1\" rel=\"noopener noreferrer nofollow\">\u0440\u044f\u0434\u043e\u043c<\/a> \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 <em>\u0441\u043f\u0435\u0439\u0441<\/em>, \u043d\u0430\u00a0\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c\u0441\u044f \u0441\u00a0\u044d\u0442\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u044e: <\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0416\u0435\u043b\u0435\u0437\u043d\u0430\u044f \u043b\u0435\u0434\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u0415\u0449\u0451 \u043e\u0434\u043d\u043e \u0441\u0447\u0430\u0441\u0442\u044c\u0435\u00a0\u2014 \u044d\u0442\u043e\u0442 \u0441\u043f\u0435\u0439\u0441 \u0433\u043e\u043d\u044f\u0435\u0442 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0438 \u043d\u0430\u00a0GPU. \u0415\u0433\u043e \u043c\u043e\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e\u00a0\u0431\u044b \u0444\u043e\u0440\u043a\u043d\u0443\u0442\u044c \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043e\u0434\u00a0\u0441\u0435\u0431\u044f, \u043a\u0430\u043a\u00a0\u044f \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/huggingface.co\/spaces\/jin-nin\/artist\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a>, \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0432 \u0432\u043c\u0435\u0441\u0442\u0435 3\u00a0\u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0438: <\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0414\u0432\u0430 \u0433\u0438\u043d\u043e\u0438\u0434\u0430 \u0438 \u041b\u0413\u0411\u0422-\u043b\u043e\u0448\u0430\u0434\u043a\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u043e\u00a0\u0442\u043e\u0433\u0434\u0430 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430\u00a0CPU, \u0447\u0442\u043e\u00a0\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0438, \u043a\u0430\u043a\u00a0\u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430, \u043c\u0435\u043d\u0435\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e. \u0422\u0430\u043a \u0447\u0442\u043e\u00a0\u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e, \u0447\u0442\u043e\u00a0\u0435\u0441\u0442\u044c. \u0411\u043b\u0430\u0433\u043e, \u0441\u043f\u0435\u0439\u0441 \u0441\u00a0Kandinsky\u00a0\u2014 \u043d\u0435\u00a0\u0442\u0430\u043a\u043e\u0439 \u0437\u0432\u0435\u0437\u0434\u043e\u043b\u0451\u0442, \u043a\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/huggingface.co\/spaces\/ArtGAN\/Stable-Diffusion-ControlNet-WebUI\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e\u0442<\/a>: <\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0417\u0432\u0435\u0437\u0434\u043e\u043b\u0451\u0442 \u043a\u043b\u0430\u0441\u0441\u0430 &#171;\u0421\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0414\u0438\u0444\u0444\u0443\u0437\u043e\u0440&#187;<\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u043e\u0434 \u0441\u043f\u0435\u0439\u0441\u0430 \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u0441\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0438\u0442\u043e\u043d\u043e\u0432\u0441\u043a\u043e\u0433\u043e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 <a href=\"https:\/\/gradio.app\/docs\/\" rel=\"noopener noreferrer nofollow\">Gradio<\/a>, \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f <em>\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b<\/em>, \u043f\u043e\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0442\u0440\u043e\u044f\u0442\u0441\u044f REST \u0438 WS API, \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u043d\u0430 <a href=\"https:\/\/svelte.dev\/\" rel=\"noopener noreferrer nofollow\">Svelte<\/a> \u0438 <a href=\"https:\/\/tailwindcss.com\/\" rel=\"noopener noreferrer nofollow\">Tailwind<\/a>, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u043f\u043e\u00a0\u0441\u0441\u044b\u043b\u043a\u0430\u043c \u0432\u0438\u0434\u0430: <a href=\"https:\/\/ai-forever-kandinsky2-1.hf.space\/\" rel=\"noopener noreferrer nofollow\">https:\/\/ai\u2011forever\u2011kandinsky2\u20131.hf.space\/<\/a>. <\/p>\n<p>\u041d\u0435\u00a0\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 <em>\u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u043e\u0441\u0442\u044c<\/em> Svelte, \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u0435\u0441\u043e\u043c \u0432\u00a0\u043f\u043e\u043b \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442\u0430. \u0418 \u0434\u043e\u00a0\u0447\u0435\u0433\u043e \u044f \u043c\u0438\u0440\u043e\u043b\u044e\u0431\u0438\u0432\u044b\u0439, \u043d\u043e\u00a0\u0442\u043e\u0433\u043e, \u043a\u0442\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b Tailwind, \u0442\u044f\u043d\u0443\u0449\u0438\u0439 \u0437\u0430\u00a0\u0441\u043e\u0431\u043e\u0439 200\u041a\u0411 \u0441\u0442\u0438\u043b\u0435\u0439, \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043a\u0430\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0414\u0432\u0430\u0436\u0434\u044b, \u0447\u0442\u043e\u0431\u044b \u0442\u043e\u0447\u043d\u043e \u043d\u0435\u00a0\u0440\u0430\u0437\u043c\u043d\u043e\u0436\u0438\u043b\u0441\u044f, \u0438\u0431\u043e \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0435\u0433\u043e \u0441\u0442\u0438\u043b\u0435\u0439\u00a0\u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e <code>!inhumane<\/code>. <\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0417\u0430\u0434\u043d\u0435\u043f\u0440\u0438\u0432\u043e\u0434\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0434\u043d\u0438\u0439 \u043a\u043e\u043d\u0435\u0446<\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u043e\u0442 \u0441\u0434\u0435\u043b\u0430\u043b\u0438\u00a0\u0431\u044b \u043e\u043d\u0438 \u0444\u0440\u043e\u043d\u0442 \u043d\u0430 <a href=\"https:\/\/mol.hyoo.ru\/\" rel=\"noopener noreferrer nofollow\">$mol<\/a>\u00a0\u2014 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0434\u0438\u0437\u0430\u0439\u043d \u043c\u043e\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e\u00a0\u0431\u044b \u0437\u0430\u00a0\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0435 \u043c\u0438\u043d\u0443\u0442\u044b \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0447\u0430\u0441\u043e\u0432, <a href=\"https:\/\/t.me\/h_y_o_o\/2128\/2158\" rel=\"noopener noreferrer nofollow\">\u0443\u043f\u0430\u0440\u044b\u0432\u0430\u044f\u0441\u044c \u0441\u043e\u043b\u044f\u043c\u0438<\/a>, \u0447\u0442\u043e\u0431\u044b \u043d\u0435\u00a0\u0441\u043e\u0439\u0442\u0438 \u0441\u00a0\u0443\u043c\u0430. \u0414\u0430\u00a0\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f\u00a0\u0431\u044b \u043e\u043d \u043a\u0443\u0434\u0430 \u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u0435\u0439. <\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0418\u043d\u0441\u0430\u0439\u0434\u0435\u0440\u0441\u043a\u0438\u0439 \u0441\u043b\u0438\u0432<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0430\u043a\u00a0\u0436\u0435 \u043a\u0430\u043a\u00a0\u0432 $mol, \u0432\u00a0Gradio \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u043a\u0430\u043a\u00a0\u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043f\u0443\u0442\u0451\u043c \u0438\u0445 \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0438. \u0421\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0435\u0434\u043d\u0435\u0435, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0437\u0430\u0442\u043e \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0444\u0438\u0447\u0430: \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043a\u0430\u043a\u00a0\u043f\u043e\u0442\u043e\u043a \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u0422\u043e \u0435\u0441\u0442\u044c \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e, \u0432\u00a0\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0435\u00a0\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0430\u00a0\u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u0438 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u044c\u044e: <\/p>\n<pre><code class=\"python\">Prompt = gr.Textbox( label=\"Prompt\" ) Image = gr.Image() Imagine = gr.Button( \"Imagine\" )  Imagine.click( imagine, inputs=[ Prompt ], outputs=[ Image ], api_name=\"imagine\" )<\/code><\/pre>\n<p>\u0422\u0443\u0442 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435, \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0438 \u043a\u043d\u043e\u043f\u043a\u0443, \u0430\u00a0\u043f\u043e\u0442\u043e\u043c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0443, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u043b\u0430 \u043f\u0438\u0442\u043e\u043d\u043e\u0432\u0441\u043a\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0441\u00a0\u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0432\u0437\u044f\u0442\u044b\u043c\u0438 \u0438\u0437\u00a0\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f, \u0430\u00a0\u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0435 \u0435\u044e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u0441\u043e\u0432\u044b\u0432\u0430\u043b\u0430 \u0432\u00a0\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443. <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0430\u0432\u0442\u043e\u0440 \u043a\u043e\u0434\u0430 \u0437\u0430\u0434\u0430\u043b API\u2011\u0438\u043c\u044f \u0434\u043b\u044f\u00a0\u043a\u043d\u043e\u043f\u043a\u0438, \u0442\u043e \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u0430\u044f \u043a\u00a0\u043d\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043f\u043e\u00a0REST \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u0443 \u0432\u0438\u0434\u0430 <a href=\"https:\/\/http.hyoo.ru\/#!uri=https%3A%2F%2Fhyoo-translate.hf.space%2Frun%2Ftranslate\/method=post\/body=%7B%20%22data%22%3A%20%5B%20%22en%22%2C%20%22%D0%98%D1%81%D0%BA%D1%83%D1%81%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9%20%D0%A5%D1%83%D0%B4%D0%BE%D0%B6%D0%BD%D0%B8%D0%BA%22%20%5D%20%7D\/headers=Content-Type%3A%20application%2Fjson\" rel=\"noopener noreferrer nofollow\">hyoo\u2011translate.hf.space\/run\/translate<\/a>, \u0430\u00a0\u0432\u00a0\u043f\u043e\u0434\u0432\u0430\u043b\u0435 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 \u0432\u044b \u043d\u0430\u0439\u0434\u0451\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443, \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0443\u044e \u043d\u0435\u043f\u043b\u043e\u0445\u0443\u044e \u0430\u0432\u0442\u043e\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u0434\u043e\u043a\u0443 \u043f\u043e\u00a0API: <\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0418\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0445\u0443..<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u043e\u00a0\u0443 \u044d\u0442\u043e\u0433\u043e API \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u0430 \u0431\u0435\u0434\u0430\u00a0\u2014 \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441 \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043e\u043b\u0433\u0438\u043c, \u0442\u043e \u043e\u043d \u043e\u0442\u0432\u0430\u043b\u0438\u0442\u0441\u044f \u043f\u043e\u00a0\u0442\u0430\u0439\u043c\u0430\u0443\u0442\u0443. \u0410\u00a0\u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u044d\u0442\u043e \u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435\u00a0\u0440\u0435\u0434\u043a\u043e\u0435, \u0442\u043e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c WebSocket API, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0438 \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 Gradio \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434. \u0422\u0443\u0442 \u0443\u0436\u0435 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u043e\u0432, \u0437\u0430\u0442\u043e \u0435\u0441\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u00a0\u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430. <\/p>\n<h2>WebSocket API <\/h2>\n<p>\u041a\u00a0\u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043d\u0430\u00a0WS API \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u0435\u0442, \u0442\u0430\u043a \u0447\u0442\u043e\u00a0\u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u043e\u043c \u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u043d\u0430\u0443\u0447\u043d\u043e\u0433\u043e \u0442\u044b\u043a\u0430. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e, \u0437\u0430\u043c\u0435\u0442\u0438\u043c, \u0447\u0442\u043e\u00a0\u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u043e\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043d\u0430\u00a0\u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442 \u0432\u0438\u0434\u0430: <\/p>\n<pre><code class=\"ruby\">wss:\/\/ai-forever-kandinsky2-1.hf.space\/queue\/join<\/code><\/pre>\n<p>\u041f\u043e\u00a0\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f. \u0422\u043e \u0435\u0441\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0438 \u0434\u0430\u043b\u0435\u0435 \u0441\u043b\u0430\u0442\u044c RPC \u0437\u0430\u043f\u0440\u043e\u0441\u044b. \u041e\u043a, \u043d\u0435\u00a0\u043e\u0441\u0438\u043b\u0438\u043b\u0438, \u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e\u00a0\u0437\u0430\u00a0\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0442\u0430\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f. \u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0443\u00a0\u043d\u0430\u0441 \u0445\u0435\u0448: <\/p>\n<pre><code class=\"json\">{ \"msg\": \"send_hash\" }<\/code><\/pre>\n<p>\u042d\u0442\u043e\u0442 \u0445\u0435\u0448 \u043d\u0430\u00a0\u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u043d\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 RPC\u2011\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438 \u043c\u043e\u0436\u0435\u0442\u00a0\u0431\u044b\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439. \u0412\u0438\u0434\u0438\u043c\u043e \u044d\u0442\u043e \u0437\u0430\u0434\u0435\u043b \u043d\u0430\u00a0\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432\u00a0\u043e\u0434\u043d\u043e\u043c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0438. \u0418 \u0445\u043e\u0442\u044c \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u00a0\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u043d\u0430\u043c \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043d\u043e\u0441\u0438\u0442\u044c\u0441\u044f \u0441\u00a0\u044d\u0442\u0438\u043c \u0445\u0435\u0448\u043e\u043c \u0432\u00a0\u043a\u0430\u0436\u0434\u043e\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0438, \u043a\u0430\u043a\u00a0\u043a\u0443\u0440\u0438\u0446\u0430 \u0441\u00a0\u044f\u0439\u0446\u043e\u043c. <\/p>\n<p>\u0427\u0442\u043e\u00a0\u0436, \u043a\u043b\u0438\u0435\u043d\u0442 \u043e\u0442\u0441\u044b\u043b\u0430\u0435\u0442 \u0445\u0435\u0448 \u0438 \u043d\u043e\u043c\u0435\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0438: <\/p>\n<pre><code class=\"json\">{ \"session_hash\": \"jnjiyncjiub\", \"fn_index\": 2 }<\/code><\/pre>\n<p>\u0414\u0430, \u043f\u043e\u00a0\u0441\u043e\u043a\u0435\u0442\u0443 \u0432\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0430\u00a0\u0442\u043e\u0447\u043d\u0435\u0435 \u043a\u043d\u043e\u043f\u043a\u0438, \u0430\u00a0\u0435\u0449\u0451 \u0442\u043e\u0447\u043d\u0435\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043a\u043b\u0438\u043a\u043e\u0432 \u043f\u043e\u00a0\u043a\u043d\u043e\u043f\u043a\u0430\u043c, \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u043c \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0432\u00a0\u043a\u043e\u0434\u0435, \u0430\u00a0\u043d\u0435\u00a0\u043f\u043e\u00a0\u0438\u043c\u0435\u043d\u0438 \u043a\u0430\u043a\u00a0\u0432\u00a0\u0441\u043b\u0443\u0447\u0430\u0435 REST. \u041d\u0430\u0434\u043e\u00a0\u043b\u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c, \u0447\u0442\u043e\u00a0\u0442\u0430\u043a\u043e\u0439 API \u043e\u0447\u0435\u043d\u044c \u0445\u0440\u0443\u043f\u043a\u0438\u0439, \u0438 \u0442\u0430\u043a \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u00a0\u043d\u0430\u0434\u043e? \u041d\u0443 \u0440\u0430\u0437 \u043c\u044b \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u043c \u0442\u0430\u043a\u043e\u0435 \u0432\u00a0\u0441\u043e\u0444\u0442\u0435 \u043e\u0442\u00a0\u043a\u0440\u0443\u043f\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u0442\u043e \u0432\u0438\u0434\u0438\u043c\u043e \u0434\u0430, \u043d\u0430\u0434\u043e: <\/p>\n<blockquote>\n<p>? \u041b\u0443\u0447\u0448\u0435 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0437\u0430\u0434\u0430\u0442\u044c \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u043d\u043e\u0435 \u0438\u043c\u044f \u044f\u0432\u043d\u043e, \u0447\u0435\u043c \u043d\u0435\u044f\u0432\u043d\u043e \u0437\u0430\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u00a0\u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0439 \u0432\u00a0\u043a\u043e\u0434\u0435, \u043e\u0431\u0440\u0435\u043a\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043d\u0430\u00a0\u043e\u0442\u043b\u0430\u0434\u043a\u0443 \u043c\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0431\u0430\u0433\u043e\u0432, \u0432\u044b\u043b\u0435\u0437\u0430\u044e\u0449\u0438\u0445 \u043a\u0430\u043a\u00a0\u0433\u0440\u0438\u0431\u044b \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0438\u0437\u2011\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u00a0\u0441\u0442\u0430\u0440\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442 \u0432\u0441\u0451 \u0435\u0449\u0451 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043f\u043e\u00a0\u0441\u0442\u0430\u0440\u043e\u043c\u0443 \u043d\u043e\u043c\u0435\u0440\u0443. <\/p>\n<\/blockquote>\n<p>\u0412\u043e <a href=\"https:\/\/mol.hyoo.ru\/#!section=docs\/=vv2nig_s5zr0f\" rel=\"noopener noreferrer nofollow\">view.tree<\/a>, \u043a\u0441\u0442\u0430\u0442\u0438, \u044d\u0442\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u043d\u0430\u00a0\u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430\u00a0\u2014 \u0442\u0430\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u0441\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0438\u043c\u0435\u044e\u0442 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430, \u043d\u043e\u00a0\u043d\u0435\u00a0\u0431\u0443\u0434\u0435\u043c \u0437\u0430\u0431\u0435\u0433\u0430\u0442\u044c \u0432\u043f\u0435\u0440\u0451\u0434. <\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0432 \u043d\u0430\u0448\u0435\u00a0\u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0442\u043e\u0440\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0441\u0435\u0440\u0432\u0435\u0440 \u0441\u0442\u0430\u0432\u0438\u0442 \u043d\u0430\u0441 \u0432\u00a0\u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043b\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441\u00a0\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e\u00a0\u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0438 \u0432\u00a0\u043d\u0435\u0439: <\/p>\n<pre><code class=\"json\">{ \"avg_event_concurrent_process_time\": 9.63406398266656, \"avg_event_process_time\": 9.63406398266656, \"msg\": \"estimation\", \"queue_eta\": 125, \"queue_size\": 15, \"rank\": 14, \"rank_eta\": 154.14502372266497 }<\/code><\/pre>\n<p>\u0422\u0443\u0442 \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e\u00a0\u0432\u00a0\u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0441\u0435\u0439\u0447\u0430\u0441 15\u00a0\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u043c\u044b \u043d\u0430 14\u00a0\u043c\u0435\u0441\u0442\u0435, \u0430\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0436\u0434\u0430\u0442\u044c \u0430\u0436 \u0434\u0432\u0435 \u0441\u00a0\u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043e\u0439 \u043c\u0438\u043d\u0443\u0442\u044b. \u041d\u0443, \u044d\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0430\u043d\u0448\u043b\u0430\u0433, \u0430\u00a0\u0442\u0430\u043a, \u0432\u00a0\u043b\u0443\u0447\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0443\u0436\u0435 \u0438 \u0447\u0435\u0440\u0435\u0437 10\u00a0\u0441\u0435\u043a\u0443\u043d\u0434, \u0435\u0441\u043b\u0438 \u0432\u0435\u0440\u0438\u0442\u044c \u0441\u0440\u0435\u0434\u043d\u0435\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430. <\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0442\u043e\u0432 \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430\u0448\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c, \u0442\u043e \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0442 \u0443\u00a0\u043d\u0430\u0441 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438: <\/p>\n<pre><code class=\"json\">{ \"msg\": \"send_data\" }<\/code><\/pre>\n<p>\u041d\u0430 \u0447\u0442\u043e \u043a\u043b\u0438\u0435\u043d\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442: <\/p>\n<pre><code class=\"json\">{ \"session_hash\": \"jnjiyncjiub\", \"fn_index\": 2, \"data\": [ \"Artificial Artist\", \"ugly mug\" ] }<\/code><\/pre>\n<p> \u0410 \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u043e\u0448\u0451\u043b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c: <\/p>\n<pre><code class=\"json\">{ \"msg\": \"process_starts\" }<\/code><\/pre>\n<p> \u0418 \u0435\u0441\u043b\u0438 \u0437\u0432\u0451\u0437\u0434\u044b \u0441\u043b\u043e\u0436\u0430\u0442\u0441\u044f \u0443\u0434\u0430\u0447\u043d\u043e, \u0442\u043e \u0432\u0441\u043a\u043e\u0440\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442: <\/p>\n<pre><code class=\"json\">{     \"msg\": \"process_completed\",     \"success\": true,     \"output\": {         \"data\": [[             {                 \"is_file\": true,                 \"data\": null,                 \"name\": \"\/tmp\/tmpwln8_d7p\/tmprk7jefgn.png\"             }         ]],         \"is_generating\": false,         \"duration\": 9.59670877456665,         \"average_duration\": 9.432154195723134     } }<\/code><\/pre>\n<p>\u0424\u043b\u0430\u0433 <code>is_generating<\/code> \u043f\u043e\u00a0\u0432\u0441\u0435\u0439 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f\u00a0\u043b\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u0438\u043b\u0438\u00a0\u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u043c. \u0410\u00a0\u0444\u043b\u0430\u0433 <code>is_file<\/code> \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f\u00a0\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 <code>data<\/code> (\u0434\u043b\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Data:_URL\" rel=\"noopener noreferrer nofollow\">data\u2011uri<\/a>) \u0438\u043b\u0438\u00a0\u0436\u0435 \u0438\u0445 \u043d\u0430\u0434\u043e \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0438\u0437\u00a0\u0444\u0430\u0439\u043b\u0430, \u043f\u0443\u0442\u044c \u043a\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0443\u043a\u0430\u0437\u0430\u043d \u0432 <code>name<\/code>. <\/p>\n<p> \u0427\u0442\u043e\u00a0\u0436, \u0431\u0435\u0440\u0451\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043f\u0443\u0442\u044c, \u043f\u0440\u0438\u043a\u043b\u0435\u0438\u0432\u0430\u0435\u043c \u043a\u00a0\u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u0443 \u0434\u043b\u044f\u00a0\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432, \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430\u00a0\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0432\u0438\u0434\u0430: <\/p>\n<pre><code class=\"ruby\">https:\/\/ai-forever-kandinsky2-1.hf.space\/file=\/tmp\/tmpwln8_d7p\/tmprk7jefgn.png<\/code><\/pre>\n<p> \u041d\u0443 \u0430 \u0435\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0439\u0434\u0451\u0442 \u043d\u0435 \u0442\u0430\u043a, \u0442\u043e \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u0438\u0448\u043b\u0451\u0442 \u043b\u0430\u043a\u043e\u043d\u0438\u0447\u043d\u043e\u0435: <\/p>\n<pre><code class=\"json\">{     \"msg\": \"process_completed\",     \"success\": false,     \"output\": {         \"error\": null     } }<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438\u00a0\u0436\u0435 \u0432\u044b\u0434\u0443\u043c\u0430\u0435\u0442\u0435, \u0447\u0442\u043e\u00a0\u0437\u0430\u0434\u0430\u0447\u0430 \u043c\u043e\u0436\u0435\u0442\u00a0\u043b\u0438\u0431\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c\u0441\u044f \u0443\u0441\u043f\u0435\u0445\u043e\u043c,\u00a0\u043b\u0438\u0431\u043e \u043e\u0448\u0438\u0431\u043a\u043e\u0439, \u0442\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u0439\u0442\u0435 \u0435\u0449\u0451 \u0440\u0430\u0437. \u0412\u0435\u0434\u044c \u0442\u0443\u0442 \u0437\u0430\u0434\u0430\u0447\u0430 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c\u0441\u044f \u0435\u0449\u0451 \u0438 \u00ab\u043f\u043e\u0448\u0451\u043b \u043d\u0430\u00a0\u0444\u0438\u0433\u00bb: <\/p>\n<pre><code class=\"json\">{ \"msg\": \"queue_full\" }<\/code><\/pre>\n<figure class=\"full-width\">\n<div><figcaption>\u041f\u0440\u043e\u0442\u0435\u0447\u043a\u0438 \u0432 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f\u0445<\/figcaption><\/div>\n<\/figure>\n<h2>TypeScript API <\/h2>\n<p>\u0427\u0442\u043e\u00a0\u0436, \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043d\u0435\u00a0\u0441\u043b\u043e\u0436\u043d\u044b\u0439. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0435\u0433\u043e \u0432\u00a0\u043e\u0431\u043e\u0431\u0449\u0451\u043d\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u0438 \u0441\u00a0HuggingFace \u043c\u043e\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e \u0434\u0430\u0436\u0435 \u0441\u0440\u0435\u0434\u043d\u0438\u043c \u043f\u0430\u043b\u044c\u0446\u0435\u043c \u043b\u0435\u0432\u043e\u0439 \u043d\u043e\u0433\u0438. <\/p>\n<p> \u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u043a\u00a0REST API \u043f\u0440\u043e\u0449\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e: <\/p>\n<pre><code class=\"typescript\">export function $mol_huggingface_rest( space: string, method: string, ... data: readonly any[] ) {  const uri = `https:\/\/${space}.hf.space\/run\/${method}` const response = $mol_fetch.json( uri, { method: 'post', headers: { \"Content-Type\": \"application\/json\" }, body: JSON.stringify({ data }), } ) as any  if( 'error' in response ) { $mol_fail( new Error( response.error ?? 'Unknown API error' ) ) }  return response.data as readonly any[]  }<\/code><\/pre>\n<p> \u0427\u0443\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c WS API: <\/p>\n<pre><code class=\"typescript\">export function $mol_huggingface_ws( space: string, fn_index: number, ... data: readonly any[] ) {  const session_hash = $mol_guid() const socket = new WebSocket( `wss:\/\/${space}.hf.space\/queue\/join` )  const promise = new Promise&lt; readonly any[] >( ( done, fail )=> {  socket.onclose = event => { if( event.reason ) fail( new Error( event.reason ) ) }  socket.onerror = event => { fail( new Error( `Socket error` ) ) }  socket.onmessage = event => {  const message = JSON.parse( event.data ) switch( message.msg ) {  case 'send_hash':  return socket.send( JSON.stringify({ session_hash, fn_index }) )  case 'estimation': return  case 'queue_full': fail( new Error( `Queue full` ) )  case 'send_data':  return socket.send( JSON.stringify({ session_hash, fn_index, data }) )  case 'process_starts': return  case 'process_completed':  if( message.success ) { return done( message.output.data ) } else { return fail( new Error( message.output.error ?? `Unknown API error` ) ) }  default:  return fail( new Error( `Unknown message type: ${ message.msg }` ) )  }  }  } )  return Object.assign( promise, { destructor: ()=> socket.close() } )  }<\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430\u00a0\u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0432\u00a0\u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0438. \u041e\u043d \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u0432\u0435\u0434\u0451\u0442 \u043d\u043e\u0432\u044b\u0439 \u0442\u0435\u043a\u0441\u0442, \u0438 \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u0443\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u0432\u044b\u0437\u043e\u0432. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u043e\u00a0\u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0442\u0438\u043a\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0441\u0442\u0430\u0442\u044c\u0435: <a href=\"https:\/\/habr.com\/ru\/companies\/ruvds\/articles\/725208\/\" rel=\"noopener noreferrer nofollow\">\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c<\/a>. <\/p>\n<p>\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043e\u0431\u0451\u0440\u0442\u043a\u0443 \u043d\u0430\u0434 \u044d\u0442\u0438\u043c\u0438 \u0434\u0432\u0443\u043c\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u043c\u0435\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432\u00a0\u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u0442 \u043d\u0430\u0441 \u043d\u0430\u00a0\u0444\u0438\u0433: <\/p>\n<pre><code class=\"typescript\">export function $mol_huggingface_run( space: string, method: string | number, ... data: readonly any[] ) { while( true ) {  try {  if( typeof method === 'number' ) {<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-392959","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/392959","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=392959"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/392959\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=392959"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=392959"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=392959"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}