شروع به کار با هوش مصنوعی Qwen


Qwen (مخفف Qianwen یا 千问 به معنای هزار پرسش، در زبان چینی) خانواده‌ای از LLMها است که توسط شرکت Alibaba Cloud توسعه داده شده و به‌عنوان یکی از قدرتمندترین مدل‌های متن‌باز در حوزه پردازش زبان طبیعی شناخته می‌شود. این مدل‌ها با معماری Transformer طراحی شده‌اند و در نسخه‌های متنوعی ارائه شده‌اند تا نیازهای مختلف، از پژوهش‌های دانشگاهی گرفته تا کاربردهای صنعتی را پوشش دهند. Qwen توانایی چشمگیری در درک زبان، تولید متن، پاسخ به پرسش‌ها، استدلال چندمرحله‌ای، و حتی برنامه‌نویسی دارد و از چندزبانگی (به‌ویژه انگلیسی و چینی) پشتیبانی می‌کند. انتشار متن‌باز این مدل باعث شده پژوهشگران و توسعه‌دهندگان بتوانند آن را برای آموزش مجدد (fine-tuning)، استفاده در برنامه‌های کاربردی، یا یکپارچه‌سازی در سامانه‌های هوش مصنوعی به‌کار گیرند. به‌طور کلی، Qwen را می‌توان نمادی از تلاش‌های اخیر در جهت ترکیب مقیاس بالا، متن‌باز بودن، و کاربردپذیری گسترده در حوزه هوش مصنوعی دانست.

در حال حاضر، لیارا، مدل‌های زیر از Qwen را در API خود پشتیبانی می‌کند:

  • مدل qwen/qwen3-coder
  • مدل qwen/qwen-plus
  • مدل qwen/qwen-2.5-72b-instruct
  • مدل qwen/qwen3-235b-a22b-thinking-2507
  • مدل qwen/qwen3-32b
  • مدل qwen/qwen3.7-max
  • مدل qwen/qwen3.5-flash-02-23
  • مدل qwen/qwen-audio-3.0-tts-plus
  • مدل qwen/qwen-audio-3.0-tts-flash
  • مدل qwen/qwen3-asr-0.6b
  • مدل qwen/qwen3.8-max
  • مدل qwen/qwen3.7-flash
  • مدل qwen/qwen3-reranker-8b

پس از ایجاد سرویس هوش مصنوعی و دریافت baseUrl و ساخت کلید، می‌توانید از مدل‌های Qwen استفاده کنید.

در قطعه کدهای ارائه‌شده توسط لیارا برای اتصال به مدل، از OpenAI SDK استفاده می‌شود. تمامی مدل‌هایی که لیارا ارائه می‌دهد؛ سازگار با OpenAI SDK هستند.

اتصال به مدل

برای اتصال به مدل در سطح کد، می‌توانید از دو ابزار استفاده کنید:

  • OpenAI SDK: ابزار رسمی ارائه‌شده توسط OpenAI. تمامی مدل‌های ارائه‌شده در لیارا، با این SDK سازگار هستند.
  • AI SDK: ابزار ارائه‌شده توسط Vercel. این SDK، تنها برای جاوااسکریپت و تایپ‌اسکریپت در دسترس است.

در ادامه، نحوه اتصال به مدل، هم با OpenAI SDK و هم با AI SDK، بررسی شده است.

برای اتصال به مدل با OpenAI SDK، می‌توانید از قطعه کدهای زیر، استفاده کنید.

در ابتدا، برای استفاده از مدل هوش مصنوعی مدنظر خود در جاوااسکریپت، باید پکیج openai را نصب کنید. برای این کار، می‌توانید از npm یا yarn استفاده کنید:

کپی
npm install openai # or yarn add openai

سپس، می‌توانید مانند قطعه کد زیر، به مدل هوش مصنوعی خود متصل شوید:

کپی
const OpenAI = require('openai');

const openai = new OpenAI({
baseURL: '<baseUrl>',
apiKey: '<LIARA_API_KEY>',
});

async function main() {
const completion = await openai.chat.completions.create({
  model: '<model_name>',
  messages: [
    {
      role: 'user',
      content: 'Hello!',
    },
  ],
});

console.log(completion.choices[0].message);
}

main();

در قطعه کد‌های فوق، به‌جای <baseUrl>، آدرس سرویس هوش مصنوعی خود را قرار دهید و به‌جای <LIARA_API_TOKEN>، کلید API خود را وارد کنید. همچنین، به‌جای <model_name>، نام یکی از مدل‌های فوق را قرار دهید.

پارامترهای قابل تنظیم

در OpenAI SDK، شما می‌توانید پارامترهای زیر را تنظیم کنید.

در نظر داشته باشید که پارامترهای زیر، ممکن است در برخی از مدل‌ها، پشتیبانی نشوند.

  • frequency_penalty: عددی بین -2 تا 2. کاهش یا افزایش احتمال تکرار کلمات پرتکرار در پاسخ. هرچه بالاتر باشد؛ تنوع بیشتر است
  • logit_bias: تغییر احتمال ظاهر شدن توکن‌های خاص
  • n: تعداد پاسخ‌هایی که قرار است مدل همزمان تولید کند.
  • response_format: مدل را مجبور می‌کند خروجی را به فرمت خاصی برگرداند
  • seed: مقدار عددی ثابت برای شروع تولید تصادفی، در صورت نیاز، به خروجی‌های قابل تکرار
  • stop: آرایه‌ای از رشته‌ها برای اینکه مدل هنگام رسیدن به آن‌ها پاسخ را متوقف کند
  • stream: اگر true باشد، پاسخ مدل به صورت استریم ارسال می‌شود. برای پیاده‌سازی‌های real-time یا رابط کاربری، این حالت مفید است
  • stream_options: تنظیمات مربوط به حالت stream. فقط وقتی استفاده می‌شود که stream: true باشد
  • temperature: عددی بین 0 تا 2. کنترل میزان تصادفی بودن خروجی؛ عدد کمتر، واقع‌گرایی بیشتر و عدد بیشتر، خلاقیت بیشتر
  • tool_choice: تعیین کردن اینکه مدل چه زمانی Tool را فراخوانی کند (به‌صورت هوشمند یا همیشه)
  • tools: مشخص کردن یک‌سری Tool که مدل در صورت نیاز، آن‌ها را فراخوانی کند
  • user: شناسه‌ی کاربر نهایی. برای دسته‌بندی بهتر درخواست‌ها و جلوگیری از سوءاستفاده، به‌کار می‌رود

در ادامه، مثال استفاده از این پارامترها، در زبان‌های مختلف، قرار گرفته است:

کپی
from openai import OpenAI

client = OpenAI(
base_url='<baseUrl>',
api_key='<LIARA_API_KEY>',
)

response = client.chat.completions.create(
  model="<model_name>",
  messages=[
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "write a short article about Machine Learning in json"}
  ],
  frequency_penalty=1.2,
  presence_penalty=1.0,
  temperature=0.8,
  top_p=0.9,
  n=2,
  seed=42,
  stop=["\nUser:", "\nSystem:"],
  logit_bias={"50256": -100}, 
  stream=False,
  stream_options=None,
  response_format={"type": "json_object"},
  tool_choice="auto",
  tools=[
      {
          "type": "function",
          "function": {
              "name": "summarize_text",
              "description": "summarizing a long text",
              "parameters": {
                  "type": "object",
                  "properties": {
                      "text": {"type": "string", "description": "the text should be summarized"}
                  },
                  "required": ["text"]
              }
          }
      }
  ],
)

print(response)

در قطعه کد‌ فوق، به‌جای <baseUrl>، آدرس سرویس هوش مصنوعی خود را قرار دهید و به‌جای <LIARA_API_TOKEN>، کلید API خود را وارد کنید. همچنین، به‌جای <model_name>، نام یکی از مدل‌های فوق را قرار دهید.

اتصال به مدل های تبدیل متن به گفتار (TTS)

برای کار با مدل‌های TTS می‌توانید از ماژول openai استفاده کنید. در ادامه، مثال‌های استفاده از مدل‌های TTS آمده است:

کپی
// npm install openai dotenv
require("dotenv").config();

const fs = require("fs");
const OpenAI = require("openai");

const client = new OpenAI({
apiKey: process.env.LIARA_API_KEY,
baseURL: process.env.BASE_URL,
});

async function main() {
const response = await client.audio.speech.create({
  model: process.env.TTS_MODEL_NAME,
  voice: process.env.TTS_VOICE,
  input: "Hello! This audio was generated using Qwen through Liara.",
  response_format: "mp3",
});

const buffer = Buffer.from(await response.arrayBuffer());

fs.writeFileSync("speech.mp3", buffer);

console.log("Audio saved to speech.mp3");
}

main().catch(console.error);

پروژه کامل قطعه کد فوق در گیت‌هاب لیارا قابل مشاهده و استفاده است.

در قطعه کدهای فوق، به‌جای BASE_URL، آدرس سرویس هوش مصنوعی خود را قرار دهید و به‌جای LIARA_API_KEY، کلید API خود را وارد کنید. همچنین، به‌جای TTS_MODEL_NAME، نام یکی از مدل‌های TTS و به‌جای TTS_VOICE، نام Voice موردنظر را قرار دهید.

مقادیر قابل استفاده به عنوان متغیر TTS_VOICE

TTS_VOICE یک پارامتر در مدل‌های TTS است که مشخص می‌کند مدل هوش مصنوعی با چه صدای از پیش تعریف‌شده‌ای متن را به گفتار تبدیل کند. هر Voice یک پروفایل صوتی مستقل است که ویژگی‌هایی مثل جنسیت صدا، لحن (Tone)، سرعت، حس بیان (Emotion)، لهجه و سبک صحبت کردن را تعیین می‌کند.

در حال حاضر، می‌توانید مقدار متغیر TTS_VOICE را برای مدل‌های مذکور، با مقادیر زیر پر کنید (بعد از # ‌یک‌سری توضیحات راجع به هر Voice قرار گرفته است).

کپی
# Qwen Audio 3.0 TTS Plus

TTS_VOICE=longanlingxin # Female - Warm and empathetic - Age 25 - Mandarin / English
TTS_VOICE=longanlufeng  # Male - Bright and cheerful - Age 25 - Mandarin / English

# Qwen Audio 3.0 TTS Flash

TTS_VOICE=longanfengyue # Female - Natural and friendly - Age 30 - Mandarin / English
TTS_VOICE=longanyuanfei # Female - Proud and regal - Age 30 - Mandarin / English
TTS_VOICE=longanlingxi  # Female - Cute and sweet - Age 25 - Mandarin / English
TTS_VOICE=loongmary     # Female - Warm British accent - Age 20 - English
TTS_VOICE=loongeva_v3.6 # Female - Intelligent-sounding American accent - Age 28 - English
TTS_VOICE=loongjohn     # Male - Calm and friendly American accent - Age 28 - English

اتصال به مدل های تبدیل گفتار به متن (STT)

برای کار با مدل‌های TTS می‌توانید از ماژول openai استفاده کنید. در ادامه، مثال‌های استفاده از مدل‌های TTS آمده است:

کپی
// npm install openai dotenv

require("dotenv").config();

const fs = require("fs");
const path = require("path");
const OpenAI = require("openai");
const { toFile } = require("openai");

const client = new OpenAI({
apiKey: process.env.LIARA_API_KEY,
baseURL: process.env.BASE_URL,
});

async function main() {
const audioPath = path.resolve(process.env.AUDIO_FILE);

if (!fs.existsSync(audioPath)) {
  throw new Error(`Audio file not found: ${audioPath}`);
}

const extension = path.extname(audioPath).toLowerCase();

const mimeTypes = {
  ".mp3": "audio/mpeg",
  ".wav": "audio/wav",
  ".flac": "audio/flac",
  ".m4a": "audio/mp4",
  ".ogg": "audio/ogg",
  ".webm": "audio/webm",
  ".aac": "audio/aac",
};

const mimeType = mimeTypes[extension];

if (!mimeType) {
  throw new Error(`Unsupported audio format: ${extension}`);
}

const audioBuffer = fs.readFileSync(audioPath);

const audioFile = await toFile(
  audioBuffer,
  path.basename(audioPath),
  {
    type: mimeType,
  }
);

const transcription = await client.audio.transcriptions.create({
  model: process.env.STT_MODEL_NAME,
  file: audioFile,
});

console.log(transcription.text);
}

main().catch(console.error);

پروژه کامل قطعه کد فوق در گیت‌هاب لیارا قابل مشاهده و استفاده است.

در قطعه کدهای فوق، به‌جای BASE_URL، آدرس سرویس هوش مصنوعی خود را قرار دهید و به‌جای LIARA_API_KEY، کلید API خود را وارد کنید. همچنین، به‌جای STT_MODEL_NAME، نام مدل STT و به‌جای AUDIO_FILE، نام یا مسیر فایل صوتی موردنظر برای تبدیل گفتار به متن را قرار دهید.

اتصال به مدل‌های rerank

برای کار با مدل‌های rerank می‌توانید از درخواست‌های HTTP استفاده کنید. در ادامه، مثال‌های استفاده از rerank آمده است:

کپی
// npm install dotenv
require("dotenv").config();

async function main() {
try {
  const response = await fetch(`${process.env.BASE_URL}/rerank`, {
    method: "POST",

    headers: {
      Authorization: `Bearer ${process.env.LIARA_API_KEY}`,
      "Content-Type": "application/json",
    },

    body: JSON.stringify({
      model: process.env.RERANK_MODEL_NAME,

      query: "And who is God?",

      documents: [
        "God means love, purity, intimacy, friendship",
        "God is kind",
        "God loves us and we should love him too",
        "AI means Artificial Intelligence",
      ],

      top_n: 3,
    }),
  });

  if (!response.ok) {
    const error = await response.text();
    throw new Error(`Request failed: ${response.status} - ${error}`);
  }

  const data = await response.json();

  console.log(data);
} catch (error) {
  console.error(error);
}
}

main();

پروژه کامل قطعه کد فوق در گیت‌هاب لیارا قابل مشاهده و استفاده است.

در قطعه کد‌های فوق، به‌جای BASE_URL، آدرس سرویس هوش مصنوعی خود را قرار دهید و به‌جای LIARA_API_KEY، کلید API خود را وارد کنید. همچنین، به‌جای RERANK_MODEL_NAME، نام یکی از مدل‌های rerank را قرار دهید.