|
| 1 | +import Layout from "@/components/Layout"; |
| 2 | +import Button from "@/components/Common/button"; |
| 3 | +import Section from "@/components/Common/section"; |
| 4 | +import Alert from "@/components/Common/alert"; |
| 5 | +import ThemePlatformIcon from "@/components/Common/themeIcons" |
| 6 | +import Tabs from "@/components/Common/tab"; |
| 7 | +import Step from "@/components/Common/step"; |
| 8 | +import Card from "@/components/Common/card"; |
| 9 | +import Important from "@/components/Common/important"; |
| 10 | +import Highlight from "@/components/Common/highlight"; |
| 11 | +import Link from "next/link"; |
| 12 | +import PlatformIcon from "@/components/Common/icons"; |
| 13 | +import HighlightTabs from "@/components/Common/HighlightTabs"; |
| 14 | +import IconContainer from "@/components/Common/IconContainer"; |
| 15 | +import { |
| 16 | + GoContainer, |
| 17 | + GoDatabase, |
| 18 | + GoRocket, |
| 19 | + GoServer, |
| 20 | + GoMail, |
| 21 | + GoGlobe, |
| 22 | + GoArrowLeft, |
| 23 | + GoTelescope, |
| 24 | +} from "react-icons/go"; |
| 25 | + |
| 26 | +import Head from "next/head"; |
| 27 | + |
| 28 | +<Layout> |
| 29 | +<Head> |
| 30 | +<title>مستندات تنظیمات AI SDK - لیارا</title> |
| 31 | +<meta property="og:title" content="مستندات خدمات رایانش ابری لیارا" /> |
| 32 | +<meta property="og:description" content="مستندات مربوط به آشنایی با تنظیمات AI SDK برای کار با سرویس هوش مصنوعی لیارا" /> |
| 33 | +</Head> |
| 34 | + |
| 35 | + |
| 36 | +# تنظیمات مربوط به AI SDK |
| 37 | +<hr className="mb-2" /> |
| 38 | + |
| 39 | +LLMها معمولاً تنظیماتی را برای بهبود یا تقویت خروجی خود فراهم میکنند. |
| 40 | +تمامی توابع AI SDK علاوه بر مدل، <a href="/ai/foundations/prompts/" className="text-[#2196f3]">پرامپت</a> و تنظیمات اختصاصی OpenAI، از تنظیمات عمومی زیر نیز پشتیبانی میکنند: |
| 41 | + |
| 42 | +<div className="h-2" /> |
| 43 | +<div dir='ltr'> |
| 44 | + <Highlight className="js"> |
| 45 | + {`import { generateText } from 'ai'; |
| 46 | +import { createOpenAI } from '@ai-sdk/openai'; |
| 47 | +import { config } from 'dotenv'; |
| 48 | +
|
| 49 | +config(); |
| 50 | +const my_model = createOpenAI({ |
| 51 | + baseURL: process.env.BASE_URL!, |
| 52 | + apiKey: process.env.LIARA_API_KEY!, |
| 53 | +}); |
| 54 | +
|
| 55 | +const { text } = await generateText({ |
| 56 | + model: my_model('openai/gpt-4o-mini'), |
| 57 | + maxTokens: 512, |
| 58 | + temperature: 0.3, |
| 59 | + maxRetries: 5, |
| 60 | + prompt: 'Invent a new holiday and describe its traditions.', |
| 61 | +}); |
| 62 | +
|
| 63 | +console.log(text)`} |
| 64 | + </Highlight> |
| 65 | +</div> |
| 66 | +<div className="h-2" /> |
| 67 | + |
| 68 | +<Alert variant="info"> |
| 69 | +<p> |
| 70 | +برخی از مدلها ممکن است از همه تنظیمات عمومی پشتیبانی نکنند. |
| 71 | +اگر شما برای یک مدل، یک حالت خاص را تعریف کنید و |
| 72 | +از آن حالت، پشتیبانی نکند. عدم تاثیر آن حالت |
| 73 | +را میتوانید در خروجی مدل مشاهده کنید (برای بررسی بیشتر هم، میتوانید از یک مدل متفاوت استفاده کنید و خروجیها را مقایسه کنید). |
| 74 | +</p> |
| 75 | +</Alert> |
| 76 | + |
| 77 | +<Section id='maxtokens' title='maxTokens' /> |
| 78 | + |
| 79 | +بیشترین مقدار توکنهایی که قرار است تولید شوند. |
| 80 | + |
| 81 | +<Section id='temperature' title='temperature' /> |
| 82 | +این پارامتر برای تنظیم خلاقیت مدل است. |
| 83 | +مقدار این تنظیم به ارائهدهنده منتقل میشود و بازهی آن به ارائهدهنده و مدل بستگی دارد. در بیشتر ارائهدهندگان، مقدار <Important>0</Important> به معنای نتایج تقریباً قطعی (deterministic) است و مقادیر بالاتر به معنای افزایش میزان تصادفی بودن (randomness) نتایج میباشد. |
| 84 | + |
| 85 | +<div className="h-4" /> |
| 86 | +توصیه میشود که فقط یا <Important>temperature</Important> را تنظیم کنید یا <Important>topP</Important>، اما نه هر دو را بهطور همزمان. |
| 87 | + |
| 88 | +<Section id='topp' title='topP' /> |
| 89 | + |
| 90 | +پارامتر <Important>topP</Important> (که nucleus sampling نیز نامیده میشود) یکی از روشهای کنترل نمونهگیری تصادفی است. |
| 91 | +وقتی مدل میخواهد کلمه بعدی را تولید کند، به هر کلمه ممکن، یک احتمال اختصاص میدهد. برای انتخاب، دو استراتژی وجود دارد: |
| 92 | + |
| 93 | +<div className="h-2" /> |
| 94 | +<ul> |
| 95 | +<li><Important>topK</Important>: مدل، فقط بین محتملترین <Important>k</Important> تا گزینه انتخاب میکند</li> |
| 96 | +<div className="h-1" /> |
| 97 | +<li><Important>topP</Important>: به جای یک عدد ثابت (مثل <Important>k=50</Important>)، یک آستانهٔ تجمعی (<Important>p</Important>) در نظر گرفته میشود</li> |
| 98 | +</ul> |
| 99 | +<div className="h-2" /> |
| 100 | + |
| 101 | +مقدار تنظیم <Important>topP</Important> به ارائهدهنده منتقل میشود و بازهی آن به ارائهدهنده و مدل بستگی دارد. در بیشتر ارائهدهندگان، nucleus sampling عددی بین <Important>0</Important> تا <Important>1</Important> است. بهعنوان مثال، مقدار <Important>0.1</Important> به این معناست که تنها توکنهایی با ۱۰٪ بالاترین جرم احتمالی (probability mass) در نظر گرفته میشوند. |
| 102 | + |
| 103 | +<div className="h-2" /> |
| 104 | +توصیه میشود که فقط یا <Important>temperature</Important> را تنظیم کنید یا <Important>topP</Important>، اما نه هر دو را بهطور همزمان. |
| 105 | + |
| 106 | +<Section id='topk' title='topK' /> |
| 107 | + |
| 108 | +نمونهگیری تنها از میان <Important>k</Important> گزینهی برتر برای هر توکن بعدی. |
| 109 | +<div className="h-2" /> |
| 110 | + |
| 111 | + |
| 112 | +این روش برای حذف پاسخهای با احتمال پایین و موجود در long tail استفاده میشود. استفاده از این تنظیم تنها برای موارد پیشرفته توصیه میشود، زیرا معمولاً کافی است که صرفاً از <Important>temperature</Important> استفاده کنید. |
| 113 | + |
| 114 | +<Section id='presencepenalty' title='presencePenalty' /> |
| 115 | + |
| 116 | +Presence penalty بر احتمال تکرار اطلاعاتی که از قبل در پرامپت وجود دارد تأثیر میگذارد. |
| 117 | +<div className="h-2" /> |
| 118 | + |
| 119 | +مقدار این تنظیم به ارائهدهنده منتقل میشود و بازهی آن به ارائهدهنده و مدل بستگی دارد. در بیشتر ارائهدهندگان، مقدار <Important>0</Important> به معنای no penalty است. |
| 120 | + |
| 121 | +<Section id='frequencypenalty' title='frequencyPenalty'/> |
| 122 | + |
| 123 | +Frequency penalty بر احتمال استفادهی مکرر از کلمات یا عبارات یکسان، تأثیر میگذارد. |
| 124 | +<div className="h-2" /> |
| 125 | + |
| 126 | +مقدار این تنظیم به ارائهدهنده منتقل میشود و بازهی آن به ارائهدهنده و مدل بستگی دارد. در بیشتر ارائهدهندگان، مقدار <Important>0</Important> به معنای no penalty است. |
| 127 | + |
| 128 | +<Section id='stopsequences' title='stopSequences' /> |
| 129 | + |
| 130 | +دنبالههای توقف (stop sequences) برای متوقف کردن تولید متن استفاده میشوند. |
| 131 | +<div className="h-2" /> |
| 132 | + |
| 133 | +اگر این مقدار تنظیم شود، مدل هنگام تولید یکی از دنبالههای توقف، تولید متن را متوقف خواهد کرد. برخی از ارائهدهندگان ممکن است محدودیتی در تعداد دنبالههای توقف داشته باشند. |
| 134 | + |
| 135 | +<Section id='seed' title='seed' /> |
| 136 | + |
| 137 | +عددی صحیح (integer) که بهعنوان seed برای نمونهگیری تصادفی استفاده میشود. |
| 138 | +<div className="h-2" /> |
| 139 | + |
| 140 | + |
| 141 | +اگر این مقدار تنظیم شده و توسط مدل پشتیبانی شود، فراخوانیها نتایج قطعی (deterministic) تولید خواهند کرد. |
| 142 | + |
| 143 | +<Section id='maxretries' title='maxRetries' /> |
| 144 | + |
| 145 | +حداکثر تعداد تلاشهای مجدد (retries). |
| 146 | +برای غیرفعال کردن تلاش مجدد، مقدار آن را روی <Important>0</Important> تنظیم کنید. مقدار پیشفرض آن، <Important>2</Important> است. |
| 147 | + |
| 148 | +<Section id='abortsignal' title='abortSignal' /> |
| 149 | + |
| 150 | +یک سیگنال اختیاری برای توقف (abort signal) که میتواند جهت لغو فراخوانی استفاده شود. |
| 151 | + |
| 152 | + |
| 153 | +برای مثال، این سیگنال میتواند از رابط کاربری به فراخوانی منتقل شود تا آن را لغو کند، یا برای تعریف یک مهلت زمانی (timeout) به کار رود. |
| 154 | + |
| 155 | +<Section id='example-timeout' title='مثال: Timeout' /> |
| 156 | +<div dir='ltr'> |
| 157 | + <Highlight className="js"> |
| 158 | + {`import { generateText } from 'ai'; |
| 159 | +import { createOpenAI } from '@ai-sdk/openai'; |
| 160 | +import { config } from 'dotenv'; |
| 161 | +
|
| 162 | +config(); |
| 163 | +const my_model = createOpenAI({ |
| 164 | + baseURL: process.env.BASE_URL!, |
| 165 | + apiKey: process.env.LIARA_API_KEY!, |
| 166 | +}); |
| 167 | +
|
| 168 | +const { text } = await generateText({ |
| 169 | + model: my_model('openai/gpt-4o-mini'), |
| 170 | + prompt: 'Invent a new holiday and describe its traditions.', |
| 171 | + abortSignal: AbortSignal.timeout(60000), // 60 seconds |
| 172 | +}); |
| 173 | +
|
| 174 | +console.log(text)`} |
| 175 | + </Highlight> |
| 176 | +</div> |
| 177 | + |
| 178 | +<Section id='headers' title='headers' /> |
| 179 | + |
| 180 | +هدرهای اضافی HTTP که همراه با درخواست ارسال میشوند. |
| 181 | +<div className="h-2" /> |
| 182 | + |
| 183 | +میتوانید از هدرهای درخواست (request headers) برای ارائهی اطلاعات اضافی به ارائهدهنده استفاده کنید، بسته به اینکه ارائهدهنده چه قابلیتهایی را پشتیبانی کند. برای مثال، برخی از ارائهدهندگان حوزهی observability از هدرهایی مانند Prompt-Id پشتیبانی میکنند. |
| 184 | + |
| 185 | +<div dir='ltr'> |
| 186 | + <Highlight className="js"> |
| 187 | + {`import { generateText } from 'ai'; |
| 188 | +import { createOpenAI } from '@ai-sdk/openai'; |
| 189 | +import { config } from 'dotenv'; |
| 190 | +
|
| 191 | +config(); |
| 192 | +const my_model = createOpenAI({ |
| 193 | + baseURL: process.env.BASE_URL!, |
| 194 | + apiKey: process.env.LIARA_API_KEY!, |
| 195 | +}); |
| 196 | +
|
| 197 | +const { text } = await generateText({ |
| 198 | + model: my_model('openai/gpt-4o-mini'), |
| 199 | + prompt: 'Invent a new holiday and describe its traditions.', |
| 200 | + headers: { |
| 201 | + 'Prompt-Id': 'my-prompt-id', |
| 202 | + }, |
| 203 | +}); |
| 204 | +
|
| 205 | +console.log(text)`} |
| 206 | + </Highlight> |
| 207 | +</div> |
| 208 | +<div className="h-2" /> |
| 209 | +<Alert variant="info"> |
| 210 | +<p> |
| 211 | +این هدرها با هر درخواستی که توسط ارائهدهنده ایجاد میشود، ارسال میشوند. |
| 212 | +</p> |
| 213 | +</Alert> |
| 214 | + |
| 215 | + |
| 216 | +</Layout> |
0 commit comments