{"id":104596,"date":"2025-04-04T21:11:54","date_gmt":"2025-04-04T16:41:54","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/%d9%86%da%af%d8%b1%d8%a7%d9%86%db%8c-%d8%af%d8%b1-%d9%85%d9%88%d8%b1%d8%af-%d8%ae%d8%b1%d8%a7%d8%a8%db%8c-llm-%d8%b1%d8%a7-%d9%85%d8%aa%d9%88%d9%82%d9%81-%da%a9%d9%86%db%8c%d8%af-%d8%a8%d8%b1%d9%86\/"},"modified":"2025-04-04T21:11:54","modified_gmt":"2025-04-04T16:41:54","slug":"%d9%86%da%af%d8%b1%d8%a7%d9%86%db%8c-%d8%af%d8%b1-%d9%85%d9%88%d8%b1%d8%af-%d8%ae%d8%b1%d8%a7%d8%a8%db%8c-llm-%d8%b1%d8%a7-%d9%85%d8%aa%d9%88%d9%82%d9%81-%da%a9%d9%86%db%8c%d8%af-%d8%a8%d8%b1%d9%86","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/%d9%86%da%af%d8%b1%d8%a7%d9%86%db%8c-%d8%af%d8%b1-%d9%85%d9%88%d8%b1%d8%af-%d8%ae%d8%b1%d8%a7%d8%a8%db%8c-llm-%d8%b1%d8%a7-%d9%85%d8%aa%d9%88%d9%82%d9%81-%da%a9%d9%86%db%8c%d8%af-%d8%a8%d8%b1%d9%86\/","title":{"rendered":"\u0646\u06af\u0631\u0627\u0646\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u062e\u0631\u0627\u0628\u06cc LLM \u0631\u0627 \u0645\u062a\u0648\u0642\u0641 \u06a9\u0646\u06cc\u062f: \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc AI \u0627\u0646\u0639\u0637\u0627\u0641 \u067e\u0630\u06cc\u0631 \u0631\u0627 \u0628\u0627 &#8220;AI-FALLBACK&#8221; \u0628\u0633\u0627\u0632\u06cc\u062f"},"content":{"rendered":"<div data-article-id=\"2381515\" id=\"article-body\">\n<p>\u0645\u062f\u0644 \u0647\u0627\u06cc \u0628\u0632\u0631\u06af \u0632\u0628\u0627\u0646 (LLM) \u0628\u0647 \u0637\u0648\u0631 \u0641\u0632\u0627\u06cc\u0646\u062f\u0647 \u0627\u06cc \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0645\u062f\u0631\u0646 \u0645\u0647\u0645 \u0647\u0633\u062a\u0646\u062f \u0648 \u0627\u0632 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u0645\u062d\u062a\u0648\u0627 \u062a\u0627 \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0628\u0631\u062e\u0648\u0631\u062f\u0627\u0631 \u0647\u0633\u062a\u0646\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644 \u060c \u0628\u0627 \u062a\u06a9\u06cc\u0647 \u0628\u0631 \u06cc\u06a9 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0648\u0627\u062d\u062f (\u0645\u0627\u0646\u0646\u062f OpenAi \u060c Anthropic \u060c Google) \u062e\u0637\u0631\u0627\u062a \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f: \u062e\u0631\u0627\u0628\u06cc API \u060c \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0646\u0631\u062e \u060c \u0645\u0633\u0627\u0626\u0644 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0638\u0631\u0641\u06cc\u062a \u06cc\u0627 \u062e\u0637\u0627\u0647\u0627\u06cc \u06af\u0630\u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u062e\u062f\u0645\u0627\u062a \u0634\u0645\u0627 \u0631\u0627 \u0645\u062e\u062a\u0644 \u06a9\u0646\u062f \u060c \u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u062a\u062e\u0631\u06cc\u0628 \u06a9\u0646\u062f \u0648 \u0628\u0631 \u062a\u062f\u0627\u0648\u0645 \u062a\u062c\u0627\u0631\u062a \u062a\u0623\u062b\u06cc\u0631 \u0628\u06af\u0630\u0627\u0631\u062f.<\/p>\n<p>\u0686\u06af\u0648\u0646\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc \u062a\u0631\u06cc \u0628\u0633\u0627\u0632\u06cc\u0645\u061f \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0645\u0646\u0637\u0642 \u0633\u0641\u0627\u0631\u0634\u06cc \u06af\u0632\u06cc\u0646\u0647 \u0627\u06cc \u0627\u0633\u062a \u060c \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u062f. \u06cc\u06a9 \u0631\u0627\u0647 \u062d\u0644 \u0633\u0627\u062f\u0647 \u062a\u0631 \u0648 \u0632\u06cc\u0628\u0627 \u062a\u0631 \u0627\u0633\u062a <code>ai-fallback<\/code>\u0628\u0634\u0631<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/%d9%86%da%af%d8%b1%d8%a7%d9%86%db%8c-%d8%af%d8%b1-%d9%85%d9%88%d8%b1%d8%af-%d8%ae%d8%b1%d8%a7%d8%a8%db%8c-llm-%d8%b1%d8%a7-%d9%85%d8%aa%d9%88%d9%82%d9%81-%da%a9%d9%86%db%8c%d8%af-%d8%a8%d8%b1%d9%86\/#%D9%85%D8%B9%D8%B1%D9%81%DB%8C_ai-fallback_%D8%A7%D9%86%D8%B9%D8%B7%D8%A7%D9%81_%D9%BE%D8%B0%DB%8C%D8%B1%DB%8C_%D8%B3%D8%A7%D8%AF%D9%87_%D9%88_%D8%A7%D8%AA%D9%88%D9%85%D8%A7%D8%AA%DB%8C%DA%A9_LLM\" >\u0645\u0639\u0631\u0641\u06cc ai-fallback: \u0627\u0646\u0639\u0637\u0627\u0641 \u067e\u0630\u06cc\u0631\u06cc \u0633\u0627\u062f\u0647 \u0648 \u0627\u062a\u0648\u0645\u0627\u062a\u06cc\u06a9 LLM<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/%d9%86%da%af%d8%b1%d8%a7%d9%86%db%8c-%d8%af%d8%b1-%d9%85%d9%88%d8%b1%d8%af-%d8%ae%d8%b1%d8%a7%d8%a8%db%8c-llm-%d8%b1%d8%a7-%d9%85%d8%aa%d9%88%d9%82%d9%81-%da%a9%d9%86%db%8c%d8%af-%d8%a8%d8%b1%d9%86\/#%DA%86%DA%AF%D9%88%D9%86%D9%87_%DA%A9%D8%A7%D8%B1_%D9%85%DB%8C_%DA%A9%D9%86%D8%AF_%DB%8C%DA%A9_%D9%86%D9%85%D9%88%D9%86%D9%87_%D8%B9%D9%85%D9%84%DB%8C_%D8%A8%D8%A7_Vercel_Ai_SDK\" >\u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f: \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0639\u0645\u0644\u06cc \u0628\u0627 Vercel Ai SDK<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/%d9%86%da%af%d8%b1%d8%a7%d9%86%db%8c-%d8%af%d8%b1-%d9%85%d9%88%d8%b1%d8%af-%d8%ae%d8%b1%d8%a7%d8%a8%db%8c-llm-%d8%b1%d8%a7-%d9%85%d8%aa%d9%88%d9%82%d9%81-%da%a9%d9%86%db%8c%d8%af-%d8%a8%d8%b1%d9%86\/#%D9%88%DB%8C%DA%98%DA%AF%DB%8C_%D9%87%D8%A7%DB%8C_%DA%A9%D9%84%DB%8C%D8%AF%DB%8C_%D8%A8%D8%B1%D8%A7%DB%8C_%D9%82%D8%A7%D8%A8%D9%84%DB%8C%D8%AA_%D8%A7%D8%B7%D9%85%DB%8C%D9%86%D8%A7%D9%86_%D8%AA%D9%88%D9%84%DB%8C%D8%AF\" >\u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u06a9\u0644\u06cc\u062f\u06cc \u0628\u0631\u0627\u06cc \u0642\u0627\u0628\u0644\u06cc\u062a \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062a\u0648\u0644\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/%d9%86%da%af%d8%b1%d8%a7%d9%86%db%8c-%d8%af%d8%b1-%d9%85%d9%88%d8%b1%d8%af-%d8%ae%d8%b1%d8%a7%d8%a8%db%8c-llm-%d8%b1%d8%a7-%d9%85%d8%aa%d9%88%d9%82%d9%81-%da%a9%d9%86%db%8c%d8%af-%d8%a8%d8%b1%d9%86\/#%DA%86%D8%B1%D8%A7_%D8%A7%DB%8C%D9%86_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%87%D8%A7%DB%8C_%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D8%A7%D9%87%D9%85%DB%8C%D8%AA_%D8%AF%D8%A7%D8%B1%D8%AF\" >\u0686\u0631\u0627 \u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u0627\u0647\u0645\u06cc\u062a \u062f\u0627\u0631\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/%d9%86%da%af%d8%b1%d8%a7%d9%86%db%8c-%d8%af%d8%b1-%d9%85%d9%88%d8%b1%d8%af-%d8%ae%d8%b1%d8%a7%d8%a8%db%8c-llm-%d8%b1%d8%a7-%d9%85%d8%aa%d9%88%d9%82%d9%81-%da%a9%d9%86%db%8c%d8%af-%d8%a8%d8%b1%d9%86\/#%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8_%D8%A7%D8%B3%D8%AA%D8%B1%D8%A7%D8%AA%DA%98%DB%8C_%D8%A8%D8%A7%D8%B2%DA%AF%D8%B4%D8%AA_%D8%AE%D9%88%D8%AF\" >\u0627\u0646\u062a\u062e\u0627\u0628 \u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc \u0628\u0627\u0632\u06af\u0634\u062a \u062e\u0648\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/%d9%86%da%af%d8%b1%d8%a7%d9%86%db%8c-%d8%af%d8%b1-%d9%85%d9%88%d8%b1%d8%af-%d8%ae%d8%b1%d8%a7%d8%a8%db%8c-llm-%d8%b1%d8%a7-%d9%85%d8%aa%d9%88%d9%82%d9%81-%da%a9%d9%86%db%8c%d8%af-%d8%a8%d8%b1%d9%86\/#%D8%A7%D9%85%D8%B1%D9%88%D8%B2_%D8%B4%D8%B1%D9%88%D8%B9_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0627\u0645\u0631\u0648\u0632 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%B9%D8%B1%D9%81%DB%8C_ai-fallback_%D8%A7%D9%86%D8%B9%D8%B7%D8%A7%D9%81_%D9%BE%D8%B0%DB%8C%D8%B1%DB%8C_%D8%B3%D8%A7%D8%AF%D9%87_%D9%88_%D8%A7%D8%AA%D9%88%D9%85%D8%A7%D8%AA%DB%8C%DA%A9_LLM\"><\/span>\n<p>  \u0645\u0639\u0631\u0641\u06cc <code>ai-fallback<\/code>: \u0627\u0646\u0639\u0637\u0627\u0641 \u067e\u0630\u06cc\u0631\u06cc \u0633\u0627\u062f\u0647 \u0648 \u0627\u062a\u0648\u0645\u0627\u062a\u06cc\u06a9 LLM<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><code>ai-fallback<\/code>  \u06cc\u06a9 \u0628\u0633\u062a\u0647 \u0633\u0628\u06a9 NPM \u0633\u0628\u06a9 \u0648 \u0648\u0627\u0628\u0633\u062a\u0647 \u0628\u0647 \u0635\u0641\u0631 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0637\u0648\u0631 \u062e\u0627\u0635 \u0628\u0631\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u0628\u0627\u0632\u067e\u0631\u062f\u0627\u062e\u062a \u0627\u062a\u0648\u0645\u0627\u062a\u06cc\u06a9 \u0628\u06cc\u0646 \u0645\u062f\u0644\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 AI \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0628\u0627 Vercel Ai SDK \u0645\u062d\u0628\u0648\u0628 () \u0627\u062f\u063a\u0627\u0645 \u0645\u06cc \u0634\u0648\u062f (<code>ai<\/code> \u0628\u0633\u062a\u0647)<\/p>\n<p>\u0627\u06cc\u062f\u0647 \u0627\u0635\u0644\u06cc \u0633\u0627\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<ol>\n<li>  \u0634\u0645\u0627 \u06cc\u06a9 \u0644\u06cc\u0633\u062a \u0633\u0641\u0627\u0631\u0634 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0632 \u0645\u062f\u0644 \u0647\u0627\u06cc AI \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code>ai<\/code> \u0639\u0645\u0644\u06a9\u0631\u062f \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 SDK (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u060c <code>anthropic()<\/code>\u0628\u0627 <code>openai()<\/code>).<\/li>\n<li>  \u0634\u0645\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u062f\u0644 \u0645\u062f\u0644 Fallback \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u062f <code>createFallback<\/code>\u0628\u0634\u0631<\/li>\n<li>  \u0634\u0645\u0627 \u0627\u0632 \u0627\u06cc\u0646 \u0646\u0645\u0648\u0646\u0647 \u0645\u062f\u0644 Fallback \u0645\u0633\u062a\u0642\u06cc\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f <code>ai<\/code> \u062a\u0648\u0627\u0628\u0639 SDK \u0645\u0627\u0646\u0646\u062f <code>generateText<\/code>\u0628\u0627 <code>streamText<\/code>\u060c \u06cc\u0627 <code>streamObject<\/code>\u0628\u0634\u0631<\/li>\n<li>  \u0627\u06af\u0631 \u0645\u062f\u0644 \u0627\u0635\u0644\u06cc \u0634\u0645\u0627 \u0634\u06a9\u0633\u062a \u0628\u062e\u0648\u0631\u062f \u060c <code>ai-fallback<\/code> \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0627 \u0628\u0627 \u0645\u062f\u0644 \u0628\u0639\u062f\u06cc \u062f\u0631 \u0644\u06cc\u0633\u062a \u062e\u0648\u062f \u0627\u062d\u06cc\u0627 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<\/ol>\n<p>\u0627\u06cc\u0646 \u0627\u0645\u0631 \u0628\u0647 \u0637\u0648\u0631 \u0642\u0627\u0628\u0644 \u062a\u0648\u062c\u0647\u06cc \u0645\u0642\u0627\u0648\u0645\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0631\u0627 \u0628\u0627 \u062d\u062f\u0627\u0642\u0644 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u06a9\u062f \u062a\u0642\u0648\u06cc\u062a \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%DA%86%DA%AF%D9%88%D9%86%D9%87_%DA%A9%D8%A7%D8%B1_%D9%85%DB%8C_%DA%A9%D9%86%D8%AF_%DB%8C%DA%A9_%D9%86%D9%85%D9%88%D9%86%D9%87_%D8%B9%D9%85%D9%84%DB%8C_%D8%A8%D8%A7_Vercel_Ai_SDK\"><\/span>\n<p>  \u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f: \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0639\u0645\u0644\u06cc \u0628\u0627 Vercel Ai SDK<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u062f\u063a\u0627\u0645 \u06a9\u0646\u0646\u062f\u0647 <code>ai-fallback<\/code> \u0633\u0627\u062f\u0647 \u0627\u0633\u062a \u060c \u0628\u0647 \u062e\u0635\u0648\u0635 \u0627\u06af\u0631 \u0627\u0632 \u0642\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f <code>ai<\/code> \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">createFallback<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">ai-fallback<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">anthropic<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">@ai-sdk\/anthropic<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">openai<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">@ai-sdk\/openai<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">generateText<\/span><span class=\"p\">,<\/span> <span class=\"nx\">streamText<\/span><span class=\"p\">,<\/span> <span class=\"nx\">streamObject<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">ai<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">z<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">zod<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"c1\">\/\/ 1. Create the fallback model instance<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">model<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">createFallback<\/span><span class=\"p\">({<\/span>\n  <span class=\"c1\">\/\/ Define models in preferred order using ai SDK functions<\/span>\n  <span class=\"na\">models<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\n    <span class=\"nf\">anthropic<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">claude-3-haiku-20240307<\/span><span class=\"dl\">\"<\/span><span class=\"p\">),<\/span> <span class=\"c1\">\/\/ Try Claude 3 Haiku first<\/span>\n    <span class=\"nf\">openai<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">gpt-3.5-turbo<\/span><span class=\"dl\">\"<\/span><span class=\"p\">),<\/span> <span class=\"c1\">\/\/ Fallback to GPT-3.5 Turbo<\/span>\n    <span class=\"c1\">\/\/ Add more models if needed<\/span>\n  <span class=\"p\">],<\/span>\n  <span class=\"c1\">\/\/ Optional: Log errors when a fallback occurs<\/span>\n  <span class=\"na\">onError<\/span><span class=\"p\">:<\/span> <span class=\"p\">(<\/span><span class=\"nx\">error<\/span><span class=\"p\">,<\/span> <span class=\"nx\">modelId<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">warn<\/span><span class=\"p\">(<\/span><span class=\"s2\">`Error with model <\/span><span class=\"p\">${<\/span><span class=\"nx\">modelId<\/span><span class=\"p\">}<\/span><span class=\"s2\">: <\/span><span class=\"p\">${<\/span><span class=\"nx\">error<\/span><span class=\"p\">.<\/span><span class=\"nx\">message<\/span><span class=\"p\">}<\/span><span class=\"s2\">. Attempting fallback.`<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">},<\/span>\n  <span class=\"c1\">\/\/ Optional: Automatically try switching back to the primary model<\/span>\n  <span class=\"c1\">\/\/ after a specified interval (e.g., 5 minutes) following an error.<\/span>\n  <span class=\"na\">modelResetInterval<\/span><span class=\"p\">:<\/span> <span class=\"mi\">5<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">60<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">1000<\/span><span class=\"p\">,<\/span> <span class=\"c1\">\/\/ 5 minutes in milliseconds<\/span>\n\n  <span class=\"c1\">\/\/ Optional: For streaming, decide if retrying should happen even<\/span>\n  <span class=\"c1\">\/\/ if some output was already sent. Set to true to restart generation<\/span>\n  <span class=\"c1\">\/\/ on the fallback model from scratch if an error occurs mid-stream.<\/span>\n  <span class=\"c1\">\/\/ retryAfterOutput: true,<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"c1\">\/\/ --- Usage Examples ---<\/span>\n\n<span class=\"c1\">\/\/ 2. Use the fallback 'model' directly with Vercel AI SDK functions<\/span>\n\n<span class=\"c1\">\/\/ Example 1: Generate Text<\/span>\n<span class=\"k\">async<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">generate<\/span><span class=\"p\">(<\/span><span class=\"nx\">prompt<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">try<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">text<\/span> <span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nf\">generateText<\/span><span class=\"p\">({<\/span>\n      <span class=\"na\">model<\/span><span class=\"p\">:<\/span> <span class=\"nx\">model<\/span><span class=\"p\">,<\/span> <span class=\"c1\">\/\/ Pass the fallback model instance<\/span>\n      <span class=\"na\">system<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">You are a helpful assistant.<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n      <span class=\"na\">prompt<\/span><span class=\"p\">:<\/span> <span class=\"nx\">prompt<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">});<\/span>\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Generated Text:<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">text<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">}<\/span> <span class=\"k\">catch <\/span><span class=\"p\">(<\/span><span class=\"nx\">error<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">error<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">All AI fallbacks failed for generateText:<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">error<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"c1\">\/\/ Example 2: Stream Text<\/span>\n<span class=\"k\">async<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">stream<\/span><span class=\"p\">(<\/span><span class=\"nx\">prompt<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">try<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">textStream<\/span> <span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nf\">streamText<\/span><span class=\"p\">({<\/span>\n      <span class=\"na\">model<\/span><span class=\"p\">:<\/span> <span class=\"nx\">model<\/span><span class=\"p\">,<\/span> <span class=\"c1\">\/\/ Pass the fallback model instance<\/span>\n      <span class=\"na\">system<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">You are a helpful assistant.<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n      <span class=\"na\">prompt<\/span><span class=\"p\">:<\/span> <span class=\"nx\">prompt<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">});<\/span>\n\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Streaming Text:<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">for<\/span> <span class=\"k\">await <\/span><span class=\"p\">(<\/span><span class=\"kd\">const<\/span> <span class=\"nx\">chunk<\/span> <span class=\"k\">of<\/span> <span class=\"nx\">textStream<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">process<\/span><span class=\"p\">.<\/span><span class=\"nx\">stdout<\/span><span class=\"p\">.<\/span><span class=\"nf\">write<\/span><span class=\"p\">(<\/span><span class=\"nx\">chunk<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">();<\/span> <span class=\"c1\">\/\/ Newline after stream<\/span>\n  <span class=\"p\">}<\/span> <span class=\"k\">catch <\/span><span class=\"p\">(<\/span><span class=\"nx\">error<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">error<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">All AI fallbacks failed for streamText:<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">error<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"c1\">\/\/ Example 3: Stream Structured Object (using Zod)<\/span>\n<span class=\"k\">async<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">generateStructured<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">try<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">partialObjectStream<\/span> <span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nf\">streamObject<\/span><span class=\"p\">({<\/span>\n      <span class=\"na\">model<\/span><span class=\"p\">:<\/span> <span class=\"nx\">model<\/span><span class=\"p\">,<\/span> <span class=\"c1\">\/\/ Pass the fallback model instance<\/span>\n      <span class=\"na\">system<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">You are a helpful assistant.<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n      <span class=\"na\">prompt<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Generate a person object with name and age.<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n      <span class=\"na\">schema<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nf\">object<\/span><span class=\"p\">({<\/span>\n        <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nf\">string<\/span><span class=\"p\">(),<\/span>\n        <span class=\"na\">age<\/span><span class=\"p\">:<\/span> <span class=\"nx\">z<\/span><span class=\"p\">.<\/span><span class=\"nf\">number<\/span><span class=\"p\">(),<\/span>\n      <span class=\"p\">}),<\/span>\n    <span class=\"p\">});<\/span>\n\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Streaming Object:<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">for<\/span> <span class=\"k\">await <\/span><span class=\"p\">(<\/span><span class=\"kd\">const<\/span> <span class=\"nx\">partialObject<\/span> <span class=\"k\">of<\/span> <span class=\"nx\">partialObjectStream<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"nx\">partialObject<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n  <span class=\"p\">}<\/span> <span class=\"k\">catch <\/span><span class=\"p\">(<\/span><span class=\"nx\">error<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">error<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">All AI fallbacks failed for streamObject:<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">error<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"c1\">\/\/ --- Run Examples ---<\/span>\n<span class=\"nf\">generate<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Explain the concept of idempotency in APIs.<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n<span class=\"nf\">stream<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Write a short story about a curious robot.<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n<span class=\"nf\">generateStructured<\/span><span class=\"p\">();<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D9%88%DB%8C%DA%98%DA%AF%DB%8C_%D9%87%D8%A7%DB%8C_%DA%A9%D9%84%DB%8C%D8%AF%DB%8C_%D8%A8%D8%B1%D8%A7%DB%8C_%D9%82%D8%A7%D8%A8%D9%84%DB%8C%D8%AA_%D8%A7%D8%B7%D9%85%DB%8C%D9%86%D8%A7%D9%86_%D8%AA%D9%88%D9%84%DB%8C%D8%AF\"><\/span>\n<p>  \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u06a9\u0644\u06cc\u062f\u06cc \u0628\u0631\u0627\u06cc \u0642\u0627\u0628\u0644\u06cc\u062a \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062a\u0648\u0644\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>  <strong>\u0627\u062f\u063a\u0627\u0645 \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647:<\/strong> \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0627 <code>ai<\/code> \u0639\u0645\u0644\u06a9\u0631\u062f\u0647\u0627\u06cc \u0627\u0635\u0644\u06cc SDK.<\/li>\n<li>  <strong>\u0633\u0648\u0626\u06cc\u0686\u06cc\u0646\u06af \u062e\u0648\u062f\u06a9\u0627\u0631:<\/strong> \u062e\u0637\u0627\u0647\u0627 \u0648 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u062e\u0631\u0627\u0628\u06cc \u0634\u0641\u0627\u0641 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0634\u0641\u0627\u0641 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f.<\/li>\n<li>  <strong>\u062a\u0646\u0638\u06cc\u0645 \u0645\u062c\u062f\u062f \u0642\u0627\u0628\u0644 \u062a\u0646\u0638\u06cc\u0645:<\/strong> \u062f\u0631 <code>modelResetInterval<\/code> \u06af\u0632\u06cc\u0646\u0647 \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0628\u0639\u062f \u0627\u0632 \u06cc\u06a9 \u062f\u0648\u0631\u0647 Cooldown \u060c \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u0647 \u0645\u062f\u0644 \u0627\u0635\u0644\u06cc (\u0627\u063a\u0644\u0628 \u062a\u0631\u062c\u06cc\u062d \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u06cc\u0627 \u0627\u0631\u0632\u0627\u0646 \u062a\u0631) \u0628\u0631\u06af\u0631\u062f\u062f \u060c \u0648 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0634\u0645\u0627 \u062f\u0631 \u06cc\u06a9 \u0628\u0631\u06af\u0634\u062a\u06cc \u0628\u0627\u0644\u0642\u0648\u0647 \u06af\u0631\u0627\u0646 \u0642\u06cc\u0645\u062a \u0628\u06cc\u0634 \u0627\u0632 \u062d\u062f \u0644\u0627\u0632\u0645 \u0628\u0627\u0642\u06cc \u0646\u0645\u06cc \u0645\u0627\u0646\u0646\u062f.<\/li>\n<li>  <strong>\u0645\u0642\u0627\u0648\u0645\u062a \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u062c\u0631\u06cc\u0627\u0646:<\/strong> \u062f\u0631 <code>retryAfterOutput<\/code> \u06af\u0632\u06cc\u0646\u0647 \u06a9\u0646\u062a\u0631\u0644 \u062e\u0631\u0627\u0628\u06cc \u0647\u0627\u06cc \u0645\u06cc\u0627\u0646\u06cc \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f. \u062a\u0646\u0638\u06cc\u0645 \u0622\u0646 \u0631\u0648\u06cc <code>true<\/code> \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0627\u06af\u0631 \u062e\u0637\u0627\u06cc\u06cc \u067e\u0633 \u0627\u0632 \u0634\u0631\u0648\u0639 \u062c\u0631\u06cc\u0627\u0646 \u0631\u062e \u062f\u0647\u062f \u060c \u06a9\u0644 \u0641\u0631\u0622\u06cc\u0646\u062f \u0646\u0633\u0644 \u0627\u0632 \u0627\u0628\u062a\u062f\u0627 \u0631\u0648\u06cc \u0645\u062f\u0644 \u0645\u0648\u062c\u0648\u062f \u062f\u0648\u0628\u0627\u0631\u0647 \u0634\u0631\u0648\u0639 \u0645\u06cc \u0634\u0648\u062f \u0648 \u0627\u0632 \u062e\u0631\u0648\u062c\u06cc \u0647\u0627\u06cc \u0646\u0627\u0642\u0635 \u06cc\u0627 \u0641\u0627\u0633\u062f \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0645\u06cc \u06a9\u0646\u062f. \u062f\u0631 \u0635\u0648\u0631\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u060c \u0628\u0627\u06cc\u062f \u0645\u062d\u062a\u0648\u0627\u06cc \u06a9\u067e\u06cc \u0628\u0627\u0644\u0642\u0648\u0647 \u0631\u0627 \u062f\u0631 \u0645\u0646\u0637\u0642 \u06a9\u0627\u0631\u0628\u0631\u062f \u062e\u0648\u062f \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u06cc\u062f.<\/li>\n<li>  <strong>\u0646\u0638\u0627\u0631\u062a \u0628\u0631 \u062e\u0637\u0627:<\/strong> \u062f\u0631 <code>onError<\/code> \u067e\u0627\u0633\u062e \u0628\u0647 \u062a\u0645\u0627\u0633 \u060c \u0628\u0631\u0627\u06cc \u0648\u0631\u0648\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 \u0648 \u0646\u0638\u0627\u0631\u062a \u0628\u0631 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u0628\u0631\u06af\u0634\u062a \u067e\u0630\u06cc\u0631 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"%DA%86%D8%B1%D8%A7_%D8%A7%DB%8C%D9%86_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%87%D8%A7%DB%8C_%D8%AA%D9%88%D9%84%DB%8C%D8%AF_%D8%A7%D9%87%D9%85%DB%8C%D8%AA_%D8%AF%D8%A7%D8%B1%D8%AF\"><\/span>\n<p>  \u0686\u0631\u0627 \u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u0627\u0647\u0645\u06cc\u062a \u062f\u0627\u0631\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>  <strong>\u0642\u0627\u0628\u0644\u06cc\u062a \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u067e\u06cc\u0634\u0631\u0641\u062a\u0647:<\/strong> \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u062e\u0637\u0631 \u0645\u0634\u06a9\u0644\u0627\u062a \u062a\u06a9 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0631\u0627 \u06a9\u0627\u0647\u0634 \u0645\u06cc \u062f\u0647\u062f.<\/li>\n<li>  <strong>\u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0628\u0647\u0628\u0648\u062f \u06cc\u0627\u0641\u062a\u0647:<\/strong> \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0627 \u0627\u0632 \u062e\u0631\u0627\u0628\u06cc \u0647\u0627\u06cc \u067e\u0633 \u0632\u0645\u06cc\u0646\u0647 \u0645\u062d\u0627\u0641\u0638\u062a \u0645\u06cc \u06a9\u0646\u062f \u060c \u0648 \u062a\u0639\u0627\u0645\u0644 \u0647\u0627\u06cc \u0635\u0627\u0641 \u062a\u0631\u06cc \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>  <strong>\u0639\u0645\u0644\u06cc\u0627\u062a \u0633\u0627\u062f\u0647:<\/strong> \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u062e\u0637\u0627\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0648 \u0633\u0641\u0627\u0631\u0634\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u0639\u0648\u06cc\u0636 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u06a9\u0627\u0647\u0634 \u0645\u06cc \u062f\u0647\u062f.<\/li>\n<li>  <strong>\u0627\u0641\u0632\u0627\u06cc\u0634 \u0627\u0639\u062a\u0645\u0627\u062f \u0628\u0647 \u0646\u0641\u0633:<\/strong> \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc AI \u0631\u0627 \u0645\u0633\u062a\u0642\u0631 \u06a9\u0646\u06cc\u062f \u0648 \u062f\u0627\u0646\u0633\u062a\u0646 \u0627\u06cc\u0646\u06a9\u0647 \u0634\u0645\u0627 \u06cc\u06a9 \u0645\u06a9\u0627\u0646\u06cc\u0632\u0645 \u0641\u0627\u0644 \u0628\u0627\u0632\u06af\u0634\u062a \u0642\u0648\u06cc \u062f\u0627\u0631\u06cc\u062f.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8_%D8%A7%D8%B3%D8%AA%D8%B1%D8%A7%D8%AA%DA%98%DB%8C_%D8%A8%D8%A7%D8%B2%DA%AF%D8%B4%D8%AA_%D8%AE%D9%88%D8%AF\"><\/span>\n<p>  \u0627\u0646\u062a\u062e\u0627\u0628 \u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc \u0628\u0627\u0632\u06af\u0634\u062a \u062e\u0648\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0633\u0641\u0627\u0631\u0634 \u062e\u0648\u062f \u0631\u0627 <code>models<\/code> \u0622\u0631\u0627\u06cc\u0647 \u0628\u0631 \u0627\u0633\u0627\u0633:<\/p>\n<ul>\n<li>  <strong>\u0642\u0627\u0628\u0644\u06cc\u062a\/\u0639\u0645\u0644\u06a9\u0631\u062f:<\/strong> \u0628\u0627 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0645\u062f\u0644 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f.<\/li>\n<li>  <strong>\u0647\u0632\u06cc\u0646\u0647:<\/strong> \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0647 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0627\u0631\u0632\u0627\u0646 \u062a\u0631 \u0628\u0631\u06af\u0631\u062f\u06cc\u062f.<\/li>\n<li>  <strong>\u0633\u0631\u0639\u062a:<\/strong> \u0627\u06af\u0631 \u062a\u0623\u062e\u06cc\u0631 \u0645\u0647\u0645 \u0627\u0633\u062a \u060c \u0645\u062f\u0644 \u0647\u0627\u06cc \u0633\u0631\u06cc\u0639\u062a\u0631 \u0631\u0627 \u062f\u0631 \u0627\u0648\u0644\u0648\u06cc\u062a \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f.<\/li>\n<li>  <strong>\u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0648\u06cc\u0698\u06af\u06cc:<\/strong> \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 Fallbacks \u0627\u0632 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u060c \u062a\u0645\u0627\u0633 \u0628\u0627 \u0639\u0645\u0644\u06a9\u0631\u062f \u060c \u0637\u0631\u062d \u0647\u0627\u06cc \u062e\u0627\u0635 \u0628\u0631\u0627\u06cc <code>streamObject<\/code>).<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%D9%85%D8%B1%D9%88%D8%B2_%D8%B4%D8%B1%D9%88%D8%B9_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0627\u0645\u0631\u0648\u0632 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u0646\u0639\u0637\u0627\u0641 \u067e\u0630\u06cc\u0631\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f \u0628\u0633\u06cc\u0627\u0631 \u0645\u0647\u0645 \u0627\u0633\u062a \u060c \u0628\u0647 \u062e\u0635\u0648\u0635 \u0628\u0631\u0627\u06cc \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u0648\u0627\u0628\u0633\u062a\u0647 \u0628\u0647 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06cc. <code>ai-fallback<\/code> \u0631\u0648\u0634\u06cc \u0633\u0627\u062f\u0647 \u0648 \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0628\u0631\u0627\u06cc \u0645\u062d\u0627\u0641\u0638\u062a \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u0628\u06cc \u062b\u0628\u0627\u062a\u06cc \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p>\u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u062e\u0631\u0627\u0628\u06cc \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u062f. \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 <code>ai-fallback<\/code> \u0628\u0647 \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>npm <span class=\"nb\">install <\/span>ai-fallback @ai-sdk\/anthropic @ai-sdk\/openai ai zod\n<span class=\"c\"># or using yarn, pnpm, bun<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0633\u062a\u0647 \u0631\u0627 \u062f\u0631 NPM \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f: https:\/\/www.npmjs.com\/package\/ai-fallback<\/p>\n<p>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Vercel AI SDK \u0622\u0646 \u0631\u0627 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0627\u062f\u063a\u0627\u0645 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u06cc\u06a9 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0648\u0686\u06a9 \u0627\u0633\u062a \u06a9\u0647 \u067e\u06cc\u0634\u0631\u0641\u062a \u0642\u0627\u0628\u0644 \u062a\u0648\u062c\u0647\u06cc \u062f\u0631 \u062b\u0628\u0627\u062a \u062a\u0648\u0644\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0645\u062f\u0644 \u0647\u0627\u06cc \u0628\u0632\u0631\u06af \u0632\u0628\u0627\u0646 (LLM) \u0628\u0647 \u0637\u0648\u0631 \u0641\u0632\u0627\u06cc\u0646\u062f\u0647 \u0627\u06cc \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0645\u062f\u0631\u0646 \u0645\u0647\u0645 \u0647\u0633\u062a\u0646\u062f \u0648 \u0627\u0632 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u0645\u062d\u062a\u0648\u0627 \u062a\u0627 \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0628\u0631\u062e\u0648\u0631\u062f\u0627\u0631 \u0647\u0633\u062a\u0646\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644 \u060c \u0628\u0627 \u062a\u06a9\u06cc\u0647 \u0628\u0631 \u06cc\u06a9 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0648\u0627\u062d\u062f (\u0645\u0627\u0646\u0646\u062f OpenAi \u060c Anthropic \u060c Google) \u062e\u0637\u0631\u0627\u062a \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f: \u062e\u0631\u0627\u0628\u06cc API \u060c \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0646\u0631\u062e \u060c \u0645\u0633\u0627\u0626\u0644 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":104597,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/media2.dev.to\/dynamic\/image\/width=1000,height=500,fit=cover,gravity=auto,format=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpq2gfcw8veowa4lw02xk.png","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-104596","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/104596","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=104596"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/104596\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/104597"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=104596"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=104596"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=104596"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}