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

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

راهنمای استفاده از هوشوانا در LangChain با پکیج‌های langchain-openai و @langchain/openai، تنظیم base_url، embedding، کنترل هزینه و رفع خطاها.

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

LangChain

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

LangChain برای ساخت برنامه‌های مبتنی بر مدل زبانی، از زنجیره‌های ساده تا عامل‌ها و RAG، استفاده می‌شود. کلاس‌های ChatOpenAI و OpenAIEmbeddings آدرس پایه را به‌عنوان پارامتر می‌پذیرند، پس با تغییر همین آدرس به هوشوانا وصل می‌شوید و به همه‌ی مدل‌ها دسترسی دارید.

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

  • مدل‌های OpenAI، Anthropic، Google، DeepSeek و دیگران با همان کلاس ChatOpenAI.
  • embedding برای RAG با یک کلید.
  • پرداخت ریالی و گزارش هزینه‌ی هر فراخوانی.

پیش‌نیازها

  1. حساب کاربری در هوشوانا.
  2. یک کلید API از صفحه‌ی کلیدها.
  3. اعتبار کافی در کیف پول.
  4. Python 3.9 به بالا یا Node.js 18 به بالا.

کلید را در متغیر محیطی نگه دارید و در کد ننویسید:

Shell
export HOOSHVANA_API_KEY="hv-YOUR_KEY"

راه‌اندازی در Python

Shell
pip install -U langchain-openai
Python
import os
from langchain_openai import ChatOpenAI, OpenAIEmbeddings

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

llm = ChatOpenAI(
    model="openai/gpt-4o-mini",
    base_url=API_BASE,
    api_key=API_KEY,
    temperature=0.3,
)

reply = llm.invoke("در یک جمله بگو RAG چیست.")
print(reply.content)

embeddings = OpenAIEmbeddings(
    model="openai/text-embedding-3-small",
    base_url=API_BASE,
    api_key=API_KEY,
    # Model ids with a vendor prefix are unknown to tiktoken; send raw text instead of token ids
    check_embedding_ctx_length=False,
)

vector = embeddings.embed_query("هوشوانا")
print(len(vector))  # 1536

پارامتر check_embedding_ctx_length=False مهم است. بدون آن، OpenAIEmbeddings سعی می‌کند متن را با tiktoken و بر اساس نام مدل به توکن تبدیل کند و چون نام openai/text-embedding-3-small برای tiktoken ناشناخته است، ممکن است خطا بگیرید یا آرایه‌ی توکن به‌جای متن فرستاده شود.

استریم و فراخوانی ابزار

Python
for chunk in llm.stream("سه نکته برای نوشتن پرامپت خوب بگو."):
    print(chunk.content, end="", flush=True)

bind_tools و with_structured_output هم کار می‌کنند، به شرطی که مدل انتخابی function calling یا خروجی JSON را پشتیبانی کند.

راه‌اندازی در JavaScript و TypeScript

Shell
npm install @langchain/openai @langchain/core
TypeScript
import { ChatOpenAI, OpenAIEmbeddings } from "@langchain/openai";

const configuration = { baseURL: "https://hooshvana.ir/api/v1" };

const llm = new ChatOpenAI({
  model: "openai/gpt-4o-mini",
  apiKey: process.env.HOOSHVANA_API_KEY,
  configuration,
});

const reply = await llm.invoke("در یک جمله بگو RAG چیست.");
console.log(reply.content);

const embeddings = new OpenAIEmbeddings({
  model: "openai/text-embedding-3-small",
  apiKey: process.env.HOOSHVANA_API_KEY,
  configuration,
});

const vector = await embeddings.embedQuery("هوشوانا");
console.log(vector.length);

در نسخه‌ی جاوااسکریپت آدرس پایه داخل configuration.baseURL قرار می‌گیرد، نه در سطح بالای گزینه‌ها.

بررسی اتصال

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

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

کاربردمدل
زنجیره‌های ساده و کارهای پرتکرارopenai/gpt-4o-mini یا google/gemini-2.5-flash
عامل‌ها و فراخوانی ابزارopenai/gpt-4.1 یا anthropic/claude-sonnet-4.6
embedding برای RAGopenai/text-embedding-3-small (۱۵۳۶ بعد)
embedding با دقت بالاترopenai/text-embedding-3-large

اگر بعداً مدل embedding را عوض کردید، همه‌ی اسناد را دوباره embed کنید؛ بردارهای دو مدل با هم قابل مقایسه نیستند. شناسه‌ها نمونه هستند؛ فهرست کامل در کاتالوگ مدل‌ها است.

کنترل هزینه

  • برای هر برنامه یا محیط (توسعه و تولید) کلید جدا بسازید.
  • سقف خرج روزانه و ماهانه بگذارید، به‌خصوص برای عامل‌هایی که در حلقه اجرا می‌شوند.
  • مدل‌های مجاز را به مدل‌های همان برنامه محدود کنید.
  • max_tokens را در ChatOpenAI تنظیم کنید. هوشوانا پیش از اجرا بدترین حالت هزینه را با همین عدد برآورد می‌کند.
  • اگر برنامه روی سرور ثابت اجرا می‌شود، IP آن را در فهرست IP مجاز کلید بگذارید.
  • به‌جای ساختن vector store جداگانه، می‌توانید از پایگاه دانش هوشوانا استفاده کنید.

رفع اشکال

خطاعلت رایجراه‌حل
401 invalid_api_keyHOOSHVANA_API_KEY در محیط اجرا تعریف نشده یا اشتباه استمقدار متغیر را در همان محیطی که برنامه اجرا می‌شود بررسی کنید
404 model_not_foundنام مدل بدون پیشوند آمده، مثل gpt-4o-miniشناسه‌ی کامل openai/gpt-4o-mini بنویسید
402 insufficient_balanceموجودی کافی نیست یا max_tokens خیلی بالاستکیف پول را شارژ کنید یا max_tokens را کم کنید
404 بدون کد خطای هوشواناbase_url اشتباه است، یا در JavaScript به‌جای configuration.baseURL در جای دیگری نوشته شدهآدرس را دقیقاً https://hooshvana.ir/api/v1 و در جای درست بگذارید
خطای tiktoken یا invalid_request در embeddingcheck_embedding_ctx_length فعال استcheck_embedding_ctx_length=False را اضافه کنید
429 rate_limitedدرخواست‌های هم‌زمان زیاد، مثلاً هنگام embed کردن انبوهmax_retries را بالا ببرید و اندازه‌ی دسته را کم کنید

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

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