{"id":463154,"date":"2025-06-13T09:45:07","date_gmt":"2025-06-13T09:45:07","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=463154"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=463154","title":{"rendered":"<span>\u0427\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043c\u0435\u0442\u044c AI-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 Java \u0442\u0435\u0441\u0442\u043e\u0432<\/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-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u042d\u0442\u043e \u0432\u043e\u043f\u0440\u043e\u0441 \u043c\u044b \u0437\u0430\u0434\u0430\u0435\u043c \u0441\u0435\u0431\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0434\u043e \u0438 \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u044b. \u0418 \u0435\u0449\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0438\u0441\u043a\u0430\u0442\u044c \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430\u0433\u0435\u043d\u0435\u0440\u0438\u0442 AI-\u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043d\u0442. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043e\u0431\u0441\u0443\u0434\u0438\u043c, \u043d\u0430 \u043a\u0430\u043a\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u043a\u0430\u043a\u0438\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 Java \u0442\u0435\u0441\u0442\u043e\u0432 \u0438 \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0430\u043b\u0435\u043a\u0430 \u043c\u0435\u0447\u0442\u0430 \u043e\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p> <\/p>\n<h2 id=\"na-kogo-budem-smotret\">\u041d\u0430 \u043a\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u043c \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c?<\/h2>\n<p><a name=\"habracut\"><\/a> <\/p>\n<p>\u041a\u0430\u043a Java \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430\u043c, \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d:<\/p>\n<p> <\/p>\n<ol>\n<li>\u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f IDEA<\/li>\n<li>\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u044b<\/li>\n<li>\u043a\u0440\u043e\u043c\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u0441\u0442\u043e\u0432, \u0434\u0430\u044e\u0449\u0438\u0439 \u0434\u0440\u0443\u0433\u0438\u0435 AI \u0444\u0438\u0448\u043a\u0438<\/li>\n<li>\u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439, \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u043a\u043e\u043b\u0435\u043d\u043a\u0435 \u0437\u0430 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435<\/li>\n<\/ol>\n<p> <\/p>\n<p>AI \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043c\u0430\u0440\u043a\u0435\u0442\u043f\u043b\u0435\u0439\u0441\u0435 \u0441\u0435\u0439\u0447\u0430\u0441 \u0442\u044b\u0441\u044f\u0447\u0438, \u0438 4. \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0435\u043c \u0441\u0440\u0435\u0437\u0430\u044e\u0442\u0441\u044f \u043e\u043d\u0438 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435.<br \/> \u0418\u0437 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0445 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 Continue \u0438 Proxy AI (CodeGPT), \u043e\u0434\u043d\u0430\u043a\u043e \u043e\u043d\u0438 \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043d\u0430 VSCode \u0438 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 IDEA \u0432\u0441\u0451 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0442\u0443\u0433\u043e: \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0438\u0445 \u043f\u0435\u0440\u0435\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e \u0438 \u043f\u0440\u043e\u0431\u0443\u044e \u0441\u043d\u043e\u0432\u0430, \u043d\u043e \u043e\u043d\u0438 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0432\u044b\u0434\u0430\u044e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438. Continue.dev \u0435\u0449\u0451 \u0438 \u0432\u0435\u0448\u0430\u0435\u0442 IDEA \u043d\u0430\u043c\u0435\u0440\u0442\u0432\u043e \u2013 \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0430\u043c \u043d\u0435 \u043d\u0430\u0434\u043e. \u041d\u0438\u0447\u0435\u0433\u043e \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043e\u043d\u0438 \u043d\u0435 \u0434\u0435\u043b\u0430\u044e\u0442, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0430\u0434\u0440\u0435\u0441\u0443\u044e\u0442 \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u043f\u0438\u0448\u0438\u0442\u0435 \u0432 \u0447\u0430\u0442\u0435, \u043d\u0430 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432, \u0442\u0430\u043a \u0447\u0442\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0438\u0445 \u0432\u043e\u0437\u044c\u043c\u0451\u043c \u043f\u0440\u043e\u0441\u0442\u043e ChatGPT-4o (\u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043d\u0430\u0441 \u0445\u043e\u0442\u044c \u0440\u0430\u0437 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u0434 \u0438\u0437 IDE \u0432 chatgpt.com, \u0442\u0430\u043a \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u043e).<\/p>\n<p> <\/p>\n<p>\u0418\u0437 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u044e\u0449\u0438\u0445 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044e 4. \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b:<\/p>\n<p> <\/p>\n<ol>\n<li>ChatGPT-4o: \u0440\u0443\u0447\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 chatgpt.com, \u043a\u0430\u043a \u043c\u044b \u043e\u043f\u0438\u0441\u0430\u043b\u0438 \u0432\u044b\u0448\u0435.<\/li>\n<li>JetBrains AI Assistant: \u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043d\u0442 \u043e\u0442 JetBrains, \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434 IDEA \u2013 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043b\u0443\u0447\u0448\u0438\u043c \u0432 \u043f\u043b\u0430\u043d\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 IDE \u0438 \u0440\u0430\u0431\u043e\u0447\u0438\u043c\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438 Java \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430.<\/li>\n<li>GigaCode: \u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043d\u0442 \u043e\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0421\u0431\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 GigaIDE, \u043d\u043e \u0438 \u0441 \u043b\u044e\u0431\u044b\u043c\u0438 IDEA-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0430\u043c\u0438.<\/li>\n<li>Qodo: \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043d\u0442 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u0441\u0442\u043e\u0432.<\/li>\n<li><a href=\"https:\/\/explyt.ai\/?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=ai_assistant_may25\">Explyt Test<\/a>: \u043d\u0430\u0448 \u043f\u043b\u0430\u0433\u0438\u043d, \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 \u0442\u0435\u0441\u0442\u043e\u0432 \u0434\u043b\u044f Java \u0438 Kotlin. \u0424\u0438\u0448\u043a\u0438 AI \u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u0430 \u0432 \u043d\u0451\u043c \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c. <\/li>\n<\/ol>\n<p> <\/p>\n<h2 id=\"kachestvo-generiruemyh-testov\">\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0442\u0435\u0441\u0442\u043e\u0432<\/h2>\n<p> <\/p>\n<h3 id=\"na-chyom-meryaem\">\u041d\u0430 \u0447\u0451\u043c \u043c\u0435\u0440\u044f\u0435\u043c?<\/h3>\n<p> <\/p>\n<p>\u0421\u0430\u043c\u043e\u0435 \u0432\u0430\u0436\u043d\u043e\u0435 \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0442\u0435\u0441\u0442\u044b, \u044d\u0442\u043e, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b.<\/p>\n<p> <\/p>\n<p>\u041c\u044b \u0432\u0437\u044f\u043b\u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0432\u044b\u0448\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0438 \u043f\u0440\u043e\u0433\u043d\u0430\u043b\u0438 \u0438\u0445 \u0442\u0435\u0441\u0442\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u043d\u0430 \u043d\u0430\u0448\u0435\u043c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0435. \u0411\u0435\u043d\u0447\u043c\u0430\u0440\u043a \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 27 Java, Kotlin, Spring \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0441 JUnit 4, JUnit 5, TestNG, Mockito, Mockk \u2014 \u0432 \u043e\u0431\u0449\u0435\u043c, \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u043c\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432 \u0432 \u043a\u043e\u0434\u0435 \u0438 \u0432 \u0442\u0435\u0441\u0442\u0430\u0445.<\/p>\n<p> <\/p>\n<p>\u0412 \u043d\u0430\u0448\u0435\u043c \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0435 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0441 GitHub, \u0442\u0430\u043a \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0434\u0440\u0443\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 Enterprise \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439, \u043d\u0430\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0431\u043e\u043b\u0435\u0435 \u0442\u044b\u0441\u044f\u0447\u0438 Java \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u0412 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0431\u044b\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u044b \u043a\u043b\u0430\u0441\u0441\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0438\u0448\u0443\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0438\u0434\u044b \u0442\u0435\u0441\u0442\u043e\u0432: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b, \u0441\u0435\u0440\u0432\u0438\u0441\u044b, util \u043a\u043b\u0430\u0441\u0441\u044b \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.<\/p>\n<p> <\/p>\n<h3 id=\"chto-meryaem\">\u0427\u0442\u043e \u043c\u0435\u0440\u044f\u0435\u043c?<\/h3>\n<p> <\/p>\n<p>\u0412 \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0435\u043c \u0438\u043b\u0438 \u0438\u043d\u044b\u043c \u043f\u0443\u0442\u0451\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u043e \u043a\u043b\u0430\u0441\u0441\u0443 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441. \u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u0438\u0437\u043c\u0435\u0440\u044f\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0443 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430.<\/p>\n<p> <\/p>\n<p><strong>\u041f\u0435\u0440\u0432\u0430\u044f \u043c\u0435\u0442\u0440\u0438\u043a\u0430 \u2014 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u044c<\/strong>. \u041f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u043c\u0435\u0442\u0440\u0438\u043a\u0430?<\/p>\n<p> <\/p>\n<p>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043e\u043d\u0430 \u043a\u043e\u0440\u0440\u0435\u043b\u0438\u0440\u0443\u0435\u0442 \u0441 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, GPT-3.5 \u0432 \u0441\u0440\u0435\u0434\u043d\u0435\u043c \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u043c\u0435\u043d\u0435\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043a\u043e\u0434, \u0447\u0435\u043c GPT-4 (\u043d\u0430 \u0442\u0435\u0445 \u0436\u0435 \u043f\u0440\u043e\u043c\u043f\u0442\u0430\u0445).<\/p>\n<p> <\/p>\n<p>\u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043e\u043d\u0430 \u043a\u043e\u0440\u0440\u0435\u043b\u0438\u0440\u0443\u0435\u0442 \u0441 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0433\u043e \u043f\u0440\u043e\u043c\u043f\u0442\u0430. \u0412\u044b \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u0441\u044c, \u043d\u043e \u0434\u0430\u0436\u0435 \u0432 2025 \u0433\u043e\u0434\u0443 \u0438 \u0434\u0430\u0436\u0435 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 SOTA \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438 \u0435\u0441\u0442\u044c \u0440\u0430\u0437\u043d\u0438\u0446\u0430, \u043a\u0430\u043a\u043e\u0439 \u0443 \u0432\u0430\u0441 \u043f\u0440\u043e\u043c\u043f\u0442: &#171;Write tests please&#187; \u0438\u043b\u0438 \u043e\u0434\u0438\u043d \u044d\u043a\u0440\u0430\u043d \u0442\u0435\u043a\u0441\u0442\u0430 \u0441 \u0434\u0435\u0442\u0430\u043b\u044f\u043c\u0438 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f.<\/p>\n<p> <\/p>\n<p>\u0412-\u0442\u0440\u0435\u0442\u044c\u0438\u0445, \u044d\u0442\u0430 \u043c\u0435\u0442\u0440\u0438\u043a\u0430 \u043a\u043e\u0440\u0440\u0435\u043b\u0438\u0440\u0443\u0435\u0442 \u0441 \u0442\u0435\u043c, \u043a\u0430\u043a \u043f\u043b\u0430\u0433\u0438\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u043e\u0439, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e: \u043a\u0430\u043a \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043a\u043e\u0434\u0430. \u041d\u0430\u0448\u0438 \u043a\u043b\u0430\u0441\u0441\u044b \u043d\u0435 \u0436\u0438\u0432\u0443\u0442 \u0441\u0430\u043c\u0438 \u043f\u043e \u0441\u0435\u0431\u0435: \u043e\u043d\u0438 \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430, \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438 \u0442.\u043f. \u0415\u0441\u043b\u0438 \u0432\u044b \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u0442\u0435 \u043c\u0435\u0442\u043e\u0434, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0442\u043e \u0443 \u0432\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0435\u0441\u0442\u044b \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0430\u043c\u0438 \u044d\u0442\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430. \u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0445\u043e\u0440\u043e\u0448\u0438\u0445 \u0442\u0435\u0441\u0442\u043e\u0432. \u042d\u0442\u043e \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u0432\u0430\u0436\u043d\u043e \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 Spring, \u0432\u0435\u0434\u044c \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f dependency injection \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u044f\u0432\u043d\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043e \u043a\u043e\u0434\u0443. \u0415\u0441\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0430\u043b\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u0434\u0430, LLM \u0431\u0443\u0434\u0435\u0442 \u0433\u0430\u043b\u043b\u044e\u0446\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043a\u043e\u0434 \u0442\u0435\u0441\u0442\u043e\u0432 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f. \u0415\u0441\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d \u0441\u043e\u0431\u0435\u0440\u0451\u0442 \u043b\u0438\u0448\u043d\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442, \u0434\u0430\u0436\u0435 \u0443\u043c\u043d\u0430\u044f \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0431\u0443\u0434\u0435\u0442 \u043f\u0443\u0442\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p> <\/p>\n<p><strong>\u0412\u0442\u043e\u0440\u0430\u044f \u043c\u0435\u0442\u0440\u0438\u043a\u0430 \u2014 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435<\/strong>. \u041e\u043d\u0430, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0442\u0435\u0441\u0442\u044b \u0445\u043e\u0440\u043e\u0448\u0438\u0435, \u043e\u0434\u043d\u0430\u043a\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443: \u0435\u0441\u043b\u0438 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043a\u043e\u0434 \u043d\u0435 \u043f\u043e\u043a\u0440\u044b\u0442 \u0442\u0435\u0441\u0442\u0430\u043c\u0438, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u0431\u0430\u0433. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u044b \u043e\u0436\u0438\u0434\u0430\u0435\u043c \u043e\u0442 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u0441\u0442\u043e\u0432 \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044f.<\/p>\n<p> <\/p>\n<h3 id=\"rezultaty-sravneniya\">\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f<\/h3>\n<p> <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th>\u041c\u0435\u0442\u0440\u0438\u043a\u0430<\/th>\n<th>JetBrains AI assistant<\/th>\n<th>Qodo<\/th>\n<th>GigaCode<\/th>\n<th>ChatGPT-4o**<\/th>\n<th><a href=\"https:\/\/explyt.ai\/?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=ai_assistant_may25\">Explyt Test<\/a><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u0414\u043e\u043b\u044f \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432<\/td>\n<td>26%*<\/td>\n<td>30%*<\/td>\n<td>33%*<\/td>\n<td>26%*<\/td>\n<td>70%<\/td>\n<\/tr>\n<tr>\n<td>\u0422\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435<\/td>\n<td>17%<\/td>\n<td>28%<\/td>\n<td>27%<\/td>\n<td>11%<\/td>\n<td>38%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p> <\/p>\n<p>\u0412 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0445 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u044e\u0430\u043d\u0441\u043e\u0432.<\/p>\n<p> <\/p>\n<p>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043d\u0430\u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 <code>ChatGPT-4o**<\/code>. \u042d\u0442\u043e \u043d\u0435 \u043f\u043b\u0430\u0433\u0438\u043d, \u0430 \u0438\u043c\u0438\u0442\u0430\u0446\u0438\u044f \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u043f\u043e \u0441\u0443\u0442\u0438 \u0430\u043d\u0430\u043b\u043e\u0433 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u0432\u0440\u043e\u0434\u0435 CodeGPT \u0438\u043b\u0438 Continue.dev: \u043c\u044b \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0438 \u043f\u0440\u043e\u0441\u0438\u043c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0442\u0435\u0441\u0442\u044b \u043d\u0430 chatgpt.com (\u0441 GPT-4o).<\/p>\n<p> <\/p>\n<p>\u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, <code>*<\/code> \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u044b \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0445 \u0440\u0443\u0447\u043d\u044b\u0445 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 (\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432). \u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0441 \u044d\u0442\u043e\u0439 \u043c\u0435\u0442\u043a\u043e\u0439 \u043b\u0438\u0431\u043e \u043d\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043d\u0443\u0436\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b, \u043b\u0438\u0431\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043d\u0435 \u0432\u0441\u0435, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u043e\u0448\u0438\u0431\u043e\u043a \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0431\u044b\u043b\u043e \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0432\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u043d\u0443\u0436\u043d\u044b\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u044b \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u043e\u0432\u0435\u043b\u0438 \u0437\u0430\u043c\u0435\u0440\u044b. \u0421\u043f\u0430\u0441\u0438\u0431\u043e IDEA, \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043b\u0435\u0433\u043a\u043e \u0447\u0435\u0440\u0435\u0437 Alt-Enter, \u043d\u043e \u0434\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a: \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0434\u0443\u043c\u0430\u0442\u044c. \u042d\u0442\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043d\u0435 \u0432 \u043f\u043e\u043b\u044c\u0437\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u0445 \u0437\u0432\u0451\u0437\u0434\u043e\u0447\u043a\u043e\u0439 * \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0431\u0435\u0437 \u0440\u0443\u0447\u043d\u043e\u0439 \u043f\u0440\u0430\u0432\u043a\u0438 \u043a\u043e\u0434\u0430 \u043d\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0438 \u043e\u0434\u0438\u043d \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441.<\/p>\n<p> <\/p>\n<p>\u0412-\u0442\u0440\u0435\u0442\u044c\u0438\u0445, \u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u043d\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, JetBrains AI assistant \u0438 GigaCode \u0432 7% \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432 \u043e\u0431\u0440\u044b\u0432\u0430\u043b\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0442\u0435\u0441\u0442\u0430 \u043d\u0430 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0451 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c.<\/p>\n<p> <\/p>\n<p>Qodo \u0432 4% \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0439 \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0441\u0443 \u0441 \u043e\u0434\u043d\u0438\u043c \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u0435\u0439\u0441. GigaCode \u0432 3% \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0439 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u043b \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u043e\u0434\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u0442.\u0435. \u043a\u043e\u0434 \u0432\u0438\u0434\u0430:<\/p>\n<p> <\/p>\n<pre><code class=\"kotlin\">@Test fun test() {   \/\/ Write code yourself }<\/code><\/pre>\n<p> <\/p>\n<h2 id=\"chto-instrumenty-sgenerirovali\">\u0427\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438?<\/h2>\n<p> <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u041c\u044b \u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e 2 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u0430 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e.<\/p>\n<p> <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">JetBrains AI assistant<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"java\">package com.commerce.backend.api;  import com.commerce.backend.model.request.order.PostOrderRequest; import com.commerce.backend.model.response.order.OrderResponse; import com.commerce.backend.service.OrderService; import org.junit.jupiter.api.Test; import org.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc;  import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.hamcrest.Matchers.is;  @SpringBootTest @AutoConfigureMockMvc public class OrderControllerTest {      @Autowired     private MockMvc mockMvc;      @MockBean     private OrderService orderService;      @Test     public void postOrder_withInvalidShipName_shouldReturnBadRequest() throws Exception {         mockMvc.perform(post(\"\/order\")                         .contentType(MediaType.APPLICATION_JSON)                         .content(\"\"\"                                 {                                     \"shipName\": \"\",                                     \"shipAddress\": \"123 Main St\",                                     \"billingAddress\": \"123 Main St\",                                     \"city\": \"Springfield\",                                     \"state\": \"Illinois\",                                     \"zip\": \"62704\",                                     \"country\": \"USA\",                                     \"phone\": \"12345678901\"                                 }                                 \"\"\"))                 .andExpect(status().isBadRequest())                 .andExpect(jsonPath(\"$.shipName\", is(\"must not be blank\")));     }      @Test     public void postOrder_withMissingFields_shouldReturnBadRequest() throws Exception {         mockMvc.perform(post(\"\/order\")                         .contentType(MediaType.APPLICATION_JSON)                         .content(\"\"\"                                 {                                     \"shipName\": \"\",                                     \"shipAddress\": \"\",                                     \"billingAddress\": \"\",                                     \"city\": \"\",                                     \"state\": \"\",                                     \"zip\": \"\",                                     \"country\": \"\",                                     \"phone\": \"\"                                 }                                 \"\"\"))                 .andExpect(status().isBadRequest());     } }<\/code><\/pre>\n<\/div><\/div>\n<p> <\/p>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, JetBrains AI Assistant \u043f\u043e\u0441\u044b\u043b\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432 \u0432\u0438\u0434\u0435 \u0441\u0442\u0440\u043e\u043a \u0441 JSON&#8217;\u0430\u043c\u0438, \u0430 \u043d\u0435 \u0441\u0442\u0440\u043e\u0438\u0442 Java \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c <code>ObjectMapper<\/code>&#8216;\u0430.<\/p>\n<p> <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">Qodo<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"java\">package com.commerce.backend.api; \/\/ Generated by Qodo Gen  import com.commerce.backend.api.OrderController; import com.commerce.backend.error.exception.InvalidArgumentException; import com.commerce.backend.service.OrderService; import org.junit.Test; import org.mockito.Mockito; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity;  import static org.junit.Assert.*;  public class OrderControllerTest {      \/\/ getAllOrdersCount returns order count with HTTP 200 status     @Test     public void test_get_all_orders_count_returns_count_with_ok_status() {         \/\/ Arrange         OrderService orderService = Mockito.mock(OrderService.class);         OrderController orderController = new OrderController(orderService);         Integer expectedCount = 5;         Mockito.when(orderService.getAllOrdersCount()).thenReturn(expectedCount);          \/\/ Act         ResponseEntity&lt;Integer&gt; response = orderController.getAllOrdersCount();          \/\/ Assert         assertEquals(HttpStatus.OK, response.getStatusCode());         assertEquals(expectedCount, response.getBody());         Mockito.verify(orderService).getAllOrdersCount();     }      \/\/ getAllOrders with negative page value throws InvalidArgumentException     @Test     public void test_get_all_orders_with_negative_page_throws_exception() {         \/\/ Arrange         OrderService orderService = Mockito.mock(OrderService.class);         OrderController orderController = new OrderController(orderService);         Integer negativePage = -1;         Integer validPageSize = 10;          \/\/ Act &amp; Assert         InvalidArgumentException exception = assertThrows(                 InvalidArgumentException.class,                 () -&gt; orderController.getAllOrders(negativePage, validPageSize)         );          assertEquals(\"Invalid page\", exception.getMessage());         Mockito.verify(orderService, Mockito.never()).getAllOrders(Mockito.anyInt(), Mockito.anyInt());     } }<\/code><\/pre>\n<\/div><\/div>\n<p> <\/p>\n<p>Qodo \u0432\u0441\u044e \u043b\u043e\u0433\u0438\u043a\u0443 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043c\u043e\u043a\u0438 <code>OrderService<\/code>. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, Qodo \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u044e\u043d\u0438\u0442 \u0442\u0435\u0441\u0442, \u0430 \u043d\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439.<\/p>\n<p> <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">GigaCode<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"java\">package com.commerce.backend.api;  import com.commerce.backend.error.exception.InvalidArgumentException; import com.commerce.backend.model.request.order.PostOrderRequest; import com.commerce.backend.model.response.order.OrderResponse; import com.commerce.backend.service.OrderService; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity;  import java.util.Arrays; import java.util.List;  import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.*;  @ExtendWith(MockitoExtension.class) public class OrderControllerTest {      @Mock     private OrderService orderService;      @InjectMocks     private OrderController orderController;      private PostOrderRequest postOrderRequest;     private OrderResponse orderResponse;      @BeforeEach     public void setUp() {         postOrderRequest = new PostOrderRequest();         orderResponse = new OrderResponse();     }      @Test     public void testGetAllOrders() {         List&lt;OrderResponse&gt; orders = Arrays.asList(orderResponse);         when(orderService.getAllOrders(0, 10)).thenReturn(orders);          ResponseEntity&lt;List&lt;OrderResponse&gt;&gt; response = orderController.getAllOrders(0, 10);          assertEquals(HttpStatus.OK, response.getStatusCode());         assertEquals(orders, response.getBody());         verify(orderService, times(1)).getAllOrders(0, 10);     }      @Test     public void testGetAllOrdersWithInvalidPage() {         assertThrows(InvalidArgumentException.class, () -&gt; orderController.getAllOrders(-1, 10));     } }<\/code><\/pre>\n<\/div><\/div>\n<p> <\/p>\n<p>GigaCode \u0442\u0430\u043a\u0436\u0435 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u044e\u043d\u0438\u0442 \u0442\u0435\u0441\u0442, \u0430 \u043d\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 Qodo, \u043e\u0431\u0449\u0438\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u043e\u043d \u0432\u044b\u043d\u0435\u0441 \u0432 \u043f\u043e\u043b\u044f \u0438 <code>setUp<\/code> \u043c\u0435\u0442\u043e\u0434.<\/p>\n<p> <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">ChatGPT-4o<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"java\">package com.commerce.backend.api;  import org.junit.jupiter.api.Test; import org.mockito.MockBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; import com.commerce.backend.api.OrderController; import com.commerce.backend.service.OrderService; import com.commerce.backend.model.response.OrderResponse; import com.commerce.backend.model.request.PostOrderRequest; import java.util.ArrayList; import java.util.List; import static org.mockito.Mockito.when;  @WebMvcTest(OrderController.class) public class OrderControllerTest {      @Autowired     private MockMvc mockMvc;      @MockBean     private OrderService orderService;      @Test     public void testGetAllOrdersCount() throws Exception {         when(orderService.getAllOrdersCount()).thenReturn(5);          mockMvc.perform(MockMvcRequestBuilders.get(\"\/order\/count\"))                 .andExpect(MockMvcResultMatchers.status().isOk())                 .andExpect(MockMvcResultMatchers.content().string(\"5\"));     }      @Test     public void testPostOrder_ValidRequest() throws Exception {         PostOrderRequest postOrderRequest = new PostOrderRequest(\/* parameters *\/);         OrderResponse orderResponse = new OrderResponse(\/* parameters *\/);         when(orderService.postOrder(postOrderRequest)).thenReturn(orderResponse);          mockMvc.perform(MockMvcRequestBuilders.post(\"\/order\")                 .contentType(MediaType.APPLICATION_JSON)                 .content(\/* JSON representation of postOrderRequest *\/))                 .andExpect(MockMvcResultMatchers.status().isOk())                 .andExpect(MockMvcResultMatchers.jsonPath(\"$.id\").value(orderResponse.getId()));     } }<\/code><\/pre>\n<\/div><\/div>\n<p> <\/p>\n<p>ChatGPT-4o \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b, \u043e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u043b\u0435\u043d\u0438\u043b\u0441\u044f \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u043b \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u043e\u0434\u0430: <code>\/* JSON representation of postOrderRequest *\/<\/code> \u0438 <code>\/* parameters *\/<\/code>. \u042d\u0442\u043e\u0442 \u043a\u043e\u0434, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0435 \u0441\u043a\u043e\u043c\u043f\u0438\u0440\u0438\u043b\u0443\u0435\u0442\u0441\u044f.<\/p>\n<p> <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">Explyt Test<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"java\">package com.commerce.backend.api;  import com.commerce.backend.model.request.order.PostOrderRequest; import com.commerce.backend.model.response.order.OrderResponse; import com.commerce.backend.service.OrderService; import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.result.MockMvcResultMatchers;  import java.util.Collections; import java.util.List;  import static org.mockito.Mockito.when;  @WebMvcTest(OrderController.class) public class OrderControllerTest {      \/\/region Generated with Explyt. Tests for OrderController      @Autowired     private MockMvc mockMvc;      @MockBean     private OrderService orderService;      \/**      * Given there are multiple orders in the system&lt;br&gt;      * And an invalid page size is specified (e.g., negative number)&lt;br&gt;      * When a request is made to retrieve the orders with the invalid page size&lt;br&gt;      * Then the system should throw an \"Invalid pageSize\" error      *\/     @Test     public void testGetAllOrdersWithInvalidPageSize() throws Exception {         Integer page = 0;         Integer invalidPageSize = -1;          mockMvc.perform(MockMvcRequestBuilders.get(\"\/order\")                         .param(\"page\", String.valueOf(page))                         .param(\"size\", String.valueOf(invalidPageSize)))                 .andExpect(MockMvcResultMatchers.status().isBadRequest())                 .andExpect(MockMvcResultMatchers.content().string(\"Invalid pageSize\"));     }      \/**      * Given a valid order request with all necessary shipping and billing details&lt;br&gt;      * When a request is made to create a new order&lt;br&gt;      * Then the system should successfully create the order&lt;br&gt;      * And return the order details in the response      *\/     @Test     public void testPostOrderWithValidDetails() throws Exception {         PostOrderRequest postOrderRequest = new PostOrderRequest();         postOrderRequest.setShipName(\"John Doe\");         postOrderRequest.setShipAddress(\"123 Main St\");         postOrderRequest.setBillingAddress(\"123 Main St\");         postOrderRequest.setCity(\"Anytown\");         postOrderRequest.setState(\"State\");         postOrderRequest.setZip(\"12345\");         postOrderRequest.setCountry(\"Country\");         postOrderRequest.setPhone(\"1234567890\");          OrderResponse expectedOrderResponse = new OrderResponse();         when(orderService.postOrder(postOrderRequest)).thenReturn(expectedOrderResponse);          mockMvc.perform(MockMvcRequestBuilders.post(\"\/order\")                         .contentType(MediaType.APPLICATION_JSON)                         .content(new ObjectMapper().writeValueAsString(postOrderRequest)))                 .andExpect(MockMvcResultMatchers.status().isOk())                 .andExpect(MockMvcResultMatchers.jsonPath(\"$.shipName\").value(\"John Doe\"));     }      \/\/endregion  }<\/code><\/pre>\n<\/div><\/div>\n<p> <\/p>\n<p>Explyt Test \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u043d\u0435 \u043e\u0441\u0442\u0430\u0432\u0438\u043b <code>\/\/TODO<\/code> \u0434\u044b\u0440\u043e\u043a, \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043b Java \u043a\u043e\u0434\u043e\u043c. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u043d\u0430 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0435, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u0435\u0441\u0442.<\/p>\n<p> <\/p>\n<h2 id=\"chto-trebuetsya-ot-generacii-testov-krome-kachestva-samih-testov\">\u0427\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043e\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u0441\u0442\u043e\u0432 \u043a\u0440\u043e\u043c\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u0441\u0430\u043c\u0438\u0445 \u0442\u0435\u0441\u0442\u043e\u0432?<\/h2>\n<p> <\/p>\n<p>\u041a\u043e\u0434 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u0432\u0430\u043a\u0443\u0443\u043c\u0435 \u2013 \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0447\u0430\u0441\u0442\u044c\u044e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b.<br \/> \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u0441\u0442\u043e\u0432 \u0434\u043e\u043b\u0436\u0435\u043d:<\/p>\n<p> <\/p>\n<ol>\n<li>\u041f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0442\u0435\u0441\u0442\u043e\u0432 \u043d\u0435 \u0432 \u0441\u0432\u043e\u0451\u043c \u043e\u0442\u043e\u0440\u0432\u0430\u043d\u043d\u043e\u043c \u043e\u0442 \u043a\u043e\u0434\u0430 \u0447\u0430\u0442 \u043e\u043a\u043d\u0435, \u0430 \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u0432 \u043d\u0443\u0436\u043d\u043e\u043c source \u0440\u0443\u0442\u0435.<\/li>\n<li>\u041a\u043e\u0434 \u0442\u0435\u0441\u0442\u043e\u0432 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0438\u043b\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043f\u0440\u0438\u043d\u044f\u0442\u043e\u043c \u0432 \u0432\u0430\u0448\u0435\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438.<\/li>\n<\/ol>\n<p> <\/p>\n<p>\u041a\u0430\u043a\u0438\u0435 \u0438\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u044e\u0442 \u044d\u0442\u0438\u043c \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044f\u043c?<\/p>\n<p> <\/p>\n<ol>\n<li>\u0420\u0443\u0447\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 chatgpt.com \u0438\u043c \u043d\u0435 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u0442: \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0434\u0443\u043c\u0430\u0442\u044c, \u043a\u0443\u0434\u0430 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u0438\u0437 \u0447\u0430\u0442\u0430. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0442\u0438\u043b\u044c \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438\u043b\u0438 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u043a\u0430\u043a \u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u043e \u0438\u0445 \u043d\u0443\u0436\u043d\u043e, \u043e\u043f\u044f\u0442\u044c \u0436\u0435, \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c, \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0438\u0441\u043a\u0430\u0442\u044c.<\/li>\n<li>JetBrains AI Assistant \u0438\u043c \u0442\u0430\u043a\u0436\u0435 \u043d\u0435 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u0442. \u041f\u0440\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u0442\u0435\u0441\u0442\u0430 \u043e\u043d \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0434\u0438\u0444\u0444 \u0441 \u043a\u043e\u0434\u043e\u043c. \u0415\u0441\u043b\u0438 \u0434\u0438\u0444\u0444 \u043f\u0440\u0438\u043d\u044f\u0442\u044c, \u043e\u043d \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0432 \u0442\u043e\u0439 \u0436\u0435 \u043f\u0430\u043f\u043a\u0435, \u0433\u0434\u0435 \u0432\u0430\u0448 \u043a\u043b\u0430\u0441\u0441, \u0442.\u0435., \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043f\u0430\u043f\u043a\u0435 <code>src\/main\/org\/example\/com\/service<\/code> \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u043a\u043b\u0430\u0441\u0441\u0443 <code>MyService.java<\/code> \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0441\u044f \u0444\u0430\u0439\u043b <code>MyServiceTest.java<\/code>.<\/li>\n<li>GigaCode \u0438\u043c \u043d\u0435 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u0442, \u0442.\u043a. \u0432\u044b\u0434\u0430\u0451\u0442 \u043a\u043e\u0434 \u043f\u0440\u043e\u0441\u0442\u043e \u0432 \u0447\u0430\u0442\u0435.<\/li>\n<li>Qodo \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u0442 \u044d\u0442\u0438\u043c \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044f\u043c: \u043e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0443\u0434\u0430 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0438 \u043a\u0430\u043a\u043e\u0439 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0444\u0435\u0440\u0435\u043d\u0441\u0430 \u0441\u0442\u0438\u043b\u044f. <\/li>\n<li>Explyt Test \u043e\u0431\u043e\u0438\u043c \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044f\u043c \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u0442. \u041c\u044b \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0438\u0441\u044c \u0441\u043d\u044f\u0442\u044c \u0441 \u0432\u0430\u0441 \u043b\u0438\u0447\u043d\u0443\u044e \u043c\u0435\u0445\u0430\u043d\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u0430\u0441\u0442 \u0442\u0438\u043f\u043e\u0432\u043e\u0435 \u0438\u043c\u044f \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0441\u0443, \u0441\u0430\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442, \u043a\u0443\u0434\u0430 \u0435\u0433\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0430\u043c \u043d\u0430\u0439\u0434\u0451\u0442 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0444\u0435\u0440\u0435\u043d\u0441\u0430 \u0441\u0442\u0438\u043b\u044f. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0445 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f. <\/li>\n<\/ol>\n<p> <\/p>\n<p>\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u044d\u0442\u043e \u0432\u043e\u0442 \u0442\u0430\u043a:<br \/> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ng\/p3\/3j\/ngp33jgxfojrhvcesmwvhkme69c.png\" alt=\"image\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/ng\/p3\/3j\/ngp33jgxfojrhvcesmwvhkme69c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/ng\/p3\/3j\/ngp33jgxfojrhvcesmwvhkme69c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p> <\/p>\n<h2 id=\"kakie-est-ne-svyazannye-s-testami-trebovaniya\">\u041a\u0430\u043a\u0438\u0435 \u0435\u0441\u0442\u044c \u043d\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0442\u0435\u0441\u0442\u0430\u043c\u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f?<\/h2>\n<p> <\/p>\n<p>\u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u0441\u0430\u043c\u044b\u0439 \u0432\u0430\u0436\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441: \u043a\u0443\u0434\u0430 \u043f\u043e\u0439\u0434\u0451\u0442 \u043c\u043e\u0439 \u043a\u043e\u0434? (<del>\u0443\u0431\u044c\u044e\u0442 \u043b\u0438 \u043c\u0435\u043d\u044f security \u0432 \u043c\u043e\u0435\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438?<\/del>)<br \/> \u0423 \u0432\u0441\u0435\u0445 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u0430\u0448 \u043a\u043e\u0434 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0433\u0434\u0435 \u0435\u0433\u043e \u043c\u043e\u0433\u0443\u0442 \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c (\u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044f). \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0432\u0430\u043c \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0438\u0447\u0435\u0433\u043e: \u0432\u0430\u0448 \u043a\u043e\u0434 \u043c\u043e\u0436\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f, \u0435\u0433\u043e \u043c\u043e\u0433\u0443\u0442 \u0432\u0438\u0434\u0435\u0442\u044c \u043b\u044e\u0434\u0438, \u043d\u0430 \u043d\u0451\u043c \u043c\u043e\u0433\u0443\u0442 \u043e\u0431\u0443\u0447\u0430\u0442\u044c\u0441\u044f \u043d\u043e\u0432\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0442.\u043f. \u041a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f, &#171;\u0435\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e, \u0437\u043d\u0430\u0447\u0438\u0442 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u2013 \u044d\u0442\u043e \u0442\u044b&#187;.<\/p>\n<p> <\/p>\n<p>\u041f\u0440\u043e\u0434\u0443\u043a\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u0434\u0430\u0442\u044c \u0432\u0430\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u0440\u0435\u0441\u0442\u0438 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u0432\u0430\u0448\u0438\u043c \u043a\u043e\u0434\u043e\u043c.<\/p>\n<p> <\/p>\n<ol>\n<li>\n<p>\u041f\u043b\u0430\u0433\u0438\u043d \u043c\u043e\u0436\u0435\u0442 \u0434\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 \u0441\u043e \u0441\u0432\u043e\u0438\u043c API \u043a\u043b\u044e\u0447\u043e\u043c. \u0422\u043e\u0433\u0434\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0443\u043f\u0438\u0442\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443 \u043e\u0442 OpenAI, \u0432 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u043e\u043d\u043d\u043e\u043c \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e, \u0447\u0442\u043e \u0441 \u0432\u0430\u0448\u0438\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0431\u0443\u0434\u0443\u0442. \u041f\u043b\u044e\u0441\u044b: \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043f\u0435\u0440\u0435\u0434\u043e\u0432\u044b\u043c \u043c\u043e\u0434\u0435\u043b\u044f\u043c, \u0432\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0430 (\u0432\u044b \u0443\u0436\u0435 \u0437\u0430\u043f\u043b\u0430\u0442\u0438\u043b\u0438 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0443). \u041c\u0438\u043d\u0443\u0441\u044b: \u0432\u0430\u0448 \u043a\u043e\u0434 \u0432\u0441\u0451 \u0435\u0449\u0451 \u043d\u0430 \u0447\u044c\u0438\u0445-\u0442\u043e \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0435 \u0432 \u0420\u043e\u0441\u0441\u0438\u0438.<\/p>\n<p> <\/li>\n<li>\n<p>\u041f\u043b\u0430\u0433\u0438\u043d \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0435\u0440\u0435\u0437 Ollama \u0438\u043b\u0438 LM Studio). \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0432\u044b \u043d\u0435 \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c, \u043f\u043e\u0442\u043e\u043c\u0443 \u043a\u0430\u043a \u043d\u0430 \u0441\u0440\u0435\u0434\u043d\u0435\u043c \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e ~14B \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 4 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 (\u0435\u0441\u043b\u0438 \u0441\u0440\u0435\u0434\u043d\u0438\u0439 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u043d\u0430 Java 1500 \u0442\u043e\u043a\u0435\u043d\u043e\u0432, \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0436\u0434\u0430\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0430 1500 \/ 4 = 375 \u0441\u0435\u043a\u0443\u043d\u0434 = 6.25 \u043c\u0438\u043d\u0443\u0442). \u041b\u0443\u0447\u0448\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u0434\u0430\u0432\u0430\u0442\u044c \u0432\u0430\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u0430\u043a \u0443 gpt-3.5-turbo, \u0442.\u0435. \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c <em>\u0447\u0442\u043e-\u0442\u043e<\/em>, \u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0451 \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u0451 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0439 GPU (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 4090 \u0438\u043b\u0438 5090), \u0442\u043e \u0432\u044b \u0432 \u043b\u0443\u0447\u0448\u0435\u043c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u043d\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0451\u043d\u043d\u044b\u0445 \u0442\u0435\u0441\u0442\u043e\u0432 \u0432\u0441\u0451 \u0435\u0449\u0451 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0438\u0437\u043a\u0438\u043c, \u043a\u0430\u043a \u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438. \u041f\u043b\u044e\u0441\u044b: \u0432\u0441\u0451 \u0443 \u0432\u0430\u0441 \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435. \u041c\u0438\u043d\u0443\u0441\u044b: \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0438 \u043d\u0435\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b.<\/p>\n<p> <\/li>\n<li>\n<p>\u041f\u043b\u0430\u0433\u0438\u043d \u043c\u043e\u0436\u0435\u0442 \u0434\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442\u0443\u044e \u0432 \u043a\u043e\u043d\u0442\u0443\u0440\u0435 \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u043c\u043e\u0434\u0435\u043b\u044c, \u0438\u043c\u0435\u044f \u0435\u0451 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 IP \u0430\u0434\u0440\u0435\u0441 \u0438 \u043b\u0438\u0447\u043d\u044b\u0439 API \u043a\u043b\u044e\u0447, \u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442\u0430 \u0432 \u0432\u0438\u0434\u0435 OpenAI-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430. \u0412\u0430\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u043f\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c \u043a\u0430\u043d\u0430\u043b\u0430\u043c \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u0430\u0434\u0440\u0435\u0441\u0435 \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0438 \u043a\u0430\u043a\u043e\u0439 \u043d\u0443\u0436\u0435\u043d API \u043a\u043b\u044e\u0447 (\u0435\u0441\u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0443\u0436\u0435\u043d). \u041f\u043b\u044e\u0441\u044b: \u0432\u0441\u0451 \u0432 \u043a\u043e\u043d\u0442\u0443\u0440\u0435 \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438. \u041c\u0438\u043d\u0443\u0441\u044b: \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0437\u0430\u0442\u0430\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0434 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438, \u0442\u0430\u043a \u0447\u0442\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0443\u0434\u0435\u0442 \u0445\u0443\u0436\u0435 (\u043a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0435\u0441\u043b\u0438 \u0432 \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0434\u043b\u044f \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0438 \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442\u0430 \u0441\u0442\u0430\u0440\u0430\u044f \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c, \u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u043e\u0447\u0435\u043d\u044c \u043f\u043b\u043e\u0445\u0438\u0435).<\/p>\n<p> <\/li>\n<li>\n<p>\u0423 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f Enterprise \u0432\u0435\u0440\u0441\u0438\u044f, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0435\u0433\u043e \u0432 \u043a\u043e\u043d\u0442\u0443\u0440\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438. \u041f\u043b\u044e\u0441\u044b: \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0442\u043e, \u043a\u0430\u043a\u0438\u0435 \u0431\u0443\u0434\u0443\u0442 \u043d\u043e\u0432\u044b\u0435 \u0444\u0438\u0447\u0438, \u043f\u043b\u0430\u0433\u0438\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u043e\u0434 \u0442\u0443 \u043c\u043e\u0434\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0443 \u0432\u0430\u0441 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442. \u041c\u0438\u043d\u0443\u0441\u044b: \u0432\u0430\u0448\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0437\u0430 \u044d\u0442\u043e \u0437\u0430\u043f\u043b\u0430\u0442\u0438\u0442\u044c.<\/p>\n<p> <\/li>\n<\/ol>\n<p> <\/p>\n<p>\u0415\u0441\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043f\u043e\u0431\u043e\u0447\u043d\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0442\u043e, \u0441\u043c\u043e\u0436\u0435\u043c \u043b\u0438 \u043c\u044b \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c:<\/p>\n<p> <\/p>\n<ol>\n<li>\u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0447\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u0441 LLM?<\/li>\n<li>\u0415\u0441\u0442\u044c \u043b\u0438 \u0430\u0432\u0442\u043e\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430?<\/li>\n<li>\u0415\u0441\u0442\u044c \u043b\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 VSCode?<\/li>\n<li>\u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0437 \u0420\u043e\u0441\u0441\u0438\u0438 \u0431\u0435\u0437 VPN?<\/li>\n<li>\u0421\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0441\u0442\u043e\u0438\u0442?<\/li>\n<\/ol>\n<p> <\/p>\n<p>\u0418\u0445 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0430\u043b\u0435\u0435 \u0432 \u0441\u0432\u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435.<\/p>\n<p> <\/p>\n<h2 id=\"itogi\">\u0418\u0442\u043e\u0433\u0438<\/h2>\n<p> <\/p>\n<p>\u0418\u0442\u0430\u043a, \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u043c \u0432\u0441\u0451 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u043e\u0435 \u0432 \u043e\u0434\u043d\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u0443<\/p>\n<p> <\/p>\n<div class=\"scrollable-table\">\n<table>\n<thead>\n<tr>\n<th>\u041a\u0440\u0438\u0442\u0435\u0440\u0438\u0439<\/th>\n<th>JetBrains AI assistant<\/th>\n<th>Qodo<\/th>\n<th>GigaCode<\/th>\n<th>ChatGPT-4o<\/th>\n<th>Explyt Test<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u0414\u043e\u043b\u044f \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432<\/td>\n<td>26%*<\/td>\n<td>30%*<\/td>\n<td>33%*<\/td>\n<td>26%*<\/td>\n<td>70%<\/td>\n<\/tr>\n<tr>\n<td>\u0422\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435<\/td>\n<td>17%<\/td>\n<td>28%<\/td>\n<td>27%<\/td>\n<td>11%<\/td>\n<td>38%<\/td>\n<\/tr>\n<tr>\n<td>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0435 LLM \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b \u0441\u043e \u0441\u0432\u043e\u0438\u043c API \u043a\u043b\u044e\u0447\u043e\u043c<\/td>\n<td>\u041d\u0435\u0442<\/td>\n<td>\u041d\u0435\u0442<\/td>\n<td>\u041d\u0435\u0442<\/td>\n<td>OpenAI<\/td>\n<td>OpenAI, Anthropic, DeepSeek, Gemini, Mistral, Groq, Cerebras<\/td>\n<\/tr>\n<tr>\n<td>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 LLM<\/td>\n<td>Ollama, LM Studio<\/td>\n<td>\u041d\u0435\u0442<\/td>\n<td>\u041d\u0435\u0442<\/td>\n<td>\u041d\u0435\u0442<\/td>\n<td>Ollama, (\u043b\u044e\u0431\u044b\u0435 OpenAI-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0435**)<\/td>\n<\/tr>\n<tr>\n<td>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043b\u044e\u0431\u043e\u0433\u043e OpenAI-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430<\/td>\n<td>\u041d\u0435\u0442<\/td>\n<td>\u041d\u0435\u0442<\/td>\n<td>\u041d\u0435\u0442<\/td>\n<td>\u041d\u0435\u0442<\/td>\n<td>\u0414\u0430**<\/td>\n<\/tr>\n<tr>\n<td>Enterprise \u0432\u0435\u0440\u0441\u0438\u044f<\/td>\n<td>\u0414\u0430<\/td>\n<td>\u0414\u0430<\/td>\n<td>\u0414\u0430<\/td>\n<td>\u0414\u0430<\/td>\n<td>\u0414\u0430<\/td>\n<\/tr>\n<tr>\n<td>\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0447\u0430\u0442 \u0441 LLM<\/td>\n<td>\u0414\u0430<\/td>\n<td>\u0414\u0430<\/td>\n<td>\u0414\u0430<\/td>\n<td>\u0414\u0430<\/td>\n<td>\u0414\u0430<\/td>\n<\/tr>\n<tr>\n<td>\u0410\u0432\u0442\u043e\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430<\/td>\n<td>\u0414\u0430<\/td>\n<td>\u0414\u0430<\/td>\n<td>\u0414\u0430<\/td>\n<td>\u041d\u0435\u0442<\/td>\n<td>\u041d\u0435\u0442 (\u0435\u0441\u0442\u044c \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435)<\/td>\n<\/tr>\n<tr>\n<td>\u041f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f IDEA<\/td>\n<td>\u0414\u0430<\/td>\n<td>\u0414\u0430<\/td>\n<td>\u0414\u0430<\/td>\n<td>\u041d\u0435\u0442<\/td>\n<td>\u0414\u0430<\/td>\n<\/tr>\n<tr>\n<td>\u041f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f VSCode<\/td>\n<td>\u041d\u0435\u0442<\/td>\n<td>\u0414\u0430<\/td>\n<td>\u0414\u0430<\/td>\n<td>\u041d\u0435\u0442<\/td>\n<td>\u041d\u0435\u0442<\/td>\n<\/tr>\n<tr>\n<td>\u0421\u0442\u043e\u0439\u043c\u043e\u0441\u0442\u044c (\u0432 \u043c\u0435\u0441\u044f\u0446)<\/td>\n<td>Free: 0\u20ac, Pro: 10\u20ac, Ultimate: 20\u20ac<\/td>\n<td>Developer: 0$, Teams: 15$<\/td>\n<td>\u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e<\/td>\n<td>Free: 0$, Plus: 20$., Pro: 200$.<\/td>\n<td>Community: \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e (\u0441\u0432\u043e\u0438 API \u043a\u043b\u044e\u0447\u0438), Personal: 30 \u0434\u043d\u0435\u0439 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e, \u0437\u0430\u0442\u0435\u043c 2800\u0440<\/td>\n<\/tr>\n<tr>\n<td>\u0414\u043e\u0441\u0442\u0443\u043f \u0432 \u0420\u043e\u0441\u0441\u0438\u0438 \u0431\u0435\u0437 VPN<\/td>\n<td>\u041d\u0435\u0442<\/td>\n<td>\u0414\u0430<\/td>\n<td>\u0414\u0430<\/td>\n<td>\u041d\u0435\u0442<\/td>\n<td>Community: \u041d\u0435\u0442, Personal: \u0414\u0430<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p> <\/p>\n<p><code>*<\/code> \u2014 \u0441 \u0434\u043e\u043f. \u043f\u0440\u0430\u0432\u043a\u0430\u043c\u0438 \u0440\u0443\u043a\u0430\u043c\u0438 (\u0431\u0435\u0437 \u043d\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u044b \u043e\u043a\u043e\u043b\u043e 0%)<br \/> <code>**<\/code> \u2014 \u0431\u0443\u0434\u0435\u0442 \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u043c \u0440\u0435\u043b\u0438\u0437\u0435<\/p>\n<p> <\/p>\n<h2 id=\"zaklyuchenie\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p> <\/p>\n<p>\u041c\u044b \u0441\u0440\u0430\u0432\u043d\u0438\u043b\u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438 \u043d\u0435\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 AI \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u0441\u0442\u043e\u0432. \u0423\u0432\u0438\u0434\u0435\u043b\u0438, \u0447\u0442\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0442\u0435\u0441\u0442\u043e\u0432 \u0435\u0441\u0442\u044c \u0432 \u043b\u044e\u0431\u044b\u0445 AI \u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u0430\u0445, \u0438 \u0435\u0451 \u0434\u0430\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c &#171;\u043d\u0430 \u043a\u043e\u043b\u0435\u043d\u043a\u0435&#187;, \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u0430\u044f \u043a\u043e\u0434 \u0432 chatgpt.com. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u0442 \u043d\u0435\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0432\u044b \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043d\u0435\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043e\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442\u0435 \u0434\u043e\u043b\u0433\u043e \u0432\u043e\u0437\u0438\u0442\u044c\u0441\u044f (\u0438 \u0432\u0441\u0442\u0430\u043d\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441, \u043d\u0435 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043b\u0438 \u0431\u044b\u043b\u043e \u0432\u0441\u0451 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e?).<\/p>\n<p> <\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u0441\u0442\u043e\u0432, \u0432 Explyt Test \u043f\u043b\u0430\u0433\u0438\u043d\u0435, \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u0438\u0435 <a href=\"https:\/\/explyt.ai\/?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=ai_assistant_may25\">\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0438\u0447\u0438<\/a> \u043a\u0430\u043a \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u0438 \u0430\u043d\u0430\u043b\u0438\u0437 \u043c\u043e\u0440\u0433\u0430\u044e\u0449\u0438\u0445 (flaky) \u0442\u0435\u0441\u0442\u043e\u0432. \u041e \u0442\u043e\u043c, \u043a\u0430\u043a \u043e\u043d\u0438 \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0438 \u043a\u0430\u043a \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430\u043c \u0432 \u043f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435, \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u043c \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u0441\u0442\u0430\u0445. \u0410 \u043f\u043e\u043a\u0430 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0434\u044b \u0432\u0430\u0448\u0435\u0439 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445.<\/p>\n<p> <\/p>\n<p>\u0421\u043a\u0430\u0447\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e Explyt Test \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/explyt.ai\/ru\/download?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=ai_assistant_may25\">\u043d\u0430 \u0441\u0430\u0439\u0442\u0435<\/a> \u0438\u043b\u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0441 <a href=\"https:\/\/github.com\/explyt\/explyt-test\/releases?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=ai_assistant_may25\">GitHub<\/a>.<\/p>\n<p> <\/p>\n<p>\u0414\u043b\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445: <a href=\"https:\/\/github.com\/explyt\/explyt-test\/issues\/new\/choose\">GitHub Issues<\/a><\/p>\n<p> <\/p>\n<p>\u0414\u043b\u044f \u043e\u0431\u0449\u0435\u043d\u0438\u044f: <a href=\"http:\/\/t.me\/explyttest\">t.me\/explyttest<\/a><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \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\/909898\/\"> https:\/\/habr.com\/ru\/articles\/909898\/<\/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-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u042d\u0442\u043e \u0432\u043e\u043f\u0440\u043e\u0441 \u043c\u044b \u0437\u0430\u0434\u0430\u0435\u043c \u0441\u0435\u0431\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0434\u043e \u0438 \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u044b. \u0418 \u0435\u0449\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0438\u0441\u043a\u0430\u0442\u044c \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430\u0433\u0435\u043d\u0435\u0440\u0438\u0442 AI-\u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043d\u0442. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043e\u0431\u0441\u0443\u0434\u0438\u043c, \u043d\u0430 \u043a\u0430\u043a\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u043a\u0430\u043a\u0438\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 Java \u0442\u0435\u0441\u0442\u043e\u0432 \u0438 \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0430\u043b\u0435\u043a\u0430 \u043c\u0435\u0447\u0442\u0430 \u043e\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p> <\/p>\n<h2 id=\"na-kogo-budem-smotret\">\u041d\u0430 \u043a\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u043c \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c?<\/h2>\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-463154","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/463154","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=463154"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/463154\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=463154"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=463154"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=463154"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}