رفتن به محتوای اصلی
هوشوانا

اتصال LlamaIndex به هوشوانا

راهنمای استفاده از هوشوانا در LlamaIndex با OpenAILike برای مدل زبانی و OpenAILikeEmbedding برای embedding، ساخت ایندکس، کنترل هزینه و رفع خطاها.

آخرین به‌روزرسانی:

LlamaIndex

فریم‌ورک
شروع رایگان

LlamaIndex فریم‌ورکی برای ساخت RAG و عامل‌های داده‌محور است. کلاس‌های پیش‌فرض OpenAI در LlamaIndex فقط نام مدل‌های رسمی OpenAI را می‌شناسند، پس برای هوشوانا که مدل‌ها را با شناسه‌ی vendor/model نام‌گذاری می‌کند، از کلاس‌های «OpenAI-like» استفاده می‌کنیم.

چه چیزی به دست می‌آورید

  • مدل‌های چند سازنده در LlamaIndex با یک کلید.
  • embedding برای ایندکس‌سازی اسناد.
  • پرداخت ریالی و گزارش هزینه‌ی هر مرحله.

پیش‌نیازها

  1. حساب کاربری در هوشوانا.
  2. یک کلید API از صفحه‌ی کلیدها.
  3. اعتبار کافی در کیف پول.
  4. Python 3.9 به بالا.
Shell
pip install -U llama-index-core llama-index-llms-openai-like llama-index-embeddings-openai-like
export HOOSHVANA_API_KEY="hv-YOUR_KEY"

راه‌اندازی

مدل زبانی با OpenAILike

Python
import os
from llama_index.llms.openai_like import OpenAILike

API_BASE = "https://hooshvana.ir/api/v1"
API_KEY = os.environ["HOOSHVANA_API_KEY"]

llm = OpenAILike(
    model="openai/gpt-4o-mini",
    api_base=API_BASE,
    api_key=API_KEY,
    is_chat_model=True,
    is_function_calling_model=True,
    context_window=128000,
    max_tokens=1024,
)

print(llm.complete("در یک جمله بگو LlamaIndex چه کاری می‌کند."))

is_chat_model=True لازم است تا LlamaIndex به /chat/completions درخواست بفرستد، نه به /completions که هوشوانا ارائه نمی‌دهد. context_window را مطابق مدل انتخابی از کاتالوگ مدل‌ها بگذارید؛ LlamaIndex از این عدد برای تقسیم زمینه استفاده می‌کند. اگر مدل function calling را پشتیبانی نمی‌کند، is_function_calling_model را False بگذارید.

embedding

کلاس OpenAIEmbedding از پکیج llama-index-embeddings-openai پارامتر api_base را می‌پذیرد، اما در بسیاری از نسخه‌ها نام مدل را با فهرست مدل‌های رسمی OpenAI مقایسه می‌کند و شناسه‌ای مثل openai/text-embedding-3-small را رد می‌کند. راه مطمئن، کلاس OpenAILikeEmbedding است:

Python
from llama_index.embeddings.openai_like import OpenAILikeEmbedding

embed_model = OpenAILikeEmbedding(
    model_name="openai/text-embedding-3-small",
    api_base=API_BASE,
    api_key=API_KEY,
    embed_batch_size=32,
)

print(len(embed_model.get_text_embedding("هوشوانا")))  # 1536

ساخت ایندکس و پرس‌وجو

Python
from llama_index.core import Settings, SimpleDirectoryReader, VectorStoreIndex

Settings.llm = llm
Settings.embed_model = embed_model

documents = SimpleDirectoryReader("./docs").load_data()
index = VectorStoreIndex.from_documents(documents)

query_engine = index.as_query_engine(similarity_top_k=5)
print(query_engine.query("مهم‌ترین نکته‌ی این اسناد چیست؟"))

تنظیم Settings.llm و Settings.embed_model مهم است. اگر یکی از آن‌ها را تنظیم نکنید، LlamaIndex سراغ OpenAI پیش‌فرض می‌رود و با خطای کلید یا اتصال مواجه می‌شوید.

بررسی اتصال

کد بالا را اجرا کنید. اگر پاسخ متنی و طول بردار 1536 چاپ شد، اتصال درست است. در گزارش‌ها درخواست‌های /chat/completions و /embeddings را با هزینه‌شان می‌بینید.

مدل‌های پیشنهادی

کاربردمدل
پاسخ به پرسش روی اسنادopenai/gpt-4o-mini یا google/gemini-2.5-flash
عامل‌ها و استدلال چندمرحله‌ایopenai/gpt-4.1 یا anthropic/claude-sonnet-4.6
embeddingopenai/text-embedding-3-small
embedding با دقت بالاترopenai/text-embedding-3-large

شناسه‌ها نمونه هستند؛ فهرست کامل در کاتالوگ مدل‌ها است.

کنترل هزینه

  • ایندکس‌سازی اولیه بیشترین درخواست embedding را می‌سازد. ایندکس را با index.storage_context.persist() ذخیره کنید تا در هر اجرا دوباره ساخته نشود.
  • برای محیط توسعه و تولید کلیدهای جدا بسازید و برای هر کدام سقف خرج روزانه بگذارید.
  • مدل‌های مجاز و نقطه‌های پایانی مجاز (chat و embeddings) را محدود کنید.
  • max_tokens را تنظیم کنید؛ هوشوانا پیش از اجرا بدترین حالت هزینه را با همین عدد برآورد می‌کند.
  • اگر نمی‌خواهید خودتان ایندکس را نگه دارید، پایگاه دانش هوشوانا همین کار را در داشبورد انجام می‌دهد.

رفع اشکال

خطاعلت رایجراه‌حل
401 invalid_api_keyکلید اشتباه است، یا یکی از Settings.llm و Settings.embed_model هنوز روی OpenAI پیش‌فرض استهر دو را تنظیم کنید و مقدار HOOSHVANA_API_KEY را بررسی کنید
404 model_not_foundنام مدل بدون پیشوند آمدهشناسه‌ی کامل مثل openai/gpt-4o-mini بنویسید
خطای «Unknown model» در embeddingاز OpenAIEmbedding با نام غیررسمی استفاده شدهبه OpenAILikeEmbedding تغییر دهید
402 insufficient_balanceموجودی کافی نیستکیف پول را شارژ کنید
404 بدون کد خطای هوشواناapi_base اشتباه است، یا is_chat_model فعال نیست و درخواست به /completions رفتهapi_base را https://hooshvana.ir/api/v1 بگذارید و is_chat_model=True را اضافه کنید
429 rate_limitedایندکس‌سازی انبوهembed_batch_size را کم کنید یا RPM کلید را بالا ببرید

اگر مشکل ادامه داشت، کد خطا و زمان درخواست را در تیکت پشتیبانی بفرستید.

راهنماهای دیگر