این پوشه شامل مثالهای کامل برای دریافت و مدیریت مدلهای موجود در API Rahyana است.
دریافت مدلهای موجود - دریافت لیست کامل مدلهای در دسترس
ویژگیها:
- دریافت تمام مدلهای موجود
- فیلتر کردن بر اساس قابلیت
- جستجو بر اساس شناسه مدل
- فیلتر بر اساس ارائهدهنده
موارد استفاده:
- نمایش مدلهای موجود در رابط کاربری
- انتخاب مدل مناسب برای کاربرد
- بررسی قابلیتهای مدلها
- مدیریت پویای مدلها
node get-models.jsconst { getAvailableModels, filterModelsByCapability } = require('./get-models');
// دریافت تمام مدلها
const models = await getAvailableModels();
// فیلتر مدلهای متنی
const textModels = await filterModelsByCapability('text');
// فیلتر مدلهای تصویری
const imageModels = await filterModelsByCapability('image');- text: مدلهای متنی پایه
- chat: مدلهای گفتگو
- image: مدلهای پردازش تصویر
- audio: مدلهای پردازش صدا
- multimodal: مدلهای چندوجهی
- function_calling: پشتیبانی از فراخوانی توابع
- streaming: پشتیبانی از پاسخهای جریانی
- json_mode: پشتیبانی از حالت JSON
- web_search: پشتیبانی از جستجوی وب
{
"data": [
{
"id": "anthropic/claude-sonnet-4.5",
"name": "Claude Sonnet 4.5",
"provider": "anthropic",
"type": "chat",
"context_length": 200000,
"capabilities": ["text", "image", "function_calling"],
"pricing": {
"input": 0.003,
"output": 0.015
}
}
]
}async function selectModelByBudget(maxCostPerToken) {
const models = await getAvailableModels();
return models.data.filter(model => {
if (model.pricing && model.pricing.input) {
return model.pricing.input <= maxCostPerToken;
}
return false;
});
}async function selectModelForTask(taskType) {
let capability;
switch(taskType) {
case 'text_generation':
capability = 'text';
break;
case 'image_analysis':
capability = 'image';
break;
case 'audio_transcription':
capability = 'audio';
break;
default:
capability = 'text';
}
return await filterModelsByCapability(capability);
}async function compareModels(modelIds) {
const models = await getAvailableModels();
return modelIds.map(id => {
return models.data.find(model => model.id === id);
}).filter(Boolean);
}try {
const models = await getAvailableModels();
// پردازش مدلها
} catch (error) {
if (error.message.includes('401')) {
console.error('خطای احراز هویت: کلید API نامعتبر است');
} else if (error.message.includes('429')) {
console.error('خطای محدودیت نرخ: درخواستهای زیادی ارسال شده');
} else {
console.error('خطای غیرمنتظره:', error.message);
}
}- کش کردن: مدلها را کش کنید تا درخواستهای مکرر کاهش یابد
- فیلتر کردن: فقط مدلهای مورد نیاز را بارگذاری کنید
- اعتبارسنجی: مدل انتخاب شده را قبل از استفاده اعتبارسنجی کنید
- مدیریت خطا: خطاهای شبکه و API را مدیریت کنید
const API_KEY = 'YOUR_API_KEY';
const BASE_URL = 'https://rahyana.ir/api/v1';
class ModelManager {
constructor(apiKey, baseUrl) {
this.apiKey = apiKey;
this.baseUrl = baseUrl;
this.models = null;
}
async loadModels() {
if (this.models) return this.models;
try {
const response = await fetch(`${this.baseUrl}/models`, {
headers: {
'Authorization': `Bearer ${this.apiKey}`,
'Content-Type': 'application/json'
}
});
const data = await response.json();
this.models = data.data;
return this.models;
} catch (error) {
console.error('خطا در بارگذاری مدلها:', error);
throw error;
}
}
async getBestModelForTask(taskType, budget) {
await this.loadModels();
return this.models
.filter(model => {
// بررسی قابلیت
const hasCapability = model.capabilities &&
model.capabilities.includes(taskType);
// بررسی بودجه
const withinBudget = !budget ||
!model.pricing ||
model.pricing.input <= budget;
return hasCapability && withinBudget;
})
.sort((a, b) => {
// مرتبسازی بر اساس قیمت
const priceA = a.pricing ? a.pricing.input : 0;
const priceB = b.pricing ? b.pricing.input : 0;
return priceA - priceB;
})[0];
}
}
// استفاده
const modelManager = new ModelManager(API_KEY, BASE_URL);
const bestModel = await modelManager.getBestModelForTask('text', 0.01);
console.log('بهترین مدل:', bestModel);برای سوالات و پشتیبانی:
- مستندات کامل: rahyana.ir/docs
- GitHub Issues: github.com/rahyana/issues
- ایمیل پشتیبانی: support@rahyana.ir