برنامه نویسی

نگرانی در مورد خرابی LLM را متوقف کنید: برنامه های AI انعطاف پذیر را با “AI-FALLBACK” بسازید

مدل های بزرگ زبان (LLM) به طور فزاینده ای برای برنامه های مدرن مهم هستند و از ویژگی های تولید محتوا تا استدلال پیچیده برخوردار هستند. با این حال ، با تکیه بر یک ارائه دهنده واحد (مانند OpenAi ، Anthropic ، Google) خطرات را ایجاد می کند: خرابی API ، محدودیت نرخ ، مسائل مربوط به ظرفیت یا خطاهای گذرا می تواند خدمات شما را مختل کند ، تجربه کاربر را تخریب کند و بر تداوم تجارت تأثیر بگذارد.

چگونه می توانیم ویژگی های قدرتمند هوش مصنوعی تری بسازیم؟ در حالی که منطق سفارشی گزینه ای است ، پیچیدگی را اضافه می کند. یک راه حل ساده تر و زیبا تر است ai-fallbackبشر

معرفی ai-fallback: انعطاف پذیری ساده و اتوماتیک LLM

ai-fallback یک بسته سبک NPM سبک و وابسته به صفر است که به طور خاص برای ارائه بازپرداخت اتوماتیک بین مدلهای مختلف AI طراحی شده است. این یکپارچه با Vercel Ai SDK محبوب () ادغام می شود (ai بسته)

ایده اصلی ساده است:

  1. شما یک لیست سفارش داده شده از مدل های AI را با استفاده از ai عملکرد ارائه دهنده SDK (به عنوان مثال ، anthropic()با openai()).
  2. شما با استفاده از مدل مدل Fallback ایجاد می کنید createFallbackبشر
  3. شما از این نمونه مدل Fallback مستقیم استفاده می کنید ai توابع SDK مانند generateTextبا streamText، یا streamObjectبشر
  4. اگر مدل اصلی شما شکست بخورد ، ai-fallback به طور خودکار درخواست را با مدل بعدی در لیست خود احیا می کند.

این امر به طور قابل توجهی مقاومت برنامه شما را با حداقل تغییرات کد تقویت می کند.

چگونه کار می کند: یک نمونه عملی با Vercel Ai SDK

ادغام کننده ai-fallback ساده است ، به خصوص اگر از قبل استفاده می کنید ai بسته بندی

import { createFallback } from "ai-fallback";
import { anthropic } from "@ai-sdk/anthropic";
import { openai } from "@ai-sdk/openai";
import { generateText, streamText, streamObject } from "ai";
import { z } from "zod";

// 1. Create the fallback model instance
const model = createFallback({
  // Define models in preferred order using ai SDK functions
  models: [
    anthropic("claude-3-haiku-20240307"), // Try Claude 3 Haiku first
    openai("gpt-3.5-turbo"), // Fallback to GPT-3.5 Turbo
    // Add more models if needed
  ],
  // Optional: Log errors when a fallback occurs
  onError: (error, modelId) => {
    console.warn(`Error with model ${modelId}: ${error.message}. Attempting fallback.`);
  },
  // Optional: Automatically try switching back to the primary model
  // after a specified interval (e.g., 5 minutes) following an error.
  modelResetInterval: 5 * 60 * 1000, // 5 minutes in milliseconds

  // Optional: For streaming, decide if retrying should happen even
  // if some output was already sent. Set to true to restart generation
  // on the fallback model from scratch if an error occurs mid-stream.
  // retryAfterOutput: true,
});

// --- Usage Examples ---

// 2. Use the fallback 'model' directly with Vercel AI SDK functions

// Example 1: Generate Text
async function generate(prompt: string) {
  try {
    const { text } = await generateText({
      model: model, // Pass the fallback model instance
      system: "You are a helpful assistant.",
      prompt: prompt,
    });
    console.log("Generated Text:", text);
  } catch (error) {
    console.error("All AI fallbacks failed for generateText:", error);
  }
}

// Example 2: Stream Text
async function stream(prompt: string) {
  try {
    const { textStream } = await streamText({
      model: model, // Pass the fallback model instance
      system: "You are a helpful assistant.",
      prompt: prompt,
    });

    console.log("Streaming Text:");
    for await (const chunk of textStream) {
      process.stdout.write(chunk);
    }
    console.log(); // Newline after stream
  } catch (error) {
    console.error("All AI fallbacks failed for streamText:", error);
  }
}

// Example 3: Stream Structured Object (using Zod)
async function generateStructured() {
  try {
    const { partialObjectStream } = await streamObject({
      model: model, // Pass the fallback model instance
      system: "You are a helpful assistant.",
      prompt: "Generate a person object with name and age.",
      schema: z.object({
        name: z.string(),
        age: z.number(),
      }),
    });

    console.log("Streaming Object:");
    for await (const partialObject of partialObjectStream) {
      console.log(partialObject);
    }
  } catch (error) {
    console.error("All AI fallbacks failed for streamObject:", error);
  }
}

// --- Run Examples ---
generate("Explain the concept of idempotency in APIs.");
stream("Write a short story about a curious robot.");
generateStructured();

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

ویژگی های کلیدی برای قابلیت اطمینان تولید

  • ادغام یکپارچه: مستقیم با ai عملکردهای اصلی SDK.
  • سوئیچینگ خودکار: خطاها و ارائه دهنده خرابی شفاف را به صورت شفاف انجام می دهد.
  • تنظیم مجدد قابل تنظیم: در modelResetInterval گزینه به سیستم اجازه می دهد تا بعد از یک دوره Cooldown ، به طور خودکار به مدل اصلی (اغلب ترجیح داده شده یا ارزان تر) برگردد ، و اطمینان حاصل کنید که شما در یک برگشتی بالقوه گران قیمت بیش از حد لازم باقی نمی مانند.
  • مقاومت در برابر جریان: در retryAfterOutput گزینه کنترل خرابی های میانی را فراهم می کند. تنظیم آن روی true تضمین می کند که اگر خطایی پس از شروع جریان رخ دهد ، کل فرآیند نسل از ابتدا روی مدل موجود دوباره شروع می شود و از خروجی های ناقص یا فاسد جلوگیری می کند. در صورت استفاده از این ، باید محتوای کپی بالقوه را در منطق کاربرد خود کنترل کنید.
  • نظارت بر خطا: در onError پاسخ به تماس ، برای ورود به سیستم و نظارت بر رویدادهای برگشت پذیر فراهم می کند.

چرا این برای برنامه های تولید اهمیت دارد

  • قابلیت اطمینان پیشرفته: مستقیماً خطر مشکلات تک ارائه دهنده را کاهش می دهد.
  • تجربه کاربر بهبود یافته: کاربران را از خرابی های پس زمینه محافظت می کند ، و تعامل های صاف تری را فراهم می کند.
  • عملیات ساده: نیاز به رسیدگی به خطای پیچیده و سفارشی را برای تعویض ارائه دهنده کاهش می دهد.
  • افزایش اعتماد به نفس: ویژگی های AI را مستقر کنید و دانستن اینکه شما یک مکانیزم فال بازگشت قوی دارید.

انتخاب استراتژی بازگشت خود

سفارش خود را models آرایه بر اساس:

  • قابلیت/عملکرد: با بهترین مدل برای کار شروع کنید.
  • هزینه: دوباره به گزینه های ارزان تر برگردید.
  • سرعت: اگر تأخیر مهم است ، مدل های سریعتر را در اولویت قرار دهید.
  • سازگاری ویژگی: اطمینان حاصل کنید که Fallbacks از ویژگی های لازم پشتیبانی می کند (به عنوان مثال ، تماس با عملکرد ، طرح های خاص برای streamObject).

امروز شروع کنید

انعطاف پذیری کاربرد بسیار مهم است ، به خصوص برای ویژگی های وابسته به هوش مصنوعی. ai-fallback روشی ساده و قدرتمند برای محافظت در برابر بی ثباتی ارائه دهنده ارائه می دهد.

اجازه دهید اجازه دهید ارائه دهنده خرابی ارائه دهنده برنامه خود را به روز کند. اضافه کردن ai-fallback به پروژه خود:

npm install ai-fallback @ai-sdk/anthropic @ai-sdk/openai ai zod
# or using yarn, pnpm, bun
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

بسته را در NPM مشاهده کنید: https://www.npmjs.com/package/ai-fallback

با استفاده از Vercel AI SDK آن را در برنامه خود ادغام کنید. این یک تغییر کوچک است که پیشرفت قابل توجهی در ثبات تولید ایجاد می کند.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا