{"id":348153,"date":"2023-05-31T09:03:14","date_gmt":"2023-05-31T09:03:14","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=348153"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=348153","title":{"rendered":"<span>\u0420\u0430\u0441\u0449\u0435\u043f\u043b\u044f\u0435\u043c AI Test Kitchen \u043d\u0430 \u043c\u043e\u043b\u0435\u043a\u0443\u043b\u044b \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a Imagen<\/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<p>\u041e\u0434\u043d\u0438\u043c \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u043c \u0434\u043d\u0451\u043c \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0435 Google-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 <a href=\"https:\/\/blog.google\/technology\/ai\/join-us-in-the-ai-test-kitchen\/\" rel=\"noopener noreferrer nofollow\">AI Test Kitchen<\/a> \u0438 \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u043f\u043e\u043a\u0430-\u0447\u0442\u043e \u0440\u0430\u0431\u043e\u0447\u0438\u0439 API \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u0439 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0438 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 <a href=\"https:\/\/imagen.research.google\/\" rel=\"noopener noreferrer nofollow\">Imagen<\/a>.<\/p>\n<p>\u0414\u0435\u043b\u044e\u0441\u044c \u0442\u0435\u043c, \u043a\u0430\u043a \u044f \u044d\u0442\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e \u0435\u0449\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043d\u0430\u0448\u0435\u043b, \u0438 \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043d\u0430 GitHub-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/41a\/eb8\/b40\/41aeb8b4083aff92724baf2a2a12349f.png\" alt=\"Imagen\" title=\"Imagen\" width=\"1024\" height=\"1024\"><\/p>\n<div><figcaption>Imagen<\/figcaption><\/div>\n<\/figure>\n<h2>\u041f\u0440\u0435\u0434\u0438\u0441\u043b\u043e\u0432\u0438\u0435<\/h2>\n<p>\u0421 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0441\u0435 \u043c\u043e\u0433\u043b\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u043b\u0438 \u0432\u044b \u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u044d\u0442\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0434\u0435\u043b\u044c\/\u043c\u0435\u0441\u044f\u0446\u0435\u0432\/\u043b\u0435\u0442 \u0441\u043f\u0443\u0441\u0442\u044f, \u0442\u043e \u0441 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c\u044e 99% \u0432\u044b \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u0432\u0441\u0435 \u043c\u043e\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f.<\/p>\n<p>\u0418\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043c\u044b \u0431\u0443\u0434\u0435\u0442 <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.google.android.apps.ai.sandbox&amp;hl=ru&amp;gl=US\" rel=\"noopener noreferrer nofollow\">\u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 AI Test Kitchen<\/a> (\u0434\u0430\u043b\u0435\u0435 &#8212; ATK) \u043f\u043e\u0434 Android \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/portswigger.net\/burp\/documentation\/desktop\/mobile\/config-android-device\" rel=\"noopener noreferrer nofollow\">Burp Suite Proxy.<\/a><\/p>\n<p>\u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 ATK \u0431\u044b\u043b\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043e\u0434\u043d\u0430 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f &#8212; MusicLM. Imagen \u043d\u0435 \u0431\u044b\u043b \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 Imagen \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 API.<\/p>\n<h2>\u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/h2>\n<p>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c ATK \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a. \u0421 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u043a <code>https:\/\/aitestkitchen.withgoogle.com\/<\/code> \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 React-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Next.js. \u0418\u0437 \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u043c, \u0447\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cfb\/e99\/d69\/cfbe99d699c9e9d1aa7e590240479dea.png\" alt=\"\" title=\"\" width=\"301\" height=\"324\"><\/figure>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0443\u0437\u044b\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 \u0434\u0435\u043c\u043e MusicLM.<\/p>\n<p>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 json-\u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u0445\u043e\u0441\u0442 <code>https:\/\/content-aisandbox-pa.googleapis.co<\/code> \u043a \u043c\u0435\u0442\u043e\u0434\u0443 <code>soundDemo. <\/code>\u0414\u043b\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0439 Bearer-\u0442\u043e\u043a\u0435\u043d<\/p>\n<pre><code class=\"json\">https:\/\/content-aisandbox-pa.googleapis.com\/v1:soundDemo?alt=json {   \"generationCount\": 2,   \"input\": {     \"textInput\": \"Ambient soundscape, light, eery, and dreary\"   },   \"sessionId\": \"c66c7436-f66f-4d65-b481-103c734b102a\",   \"soundLengthSeconds\": 30 }<\/code><\/pre>\n<p>\u041e\u0442\u0432\u0435\u0442\u043e\u043c \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0442\u0440\u0435\u043a\u0438.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/805\/c57\/cf3\/805c57cf3c8e0ea9a19a118454d9baa6.png\" width=\"631\" height=\"447\"><\/figure>\n<p>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>soundLengthSeconds<\/code> \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0434\u043b\u0438\u043d\u043d\u0443\u044e \u0442\u0440\u0435\u043a\u043e\u0432, \u043d\u043e \u043e\u043d \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c.<\/p>\n<h2>\u0423\u0433\u043b\u0443\u0431\u043b\u044f\u0435\u043c\u0441\u044f<\/h2>\n<p>\u041f\u043e\u043c\u0438\u043c\u043e \u044d\u0442\u043e\u0433\u043e, \u043f\u0440\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0431\u044b\u043b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u0434\u0440\u0443\u0433\u043e\u0439, \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 GET-\u0437\u0430\u043f\u0440\u043e\u0441. \u041e\u043d \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u043c\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 api-\u043c\u0435\u0442\u043e\u0434\u044b \u0438 \u043a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435, \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u0435\u043c\u043e.<\/p>\n<details class=\"spoiler\">\n<summary>\u0414\u043b\u0438\u043d\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"json\">https:\/\/content-aisandbox-pa.googleapis.com\/$discovery\/rest?key=AIzaSyBtrm0o5ab1c-Ec8ZuLcGt3oJAA5VWt3pY&amp;pp=0&amp;fields=fields%5B%22kind%22%5D%2Cfields%5B%22name%22%5D%2Cfields%5B%22version%22%5D%2Cfields%5B%22rootUrl%22%5D%2Cfields%5B%22servicePath%22%5D%2Cfields%5B%22resources%22%5D%2Cfields%5B%22parameters%22%5D%2Cfields%5B%22methods%22%5D%2Cfields%5B%22batchPath%22%5D%2Cfields%5B%22id%22%5D  {   \"id\": \"aisandbox_pa:v1\",   \"version\": \"v1\",   \"kind\": \"discovery#restDescription\",   \"servicePath\": \"\",   \"batchPath\": \"batch\",   \"rootUrl\": \"https:\/\/aisandbox-pa.googleapis.com\/\",   \"parameters\": {     \"upload_protocol\": {       \"description\": \"Upload protocol for media (e.g. \\\"raw\\\", \\\"multipart\\\").\",       \"type\": \"string\",       \"location\": \"query\"     },     \"fields\": {       \"location\": \"query\",       \"type\": \"string\",       \"description\": \"Selector specifying which fields to include in a partial response.\"     },     \"oauth_token\": {       \"description\": \"OAuth 2.0 token for the current user.\",       \"location\": \"query\",       \"type\": \"string\"     },     \"alt\": {       \"location\": \"query\",       \"description\": \"Data format for response.\",       \"default\": \"json\",       \"type\": \"string\",       \"enum\": [         \"json\",         \"media\",         \"proto\"       ],       \"enumDescriptions\": [         \"Responses with Content-Type of application\/json\",         \"Media download with context-dependent Content-Type\",         \"Responses with Content-Type of application\/x-protobuf\"       ]     },     \"callback\": {       \"type\": \"string\",       \"description\": \"JSONP\",       \"location\": \"query\"     },     \"key\": {       \"type\": \"string\",       \"description\": \"API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.\",       \"location\": \"query\"     },     \"quotaUser\": {       \"type\": \"string\",       \"location\": \"query\",       \"description\": \"Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.\"     },     \"prettyPrint\": {       \"location\": \"query\",       \"type\": \"boolean\",       \"description\": \"Returns response with indentations and line breaks.\",       \"default\": \"true\"     },     \"access_token\": {       \"type\": \"string\",       \"location\": \"query\",       \"description\": \"OAuth access token.\"     },     \"$.xgafv\": {       \"enum\": [         \"1\",         \"2\"       ],       \"location\": \"query\",       \"description\": \"V1 error format.\",       \"type\": \"string\",       \"enumDescriptions\": [         \"v1 error format\",         \"v2 error format\"       ]     },     \"uploadType\": {       \"location\": \"query\",       \"description\": \"Legacy upload protocol for media (e.g. \\\"media\\\", \\\"multipart\\\").\",       \"type\": \"string\"     }   },   \"name\": \"aisandbox_pa\",   \"resources\": {     \"waitlistEntries\": {       \"methods\": {         \"delete\": {           \"id\": \"aisandbox_pa.waitlistEntries.delete\",           \"parameterOrder\": [             \"name\"           ],           \"httpMethod\": \"DELETE\",           \"flatPath\": \"v1\/waitlistEntries\/{waitlistEntriesId}\",           \"path\": \"v1\/{+name}\",           \"parameters\": {             \"name\": {               \"required\": true,               \"pattern\": \"^waitlistEntries\/[^\/]+$\",               \"type\": \"string\",               \"location\": \"path\",               \"description\": \"Required. The name of the waitlist entry to delete. This should always be \\\"waitlistEntries\/me\\\"\"             }           },           \"response\": {             \"$ref\": \"Empty\"           },           \"description\": \"Deletes the waitlist entry for the current user if there is one. Errors with NOT_FOUND if no waitlist entry exists for the current user. The name should always be \\\"waitlistEntries\/me\\\".\"         },         \"create\": {           \"request\": {             \"$ref\": \"WaitlistEntry\"           },           \"path\": \"v1\/waitlistEntries\",           \"id\": \"aisandbox_pa.waitlistEntries.create\",           \"flatPath\": \"v1\/waitlistEntries\",           \"parameterOrder\": [],           \"httpMethod\": \"POST\",           \"response\": {             \"$ref\": \"WaitlistEntry\"           },           \"description\": \"Creates a waitlist entry for the current user if it doesn't already exist. If a waitlist entry already exists for the current user, then this call errors with ALREADY_EXISTS. See [1] below for details. None of the fields can be set by the client, so an empty entry should be passed as the body. [1] The waitlist entry is always based on the authenticated user's ID, so this behaves like a standard Create method with a User-specified id as described here: https:\/\/google.aip.dev\/133#user-specified-ids\",           \"parameters\": {             \"frontendCommitHash\": {               \"location\": \"query\",               \"description\": \"The commit hash of the web frontend. This is used for tracking the version of the user consent text\/UI at the time the user joined the waitlist. Represented as a hex-encoded string version of the SHA1 commit hash.\",               \"type\": \"string\"             }           }         },         \"get\": {           \"parameterOrder\": [             \"name\"           ],           \"description\": \"Gets the waitlist entry for the current user if there is one. Errors with NOT_FOUND if no waitlist entry exists for the current user. The name should always be \\\"waitlistEntries\/me\\\".\",           \"response\": {             \"$ref\": \"WaitlistEntry\"           },           \"parameters\": {             \"name\": {               \"location\": \"path\",               \"type\": \"string\",               \"description\": \"Required. The name of the waitlist entry to retrieve. This should always be \\\"waitlistEntries\/me\\\"\",               \"required\": true,               \"pattern\": \"^waitlistEntries\/[^\/]+$\"             }           },           \"path\": \"v1\/{+name}\",           \"httpMethod\": \"GET\",           \"flatPath\": \"v1\/waitlistEntries\/{waitlistEntriesId}\",           \"id\": \"aisandbox_pa.waitlistEntries.get\"         }       }     },     \"v1\": {       \"methods\": {         \"rate\": {           \"response\": {             \"$ref\": \"RateLamdaResponseResponse\"           },           \"httpMethod\": \"POST\",           \"parameterOrder\": [],           \"path\": \"v1:rate\",           \"id\": \"aisandbox_pa.rate\",           \"request\": {             \"$ref\": \"RateLamdaResponseRequest\"           },           \"flatPath\": \"v1:rate\",           \"parameters\": {},           \"description\": \"Rate a LaMDA response.\"         },         \"soundDemo\": {           \"path\": \"v1:soundDemo\",           \"id\": \"aisandbox_pa.soundDemo\",           \"httpMethod\": \"POST\",           \"parameterOrder\": [],           \"response\": {             \"$ref\": \"SoundDemoResponse\"           },           \"request\": {             \"$ref\": \"SoundDemoRequest\"           },           \"flatPath\": \"v1:soundDemo\",           \"description\": \"Reproduces sound on given SoundDemoRequest.\",           \"parameters\": {}         },         \"deleteSession\": {           \"path\": \"v1:deleteSession\",           \"id\": \"aisandbox_pa.deleteSession\",           \"flatPath\": \"v1:deleteSession\",           \"parameters\": {},           \"httpMethod\": \"POST\",           \"request\": {             \"$ref\": \"DeleteSessionRequest\"           },           \"parameterOrder\": [],           \"response\": {             \"$ref\": \"DeleteSessionResponse\"           },           \"description\": \"Delete all data for a session.\"         },         \"demo\": {           \"path\": \"v1:demo\",           \"request\": {             \"$ref\": \"DemoRequest\"           },           \"id\": \"aisandbox_pa.demo\",           \"flatPath\": \"v1:demo\",           \"response\": {             \"$ref\": \"DemoResponse\"           },           \"parameters\": {},           \"httpMethod\": \"POST\",           \"description\": \"Invoke a specified demo.\",           \"parameterOrder\": []         },         \"upscaleImage\": {           \"response\": {             \"$ref\": \"UpscaleImageResponse\"           },           \"request\": {             \"$ref\": \"UpscaleImageRequest\"           },           \"description\": \"Upscales a given image as per the request params. This can be an expensive call depending on the flow - whether a model is triggered or previously stored image data is returned.\",           \"path\": \"v1:upscaleImage\",           \"flatPath\": \"v1:upscaleImage\",           \"parameters\": {},           \"httpMethod\": \"POST\",           \"parameterOrder\": [],           \"id\": \"aisandbox_pa.upscaleImage\"         },         \"checkAppAvailability\": {           \"parameters\": {},           \"request\": {             \"$ref\": \"CheckAppAvailabilityRequest\"           },           \"description\": \"Checks whether AI Test Kitchen is available\",           \"path\": \"v1:checkAppAvailability\",           \"id\": \"aisandbox_pa.checkAppAvailability\",           \"httpMethod\": \"POST\",           \"flatPath\": \"v1:checkAppAvailability\",           \"response\": {             \"$ref\": \"CheckAppAvailabilityResponse\"           },           \"parameterOrder\": []         },         \"addUserAcknowledgement\": {           \"path\": \"v1:addUserAcknowledgement\",           \"response\": {             \"$ref\": \"AddUserAcknowledgementResponse\"           },           \"parameters\": {},           \"flatPath\": \"v1:addUserAcknowledgement\",           \"httpMethod\": \"POST\",           \"parameterOrder\": [],           \"request\": {             \"$ref\": \"AddUserAcknowledgementRequest\"           },           \"id\": \"aisandbox_pa.addUserAcknowledgement\",           \"description\": \"Creates a record of user acknowledgement.\"         },         \"checkUserAcknowledgement\": {           \"id\": \"aisandbox_pa.checkUserAcknowledgement\",           \"response\": {             \"$ref\": \"CheckUserAcknowledgementResponse\"           },           \"description\": \"Check a record of user acknowledgement.\",           \"flatPath\": \"v1:checkUserAcknowledgement\",           \"path\": \"v1:checkUserAcknowledgement\",           \"httpMethod\": \"POST\",           \"parameterOrder\": [],           \"request\": {             \"$ref\": \"CheckUserAcknowledgementRequest\"           },           \"parameters\": {}         },         \"shareMedia\": {           \"path\": \"v1:shareMedia\",           \"httpMethod\": \"POST\",           \"parameterOrder\": [],           \"flatPath\": \"v1:shareMedia\",           \"id\": \"aisandbox_pa.shareMedia\",           \"description\": \"By default, shares the media with \\\"PUBLIC\\\", accessible to all users. Errors with NOT_FOUND if the media file doesn't exist or the requesting user is not authorized to share it.\",           \"response\": {             \"$ref\": \"Empty\"           },           \"request\": {             \"$ref\": \"ShareMediaRequest\"           },           \"parameters\": {}         },         \"imageDemo\": {           \"httpMethod\": \"POST\",           \"description\": \"Generates a set of images for the query and specs in the request. Currently limits the maximum #images in the response to 8. If request sets a param &gt;8, it's capped to 8 and RPC will not fail on the limit validation.\",           \"flatPath\": \"v1:imageDemo\",           \"request\": {             \"$ref\": \"ImageDemoRequest\"           },           \"parameters\": {},           \"response\": {             \"$ref\": \"ImageDemoResponse\"           },           \"id\": \"aisandbox_pa.imageDemo\",           \"parameterOrder\": [],           \"path\": \"v1:imageDemo\"         }       }     },     \"media\": {       \"methods\": {         \"get\": {           \"id\": \"aisandbox_pa.media.get\",           \"response\": {             \"$ref\": \"Media\"           },           \"httpMethod\": \"GET\",           \"parameterOrder\": [             \"name\"           ],           \"parameters\": {             \"name\": {               \"type\": \"string\",               \"pattern\": \"^media\/[^\/]+$\",               \"description\": \"Required. Unique media_key to be used as the media URL param and for fetching from the server. E.g. \\\"media\/4b4e6936-f1a2-49ba-91bc-3cf2252a264f\\\".\",               \"location\": \"path\",               \"required\": true             }           },           \"description\": \"Fetches the media for the requested key. Does not require the user to be authenticated. Errors with NOT_FOUND if the media file doesn't exist or is not shared with \\\"PUBLIC\\\".\",           \"flatPath\": \"v1\/media\/{mediaId}\",           \"path\": \"v1\/{+name}\"         }       }     }   } }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0415\u0441\u043b\u0438 \u043c\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 <code>methods<\/code>, \u0442\u043e \u0443\u0432\u0438\u0434\u0438\u043c \u0432\u043e\u0442 \u044d\u0442\u043e:<\/p>\n<ul>\n<li>\n<p>rate &#8212; Rate a LaMDA response.<\/p>\n<\/li>\n<li>\n<p>soundDemo &#8212; Reproduces sound on given SoundDemoRequest.<\/p>\n<\/li>\n<li>\n<p>deleteSession &#8212; Delete all data for a session.<\/p>\n<\/li>\n<li>\n<p>upscaleImage &#8212; Upscales a given image as per the request params. This can be an expensive call depending on the flow &#8212; whether a model is triggered or previously stored image data is returned.<\/p>\n<\/li>\n<li>\n<p>imageDemo &#8212; Generates a set of images for the query and specs in the request. Currently limits the maximum #images in the response to 8. If request sets a param &gt;8, it&#8217;s capped to 8 and RPC will not fail on the limit validation.<\/p>\n<\/li>\n<\/ul>\n<p>\u0411\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043c\u0435\u043d\u044f \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b \u043c\u0435\u0442\u043e\u0434 <code>imageDemo<\/code>. \u041d\u0435\u0443\u0436\u0435\u043b\u0438 <a href=\"https:\/\/9to5google.com\/2022\/11\/02\/ai-test-kitchen-season-2\/\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e \u0442\u0430 \u0441\u0430\u043c\u0430\u044f \u0434\u0435\u043c\u043e-\u0432\u0435\u0440\u0441\u0438\u044f Imagen<\/a>?<\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0441\u0440\u0430\u0437\u0443 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u043a \u043c\u0435\u0442\u043e\u0434\u0443, \u043d\u043e \u0431\u044b\u043b\u0430 \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 &#8212; \u044f \u043d\u0435 \u0437\u043d\u0430\u043b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b <code>imageDemo<\/code>.<\/p>\n<pre><code class=\"json\">{   \"httpMethod\": \"POST\",   \"description\": \"Generates a set of images for the query and specs in the request. Currently limits the maximum #images in the response to 8. If request sets a param &gt;8, it's capped to 8 and RPC will not fail on the limit validation.\",   \"flatPath\": \"v1:imageDemo\",   \"request\": {     \"$ref\": \"ImageDemoRequest\"   },   \"parameters\": {},   \"response\": {     \"$ref\": \"ImageDemoResponse\"   },   \"id\": \"aisandbox_pa.imageDemo\",   \"parameterOrder\": [],   \"path\": \"v1:imageDemo\" }<\/code><\/pre>\n<h2>\u041a\u043e\u043f\u0430\u0435\u043c\u0441\u044f \u0432\u043e \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435<\/h2>\n<p>\u0415\u0441\u043b\u0438 \u0443\u0432\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u043e \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c \u043d\u0435 \u0443\u0431\u0440\u0430\u043b\u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b API, \u0442\u043e, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432 WebPack \u0447\u0430\u043d\u043a\u0430\u0445 \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 \u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e. \u0421\u043f\u043e\u0439\u043b\u0435\u0440: \u0434\u0430.<\/p>\n<p>\u041e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0432 \u043d\u0435 \u043d\u0443\u0436\u043d\u044b\u0435 \u0447\u0430\u043d\u043a\u0438, \u044f \u043d\u0430\u0448\u0451\u043b \u0441\u0430\u043c\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 &#8212; <a href=\"https:\/\/aitestkitchen.withgoogle.com\/51ebd516-8ab4-450e-91f4-24539f887bdf\/app\/_next\/static\/chunks\/955-89f740984868e27c.js\" rel=\"noopener noreferrer nofollow\">https:\/\/aitestkitchen.withgoogle.com\/51ebd516-8ab4-450e-91f4-24539f887bdf\/app\/_next\/static\/chunks\/955-89f740984868e27c.js<\/a><\/p>\n<h3>\u0421\u043f\u0438\u0441\u043e\u043a \u0434\u0435\u043c\u043e<\/h3>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0438 6936, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0434\u0435\u043c\u043e, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 ATK.<\/p>\n<details class=\"spoiler\">\n<summary>\u041c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"javascript\">switch (e) {     case \"Pretend\":         return {             buttonLabel: \"Launch demo\",                 finalTitle: \"Explore your imagination.\",                 info: [{                         title: \"What should I do?\",                         description: \"Name a place and LaMDA will offer paths to explore your imagination.\",                     },                     {                         title: \"What should I give feedback on?\",                         description: \"If LaMDA generates interesting scene descriptions that are relevant to your idea.\",                     },                 ],         };     case \"List\":         return {             buttonLabel: \"Launch demo\",                 finalTitle: \"Break down a complex goal or topic.\",                 info: [{                         title: \"What should I do?\",                         description: \"Name a goal or topic and see how much LaMDA can break it down into multiple lists of subtasks.\",                     },                     {                         title: \"What should I give feedback on?\",                         description: \"If LaMDA generates useful lists of subtasks, some of which you might not have thought of.\",                     },                 ],         };     case \"Puppies\":         return {             buttonLabel: \"Launch demo\",                 finalTitle: \"Talk to a tennis ball about dogs.\",                 info: [{                         title: \"What should I do?\",                         description: \"Roll with the conversation and see where it goes. It\\u2019s just a fun, kinda-weird, open-ended chat.\",                     },                     {                         title: \"What should I give feedback on?\",                         description: \"If LaMDA, no matter what you ask it, keeps the conversation going while bringing the topic back to dogs.\",                     },                 ],         };     case \"City\":         return {             buttonLabel: \"Launch demo\",                 finalTitle: \"Dream up a new city.\",                 info: [{                         title: \"What should I do?\",                         description: \"Describe an imaginary building, and our text-to-image model will show you what it might look like.\",                     },                     {                         title: \"What should I give feedback on?\",                         description: \"If our text-to-image model generates an interesting and accurate building based on your description.\",                     },                 ],                 backgroundImage: io[ao],         };     case \"Wobble\":         return {             buttonLabel: \"Launch demo\",                 finalTitle: \"Imagine a monster and make it wobble.\",                 info: [{                         title: \"What should I do?\",                         description: \"Imagine a monster and describe what it's wearing. Using 2D-to-3D animation techniques, \\u201cwobble\\u201d it to make it dance.\",                     },                     {                         title: \"What should I give feedback on?\",                         description: \"If our text-to-image model generates monsters that are relevant to your description.\",                     },                 ],                 backgroundImage: so[co],         };     case \"Swim\":         return {             buttonLabel: \"Launch demo\",                 finalTitle: \"Search What I Mean\",                 info: [{                         title: \"What should I do?\",                         description: \"Have a topic in mind? Search anything related to the topic, it will remember the context you are in and provide some helpful hints.\",                     },                     {                         title: \"What should I give feedback on?\",                         description: \"If our model is able to correctly infer what you are asking at each step.\",                     },                 ],         };     case \"Brainstorm\":         return {             buttonLabel: \"Launch demo\",                 finalTitle: \"Dream of anything.\",                 info: [{                         title: \"What should I do?\",                         description: \"Imagine a scene, pick a style, and our text-to-image model will show you what it might look like.\",                     },                     {                         title: \"What should I give feedback on?\",                         description: \"If our text-to-image model generates scenes that are relevant to your description.\",                     },                 ],                 backgroundImage: uo[lo],         };     case \"Soundsmith\":         return {             buttonLabel: \"Launch demo\",                 finalTitle:                 \"Describe a musical idea and hear it come to life with AI\",                 info: [{                         title: \"How to make a good prompt\",                         html: (0, i.jsxs)(\"ul\", {                             children: [                                 (0, i.jsx)(\"li\", {                                     children: \"Be very descriptive, include electronic or classical instruments\",                                 }),                                 (0, i.jsx)(\"li\", {                                     children: \"Mention the vibe, mood or emotion you want to create\",                                 }),                                 (0, i.jsx)(\"li\", {                                     children: \"Certain queries that mention specific artists or include vocals will not be generated\",                                 }),                             ],                         }),                     },                     {                         title: \"Improve the model by giving out trophies\",                         html: (0, i.jsx)(\"ul\", {                             children: (0, i.jsxs)(go, {                                 children: [                                     (0, i.jsx)(\"div\", {                                         children: \"Which track is better? Give it a trophy. This feedback will improve MusicLM for everyone.\",                                     }),                                     (0, i.jsx)(mo, {                                         src: to(                                             \"\/website\/season-3\/musiclm-feedback.svg\"                                         ),                                         alt: \"Trophy icon buttons to indicate how to leave user feedback.\",                                         width: 116,                                         height: 64,                                     }),                                 ],                             }),                         }),                     },                     {                         title: \"Remember to save your creations\",                         html: (0, i.jsx)(\"ul\", {                             children: (0, i.jsx)(\"li\", {                                 children: \"Audio tracks are not automatically saved. If you want to save your tracks, click the more icon to download\",                             }),                         }),                     },                 ],                 backgroundImage: fo[0],         };<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<ul>\n<li>\n<p>Pretend &#8212; \u041d\u0430\u0437\u043e\u0432\u0438\u0442\u0435 \u043c\u0435\u0441\u0442\u043e, \u0438 LaMDA \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442 \u043f\u0443\u0442\u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0432\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p>List &#8212; \u041d\u0430\u0437\u043e\u0432\u0438\u0442\u0435 \u0446\u0435\u043b\u044c \u0438\u043b\u0438 \u0442\u0435\u043c\u0443 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e LaMDA \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u0435\u0435 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u043f\u043e\u0434\u0437\u0430\u0434\u0430\u0447.<\/p>\n<\/li>\n<li>\n<p>Puppies &#8212; \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440 \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435, \u043a\u0443\u0434\u0430 \u043e\u043d \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442. \u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0435\u0441\u0435\u043b\u044b\u0439, \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0439, \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440.<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u0438<a href=\"https:\/\/www.youtube.com\/watch?v=CNn_w_sIOaQ&amp;t=3s&amp;ab_channel=GPT-3Demo\" rel=\"noopener noreferrer nofollow\"> \u0442\u0440\u0438 \u0434\u0435\u043c\u043e<\/a> \u0431\u044b\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432\u0441\u0435\u043c \u043f\u0440\u0438 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435 ATK. \u041e\u043d\u0438 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0438 <a href=\"https:\/\/blog.google\/technology\/ai\/lamda\/\" rel=\"noopener noreferrer nofollow\">LaMDA<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 <a href=\"https:\/\/bard.google.com\/\" rel=\"noopener noreferrer nofollow\">Bard<\/a>, \u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0439 \u0432 ATK.<\/p>\n<ul>\n<li>\n<p>City &#8212; \u041e\u043f\u0438\u0448\u0438\u0442\u0435 \u0432\u043e\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u0437\u0434\u0430\u043d\u0438\u0435, \u0438 \u043d\u0430\u0448\u0430 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e-\u0438\u0437\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u0432\u0430\u043c, \u043a\u0430\u043a \u043e\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c.<\/p>\n<\/li>\n<li>\n<p>Wobble &#8212; \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u0435\u0431\u0435 \u043c\u043e\u043d\u0441\u0442\u0440\u0430 \u0438 \u043e\u043f\u0438\u0448\u0438\u0442\u0435, \u0432\u043e \u0447\u0442\u043e \u043e\u043d \u043e\u0434\u0435\u0442. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0442\u0435\u0445\u043d\u0438\u043a\u0443 2D-3D \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438, &#171;\u043f\u043e\u043a\u0430\u0447\u0430\u0439\u0442\u0435&#187; \u0435\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u043d\u0446\u0435\u0432\u0430\u0442\u044c.<\/p>\n<\/li>\n<li>\n<p>Brainstorm &#8212; \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u0435\u0431\u0435 \u0441\u0446\u0435\u043d\u0443, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0442\u0438\u043b\u044c, \u0438 \u043d\u0430\u0448\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u0432\u0430\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c.<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u0438 \u0442\u0440\u0438 \u0434\u0435\u043c\u043e \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0443 <a href=\"https:\/\/imagen.research.google\/\" rel=\"noopener noreferrer nofollow\">Imagen<\/a>, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043c\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c\u0441\u044f \u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435. \u0412\u0435\u0441\u044c\u043c\u0430 \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u0447\u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u044d\u0442\u0438\u043c\u0438 \u0434\u0435\u043c\u043e, \u043d\u043e \u043f\u0440\u0438 \u0442\u043e\u043c \u0438\u0445 API \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043b\u044e\u0431\u043e\u043c\u0443 \u0436\u0435\u043b\u0430\u044e\u0449\u0435\u043c\u0443.<\/p>\n<ul>\n<li>\n<p>Soundsmith &#8212; \u041e\u043f\u0438\u0448\u0438\u0442\u0435 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0438\u0434\u0435\u044e \u0438 \u0443\u0441\u043b\u044b\u0448\u044c\u0442\u0435, \u043a\u0430\u043a \u043e\u043d\u0430 \u0432\u043e\u043f\u043b\u043e\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u0436\u0438\u0437\u043d\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0430<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e \u0434\u0435\u043c\u043e <a href=\"https:\/\/google-research.github.io\/seanet\/musiclm\/examples\/\" rel=\"noopener noreferrer nofollow\">MusicLM<\/a>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0432\u0441\u0435\u043c \u0436\u0435\u043b\u0430\u044e\u0449\u0438\u043c \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<h3>\u0418\u0449\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b imageDemo<\/h3>\n<p>\u0418\u0441\u043a\u0430\u0442\u044c \u0434\u043e\u043b\u0433\u043e \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c. \u041f\u0435\u0440\u0432\u044b\u0439 \u0436\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u0438\u0441\u043a\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043d\u0430 \u0432\u043e\u0442 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 (\u0441\u0442\u0440\u043e\u043a\u0430 9714):<\/p>\n<pre><code class=\"javascript\">gapi.client.aisandbox_pa.imageDemo({     demo: \"CITY_DREAMER\",     imageCount: 4,     query: e,     sessionId: t,     imageSpec: {         inlineUpscale: !0     }, })<\/code><\/pre>\n<h3>\u0418\u0438\u0449\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u0435\u0442\u043e\u0434\u0430 upscaleImage<\/h3>\n<p>\u0421\u0442\u0440\u043e\u043a\u0430 3711.<\/p>\n<pre><code class=\"javascript\">gapi.client.aisandbox_pa.upscaleImage({     imageId: t })<\/code><\/pre>\n<p>\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u0435\u0441\u044c\u043c\u0430 \u043f\u043e\u043d\u044f\u0442\u043d\u043e. \u042d\u0442\u043e \u0432\u0441\u0451, \u0447\u0442\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043e\u0442 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430. \u0421\u043f\u0430\u0441\u0438\u0431\u043e!<\/p>\n<h2>\u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u044b<\/h2>\n<p>\u0417\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043c\u0435\u0442\u043e\u0434 <code>soundDemo<\/code>, \u043f\u043e\u043c\u0435\u043d\u044f\u0432 \u0430\u0434\u0440\u0435\u0441 \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u044f \u0441\u043c\u043e\u0433 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f <code>imageDemo<\/code>:<\/p>\n<pre><code class=\"json\">{   \"demo\": \"BRAINSTORM\",   \"imageCount\": 4,   \"query\": \"Photo of a dog in a sunglasses. Oil\",   \"sessionId\": \"by08oc78-8f67-4fb3-98e6-cd2332b87597\",   \"imageSpec\": {     \"inlineUpscale\": false   } }<\/code><\/pre>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/66b\/576\/b08\/66b576b086843865f44054c78abb7da6.png\" alt=\"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\" title=\"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\" width=\"256\" height=\"256\"><\/p>\n<div><figcaption>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u041e\u0442\u0432\u0435\u0442\u043e\u043c \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c base64 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438 \u0438\u0445 id \u0434\u043b\u044f upscale:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b37\/55c\/01a\/b3755c01afa71fc716ffc44f3a131bf8.png\" width=\"923\" height=\"261\"><\/figure>\n<p>\u0418\u0437 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e:<\/p>\n<ul>\n<li>\n<p>\u0426\u0435\u043d\u0437\u0443\u0440\u0430. \u041e\u0447\u0435\u043d\u044c. \u041c\u043d\u043e\u0433\u043e. \u0426\u0435\u043d\u0437\u0443\u0440\u044b.<\/p>\n<\/li>\n<li>\n<p>sessionId \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043b\u044e\u0431\u043e\u0439.<\/p>\n<\/li>\n<li>\n<p>\u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0434\u0435\u043c\u043e BRAINSTORM, WOBBLE, CITY_DREAMER.<\/p>\n<\/li>\n<\/ul>\n<h2>\u041f\u0438\u0448\u0435\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043d\u0430 python<\/h2>\n<p>\u0417\u0434\u0435\u0441\u044c \u043d\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e.<\/p>\n<pre><code class=\"python\">class Imagen:     def __init__(self, bearer) -&gt; None:         self.bearer = bearer         self.domain = \"https:\/\/content-aisandbox-pa.googleapis.com\"         self.headers = {             \"Authorization\": f\"Bearer {self.bearer}\",             \"Content-Type\": \"application\/json\",         }      def generate(self, prompt: str, demo: str, count: int) -&gt; list:         data = {             \"demo\": demo,             \"imageCount\": count,             \"query\": prompt,             \"sessionId\": str(uuid.uuid4()),             \"imageSpec\": {\"inlineUpscale\": False},         }         response = requests.post(             f\"{self.domain}\/v1:imageDemo?alt=json\", headers=self.headers, json=data         )         if response.status_code == 200:             return [                 Img(image[\"imageData\"], image[\"imageId\"], self)                 for image in response.json()[\"images\"]             ]         else:             raise Exception(f\"Error: {response.json()['error']['message']}\")<\/code><\/pre>\n<p>\u0422\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0434\u043b\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043e 1024&#215;1024:<\/p>\n<pre><code class=\"python\">class Img:     def __init__(self, base: str, id: str, imagen: Imagen) -&gt; None:         self.id = id         self.image = Image.open(BytesIO(base64.b64decode(base)))         self.imagen = imagen      def save(self, path: str) -&gt; None:         self.image.save(path)      def show(self) -&gt; None:         self.image.show()      def upscale(self) -&gt; None:         response = requests.post(             f\"{self.imagen.domain}\/v1:upscaleImage?alt=json\",             headers=self.imagen.headers,             json={                 \"imageId\": self.id,             },         )         if response.status_code == 200:             self.image = Image.open(                 BytesIO(base64.b64decode(response.json()[\"image\"][\"imageData\"]))             )         else:             raise Exception(f\"Error: {response.json()['error']['message']}\")<\/code><\/pre>\n<p>\u041e\u0442\u043b\u0438\u0447\u043d\u043e. \u041d\u0430\u043f\u0438\u0441\u0430\u043b\u0438.<\/p>\n<h2>\u041a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c Bearer \u0442\u043e\u043a\u0435\u043d?<\/h2>\n<p>\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c\u0441\u044f \u043d\u0430 <a href=\"https:\/\/aitestkitchen.withgoogle.com\/\" rel=\"noopener noreferrer nofollow\">https:\/\/aitestkitchen.withgoogle.com\/<\/a> \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440. \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043b\u044e\u0431\u043e\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0435 \u0434\u0435\u043c\u043e \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 (\u043a\u043b\u0430\u0432\u0438\u0448\u0430 F12)<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4ef\/ffb\/36f\/4efffb36fd9916eaae685e3e6473fef8.png\" width=\"1253\" height=\"546\"><\/figure>\n<p>\u0411\u0435\u0440\u0451\u043c \u043b\u044e\u0431\u043e\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043a API \u0438 \u0432\u0438\u0434\u0438\u043c Bearer \u0442\u043e\u043a\u0435\u043d \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0445.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/522\/a19\/ae3\/522a19ae362d858d106b6e4085e71e20.png\" width=\"790\" height=\"314\"><\/figure>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/348\/d95\/96b\/348d9596b70d116de75891ea2765bc22.png\" width=\"1024\" height=\"1024\"><\/figure>\n<p>\u041a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u043a\u0430\u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f &#8212; <a href=\"https:\/\/github.com\/0x7o\/AITestKitchen\" rel=\"noopener noreferrer nofollow\">0x7o\/AITestKitchen<\/a><\/p>\n<p>\u0411\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 &#8212; <a href=\"https:\/\/github.com\/0x7o\/AITestKitchen\/tree\/main\/examples\" rel=\"noopener noreferrer nofollow\">0x7o\/AITestKitchen\/tree\/main\/examples<\/a><\/p>\n<p>\u0427\u0442\u043e \u0434\u0443\u043c\u0430\u0435\u0442\u0435 \u0412\u044b?<\/p>\n<\/p>\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\/738764\/\"> https:\/\/habr.com\/ru\/articles\/738764\/<\/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<p>\u041e\u0434\u043d\u0438\u043c \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u043c \u0434\u043d\u0451\u043c \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0435 Google-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 <a href=\"https:\/\/blog.google\/technology\/ai\/join-us-in-the-ai-test-kitchen\/\" rel=\"noopener noreferrer nofollow\">AI Test Kitchen<\/a> \u0438 \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u043f\u043e\u043a\u0430-\u0447\u0442\u043e \u0440\u0430\u0431\u043e\u0447\u0438\u0439 API \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u0439 \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0438 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 <a href=\"https:\/\/imagen.research.google\/\" rel=\"noopener noreferrer nofollow\">Imagen<\/a>.<\/p>\n<p>\u0414\u0435\u043b\u044e\u0441\u044c \u0442\u0435\u043c, \u043a\u0430\u043a \u044f \u044d\u0442\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e \u0435\u0449\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043d\u0430\u0448\u0435\u043b, \u0438 \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043d\u0430 GitHub-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>Imagen<\/figcaption><\/div>\n<\/figure>\n<h2>\u041f\u0440\u0435\u0434\u0438\u0441\u043b\u043e\u0432\u0438\u0435<\/h2>\n<p>\u0421 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0441\u0435 \u043c\u043e\u0433\u043b\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u043b\u0438 \u0432\u044b \u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u044d\u0442\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0434\u0435\u043b\u044c\/\u043c\u0435\u0441\u044f\u0446\u0435\u0432\/\u043b\u0435\u0442 \u0441\u043f\u0443\u0441\u0442\u044f, \u0442\u043e \u0441 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c\u044e 99% \u0432\u044b \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u0432\u0441\u0435 \u043c\u043e\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f.<\/p>\n<p>\u0418\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043c\u044b \u0431\u0443\u0434\u0435\u0442 <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.google.android.apps.ai.sandbox&amp;hl=ru&amp;gl=US\" rel=\"noopener noreferrer nofollow\">\u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 AI Test Kitchen<\/a> (\u0434\u0430\u043b\u0435\u0435 &#8212; ATK) \u043f\u043e\u0434 Android \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/portswigger.net\/burp\/documentation\/desktop\/mobile\/config-android-device\" rel=\"noopener noreferrer nofollow\">Burp Suite Proxy.<\/a><\/p>\n<p>\u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 ATK \u0431\u044b\u043b\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043e\u0434\u043d\u0430 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f &#8212; MusicLM. Imagen \u043d\u0435 \u0431\u044b\u043b \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 Imagen \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 API.<\/p>\n<h2>\u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/h2>\n<p>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c ATK \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a. \u0421 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u043a <code>https:\/\/aitestkitchen.withgoogle.com\/<\/code> \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 React-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Next.js. \u0418\u0437 \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u043c, \u0447\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<figure class=\"\"><\/figure>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0443\u0437\u044b\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 \u0434\u0435\u043c\u043e MusicLM.<\/p>\n<p>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 json-\u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u0445\u043e\u0441\u0442 <code>https:\/\/content-aisandbox-pa.googleapis.co<\/code> \u043a \u043c\u0435\u0442\u043e\u0434\u0443 <code>soundDemo. <\/code>\u0414\u043b\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0439 Bearer-\u0442\u043e\u043a\u0435\u043d<\/p>\n<pre><code class=\"json\">https:\/\/content-aisandbox-pa.googleapis.com\/v1:soundDemo?alt=json {   \"generationCount\": 2,   \"input\": {     \"textInput\": \"Ambient soundscape, light, eery, and dreary\"   },   \"sessionId\": \"c66c7436-f66f-4d65-b481-103c734b102a\",   \"soundLengthSeconds\": 30 }<\/code><\/pre>\n<p>\u041e\u0442\u0432\u0435\u0442\u043e\u043c \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0442\u0440\u0435\u043a\u0438.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>soundLengthSeconds<\/code> \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0434\u043b\u0438\u043d\u043d\u0443\u044e \u0442\u0440\u0435\u043a\u043e\u0432, \u043d\u043e \u043e\u043d \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c.<\/p>\n<h2>\u0423\u0433\u043b\u0443\u0431\u043b\u044f\u0435\u043c\u0441\u044f<\/h2>\n<p>\u041f\u043e\u043c\u0438\u043c\u043e \u044d\u0442\u043e\u0433\u043e, \u043f\u0440\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0431\u044b\u043b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u0434\u0440\u0443\u0433\u043e\u0439, \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 GET-\u0437\u0430\u043f\u0440\u043e\u0441. \u041e\u043d \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u043c\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 api-\u043c\u0435\u0442\u043e\u0434\u044b \u0438 \u043a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435, \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0447\u0435\u0440\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u0435\u043c\u043e.<\/p>\n<details class=\"spoiler\">\n<summary>\u0414\u043b\u0438\u043d\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"json\">https:\/\/content-aisandbox-pa.googleapis.com\/$discovery\/rest?key=AIzaSyBtrm0o5ab1c-Ec8ZuLcGt3oJAA5VWt3pY&amp;pp=0&amp;fields=fields%5B%22kind%22%5D%2Cfields%5B%22name%22%5D%2Cfields%5B%22version%22%5D%2Cfields%5B%22rootUrl%22%5D%2Cfields%5B%22servicePath%22%5D%2Cfields%5B%22resources%22%5D%2Cfields%5B%22parameters%22%5D%2Cfields%5B%22methods%22%5D%2Cfields%5B%22batchPath%22%5D%2Cfields%5B%22id%22%5D  {   \"id\": \"aisandbox_pa:v1\",   \"version\": \"v1\",   \"kind\": \"discovery#restDescription\",   \"servicePath\": \"\",   \"batchPath\": \"batch\",   \"rootUrl\": \"https:\/\/aisandbox-pa.googleapis.com\/\",   \"parameters\": {     \"upload_protocol\": {       \"description\": \"Upload protocol for media (e.g. \\\"raw\\\", \\\"multipart\\\").\",       \"type\": \"string\",       \"location\": \"query\"     },     \"fields\": {       \"location\": \"query\",       \"type\": \"string\",       \"description\": \"Selector specifying which fields to include in a partial response.\"     },     \"oauth_token\": {       \"description\": \"OAuth 2.0 token for the current user.\",       \"location\": \"query\",       \"type\": \"string\"     },     \"alt\": {       \"location\": \"query\",       \"description\": \"Data format for response.\",       \"default\": \"json\",       \"type\": \"string\",       \"enum\": [         \"json\",         \"media\",         \"proto\"       ],       \"enumDescriptions\": [         \"Responses with Content-Type of application\/json\",         \"Media download with context-dependent Content-Type\",         \"Responses with Content-Type of application\/x-protobuf\"       ]     },     \"callback\": {       \"type\": \"string\",       \"description\": \"JSONP\",       \"location\": \"query\"     },     \"key\": {       \"type\": \"string\",       \"description\": \"API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.\",       \"location\": \"query\"     },     \"quotaUser\": {       \"type\": \"string\",       \"location\": \"query\",       \"description\": \"Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.\"     },     \"prettyPrint\": {       \"location\": \"query\",       \"type\": \"boolean\",       \"description\": \"Returns response with indentations and line breaks.\",       \"default\": \"true\"     },     \"access_token\": {       \"type\": \"string\",       \"location\": \"query\",       \"description\": \"OAuth access token.\"     },     \"$.xgafv\": {       \"enum\": [         \"1\",         \"2\"       ],       \"location\": \"query\",       \"description\": \"V1 error format.\",       \"type\": \"string\",       \"enumDescriptions\": [         \"v1 error format\",         \"v2 error format\"       ]     },     \"uploadType\": {       \"location\": \"query\",       \"description\": \"Legacy upload protocol for media (e.g. \\\"media\\\", \\\"multipart\\\").\",       \"type\": \"string\"     }   },   \"name\": \"aisandbox_pa\",   \"resources\": {     \"waitlistEntries\": {       \"methods\": {         \"delete\": {           \"id\": \"aisandbox_pa.waitlistEntries.delete\",           \"parameterOrder\": [             \"name\"           ],           \"httpMethod\": \"DELETE\",           \"flatPath\": \"v1\/waitlistEntries\/{waitlistEntriesId}\",           \"path\": \"v1\/{+name}\",           \"parameters\": {             \"name\": {               \"required\": true,               \"pattern\": \"^waitlistEntries\/[^\/]+$\",               \"type\": \"string\",               \"location\": \"path\",               \"description\": \"Required. The name of the waitlist entry to delete. This should always be \\\"waitlistEntries\/me\\\"\"             }           },           \"response\": {             \"$ref\": \"Empty\"           },           \"description\": \"Deletes the waitlist entry for the current user if there is one. Errors with NOT_FOUND if no waitlist entry exists for the current user. The name should always be \\\"waitlistEntries\/me\\\".\"         },         \"create\": {           \"request\": {             \"$ref\": \"WaitlistEntry\"           },           \"path\": \"v1\/waitlistEntries\",           \"id\": \"aisandbox_pa.waitlistEntries.create\",           \"flatPath\": \"v1\/waitlistEntries\",           \"parameterOrder\": [],           \"httpMethod\": \"POST\",           \"response\": {             \"$ref\": \"WaitlistEntry\"           },           \"description\": \"Creates a waitlist entry for the current user if it doesn't already exist. If a waitlist entry already exists for the current user, then this call errors with ALREADY_EXISTS. See [1] below for details. None of the fields can be set by the client, so an empty entry should be passed as the body. [1] The waitlist entry is always based on the authenticated user's ID, so this behaves like a standard Create method with a User-specified id as described here: https:\/\/google.aip.dev\/133#user-specified-ids\",           \"parameters\": {             \"frontendCommitHash\": {               \"location\": \"query\",               \"description\": \"The commit hash of the web frontend. This is used for tracking the version of the user consent text\/UI at the time the user joined the waitlist. Represented as a hex-encoded string version of the SHA1 commit hash.\",               \"type\": \"string\"             }           }         },         \"get\": {           \"parameterOrder\": [             \"name\"           ],           \"description\": \"Gets the waitlist entry for the current user if there is one. Errors with NOT_FOUND if no waitlist entry exists for the current user. The name should always be \\\"waitlistEntries\/me\\\".\",           \"response\": {             \"$ref\": \"WaitlistEntry\"           },           \"parameters\": {             \"name\": {               \"location\": \"path\",               \"type\": \"string\",               \"description\": \"Required. The name of the waitlist entry to retrieve. This should always be \\\"waitlistEntries\/me\\\"\",               \"required\": true,               \"pattern\": \"^waitlistEntries\/[^\/]+$\"             }           },           \"path\": \"v1\/{+name}\",           \"httpMethod\": \"GET\",           \"flatPath\": \"v1\/waitlistEntries\/{waitlistEntriesId}\",           \"id\": \"aisandbox_pa.waitlistEntries.get\"         }       }     },     \"v1\": {       \"methods\": {         \"rate\": {           \"response\": {             \"$ref\": \"RateLamdaResponseResponse\"           },           \"httpMethod\": \"POST\",           \"parameterOrder\": [],           \"path\": \"v1:rate\",           \"id\": \"aisandbox_pa.rate\",           \"request\": {             \"$ref\": \"RateLamdaResponseRequest\"           },           \"flatPath\": \"v1:rate\",           \"parameters\": {},           \"description\": \"Rate a LaMDA response.\"         },         \"soundDemo\": {           \"path\": \"v1:soundDemo\",           \"id\": \"aisandbox_pa.soundDemo\",           \"httpMethod\": \"POST\",           \"parameterOrder\": [],           \"response\": {             \"$ref\": \"SoundDemoResponse\"           },           \"request\": {             \"$ref\": \"SoundDemoRequest\"           },           \"flatPath\": \"v1:soundDemo\",           \"description\": \"Reproduces sound on given SoundDemoRequest.\",           \"parameters\": {}         },         \"deleteSession\": {           \"path\": \"v1:deleteSession\",           \"id\": \"aisandbox_pa.deleteSession\",           \"flatPath\": \"v1:deleteSession\",           \"parameters\": {},           \"httpMethod\": \"POST\",           \"request\": {             \"$ref\": \"DeleteSessionRequest\"           },           \"parameterOrder\": [],           \"response\": {             \"$ref\": \"DeleteSessionResponse\"           },           \"description\": \"Delete all data for a session.\"         },         \"demo\": {           \"path\": \"v1:demo\",           \"request\": {             \"$ref\": \"DemoRequest\"           },           \"id\": \"aisandbox_pa.demo\",           \"flatPath\": \"v1:demo\",           \"response\": {             \"$ref\": \"DemoResponse\"           },           \"parameters\": {},           \"httpMethod\": \"POST\",           \"description\": \"Invoke a specified demo.\",           \"parameterOrder\": []         },         \"upscaleImage\": {           \"response\": {             \"$ref\": \"UpscaleImageResponse\"           },           \"request\": {        <\/code><\/pre>\n<\/div>\n<\/details>\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-348153","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/348153","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=348153"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/348153\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=348153"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=348153"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=348153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}