ساخت ابزار دستیار پژوهشی با هوش مصنوعی و جاوا اسکریپت
در این مقاله، ما یک ابزار تحقیقاتی مبتنی بر هوش مصنوعی را با استفاده از جاوا اسکریپت توسعه میدهیم، با تمرکز بر استفاده از آخرین پیشرفتهای هوش مصنوعی (AI) برای تحلیل سریعتر هزاران داده.
ما با توضیح مفاهیم اولیه هوش مصنوعی شروع می کنیم تا به شما در درک نحوه عملکرد ابزار تحقیق کمک کنیم. ما همچنین محدودیتهای ابزار تحقیق و برخی ابزارهای موجود را تحلیل خواهیم کرد که به ما کمک میکنند قابلیتهای ابزار تحقیق هوش مصنوعی خود را به گونهای افزایش دهیم که به آن امکان میدهد به طور کارآمدتر به اطلاعات سفارشی دسترسی پیدا کند.
در پایان مقاله، شما یک ابزار دستیار تحقیق هوش مصنوعی پیشرفته ایجاد کردهاید تا به شما کمک کند سریعتر بینش را به دست آورید و تصمیمات مبتنی بر تحقیقات آگاهانهتری بگیرید.
پیشینه و مبانی
قبل از شروع ساختن، مهم است که درباره برخی از مفاهیم اساسی صحبت کنیم که به شما کمک می کند تا درک بهتری از نحوه عملکرد برنامه های کاربردی مبتنی بر هوش مصنوعی مانند Bard و ChatGPT داشته باشید. بیایید با جاسازی های برداری شروع کنیم.
جاسازی های وکتور
تعبیههای برداری نمایش عددی دادههای مبتنی بر متن هستند. آنها ضروری هستند زیرا به مدلهای هوش مصنوعی اجازه میدهند متن متن ارائهشده توسط کاربر را درک کنند و رابطه معنایی بین متن ارائهشده و دانشهایی را که روی آنها آموزش دیدهاند، بیابند. سپس این جاسازیهای برداری را میتوان در پایگاههای داده برداری مانند Pinecone ذخیره کرد و امکان جستجو و بازیابی بهینه بردارهای ذخیره شده را فراهم میکند.
روش های بازیابی
مدلهای هوش مصنوعی برای ارائه پاسخهای رضایتبخش تنظیم شدهاند. برای انجام کارآمد این کار، آنها بر روی حجم وسیعی از داده ها آموزش دیده اند. آنها همچنین برای تکیه بر تکنیکهای بازیابی کارآمد - مانند جستجوی تشابه معنایی - برای یافتن سریعترین تکههای داده (جاسازیهای برداری) به درخواست ارائه شده ساخته شدهاند.
هنگامی که مدل را با داده های خارجی عرضه می کنیم، همانطور که در مراحل بعدی انجام خواهیم داد، این فرآیند به تولید گفت ه بازیابی تبدیل می شود. این روش همه چیزهایی را که تاکنون آموختهایم ترکیب میکند و به ما امکان میدهد عملکرد یک مدل را با دادههای خارجی افزایش دهیم و آن را با جاسازیهای برداری مشابه ترکیب کنیم تا دادههای دقیقتر و قابل اعتمادتری ارائه کنیم.
نقش جاوا اسکریپت در توسعه هوش مصنوعی
بر اساس نظرسنجی Stack Overflow در سال 2023، جاوا اسکریپت محبوب ترین زبان برنامه نویسی در 11 سال گذشته بوده است. بیشتر رابطهای وب دنیا را تامین میکند، دارای اکوسیستم توسعهدهنده قوی است و از سازگاری چند پلتفرمی با سایر اجزای اصلی وب مانند مرورگرها برخوردار است.
در مراحل اولیه انقلاب هوش مصنوعی، پایتون زبان اصلی بود که توسط محققان هوش مصنوعی برای آموزش مدلهای جدید هوش مصنوعی استفاده میشد. با این حال، از آنجایی که این مدلها برای مصرفکننده آماده میشوند، نیاز روزافزونی به ایجاد برنامههای وب تمام پشته، پویا و تعاملی برای نمایش آخرین پیشرفتهای هوش مصنوعی برای کاربران نهایی وجود دارد.
اینجاست که جاوا اسکریپت می درخشد. در ترکیب با HTML و CSS، جاوا اسکریپت بهترین انتخاب برای توسعه وب و (تا حدی) موبایل است. به همین دلیل است که شرکتهای هوش مصنوعی مانند OpenAI و Mistral در حال ساخت کیتهای توسعهدهنده هستند که توسعهدهندگان جاوا اسکریپت میتوانند از آن برای ایجاد توسعه مبتنی بر هوش مصنوعی که برای مخاطبان گستردهتری قابل دسترسی است، استفاده کنند.
معرفی Node SDK OpenAI
Node SDK OpenAI ابزاری را ارائه میکند که مجموعهای از APIها را نشان میدهد که توسعهدهندگان جاوا اسکریپت میتوانند از آن برای تعامل با قابلیتهای مدلهای هوش مصنوعی خود استفاده کنند. سری مدلهای GPT 3.5 و GPT 4، Dall-E، TTS (متن به گفتار) و Whisper (مدلهای گفتار به متن) از طریق SDK در دسترس هستند.
در بخش بعدی، از آخرین مدل GPT 4 برای ساختن یک نمونه ساده از دستیار تحقیقاتی خود استفاده خواهیم کرد.
توجه: با طی مراحل زیر میتوانید Repo GitHub را تحلیل کنید.
پیش نیازها
دانش پایه جاوا اسکریپت
Node.js نصب شد. برای نصب یا به روز رسانی Runtime Node.js در رایانه محلی خود از وب سایت رسمی Node.js دیدن کنید.
کلید OpenAI API. کلیدهای API خود را بگیرید و اگر ندارید، در وب سایت رسمی آنها ثبت نام کنید.
مرحله 1: راه اندازی پروژه خود
دستور زیر را برای ایجاد یک پوشه پروژه جدید اجرا کنید:
mkdir research-assistant cd research-assistant
مرحله 2: یک پروژه Node.js جدید را راه اندازی کنید
دستور زیر یک package.json
جدید در پوشه شما ایجاد می کند:
npm init -y
مرحله 3: OpenAI Node SDK را نصب کنید
دستور زیر را اجرا کنید:
npm install openai
مرحله 4: ایجاد قابلیت های دستیار پژوهشی
بیایید یک فایل جدید به نام index.js
در پوشه ایجاد کنیم و کد زیر را در آن قرار دهیم.
برای کمک به درک بهتر بلوک کد، نظرات درون خطی اضافه می کنم:
const { OpenAI } = require ( "openai" ) ; const openai = new OpenAI ( { apiKey : "YOUR_OPENAI_API_KEY" , dangerouslyAllowBrowser : true , } ) ; async function queryAIModel ( question ) { try { const completion = await openai . chat . completions . create ( { model : "gpt-4" , messages : [ { role : "system" , content : "You are a helpful research assistant." } , { role : "user" , content : question } ] , } ) ; return completion . choices [ 0 ] . message . content . trim ( ) ; } catch ( error ) { console . error ( "An error occurred while querying GPT-4:" , error ) ; return "Sorry, an error occurred. Please try again." ; } } async function queryResearchAssistant ( ) { const query = "What is the role of JavaScript in building AI Applications?" ; const answer = await queryAIModel ( query ) ; console . log ( ` Question: ${ query } \nAnswer: ${ answer } ` ) ; } queryResearchAssistant ( ) ;
node index.js
در خط فرمان اجرا کنید و باید نتیجه ای مانند تصویر زیر دریافت کنید.
لطفاً توجه داشته باشید که به دلیل نگرانیهای امنیتی، کنترل مستقیم کلیدهای API در قسمت جلویی توصیه نمیشود. این مثال فقط برای اهداف یادگیری است. برای اهداف تولید، یک فایل .env
ایجاد کنید و OPENAI_API_KEY
خود را در آن قرار دهید. سپس می توانید OpenAI SDK را مانند زیر مقداردهی اولیه کنید:
const openai = new OpenAI ( { apiKey : process . env [ 'OPENAI_API_KEY' ] , } ) ;
همانطور که به بخش بعدی می رویم، به راه هایی فکر کنید که بتوانید راه اندازی دستیار هوش مصنوعی فعلی ما را بهبود ببخشید.
دستیار پژوهشی ما نمونهای عالی از این است که چگونه میتوانیم از آخرین مدلهای هوش مصنوعی برای بهبود چشمگیر جریان تحقیقات خود استفاده کنیم. با این حال، با محدودیت هایی همراه است که در زیر به آنها اشاره می شود.
محدودیت های ابزار تحقیق پایه
تجربه کاربری ضعیف راه اندازی فعلی ما به تجربه کاربری بهتری از نظر ورودی نیاز دارد. ما می توانیم از یک چارچوب جاوا اسکریپت مانند React برای ایجاد فیلدهای ورودی برای حل این مشکل استفاده کنیم. علاوه بر این، چند ثانیه طول می کشد تا ما هر گونه پاسخی از مدل دریافت کنیم، که می تواند خسته کننده باشد. این را می توان با استفاده از لودرها و ادغام قابلیت پخش داخلی OpenAI حل کرد تا اطمینان حاصل شود که به محض اینکه مدل آنها را تولید می کند، پاسخ دریافت می کنیم.
پایگاه دانش محدود نسخه فعلی برای پاسخ به دانش از پیش آموزش دیده GPT-4 متکی است. در حالی که این مجموعه داده عظیم است، تاریخ قطع دانش آن در زمان نوشتن آوریل 2023 است. این بدان معناست که ممکن است نتواند پاسخ های مرتبطی را به سؤالات پژوهشی در مورد رویدادهای جاری ارائه دهد. ما سعی خواهیم کرد این محدودیت را با نسخه ابزار بعدی خود با گفت ن داده های خارجی حل کنیم.
زمینه محدود وقتی وظایف تحقیقاتی را به یک انسان محول میکنیم، انتظار داریم که آنها زمینه کافی برای پردازش همه پرسشها را داشته باشند. با این حال، راهاندازی کنونی ما هر پرس و جو را به صورت مجزا پردازش میکند، که برای تنظیمات پیچیدهتر مناسب نیست. برای حل این مشکل، ما به سیستمی نیاز داریم که پاسخهای قبلی را به پاسخهای فعلی ذخیره و به هم بپیوندد تا زمینه کامل را فراهم کند.
مقدمه ای بر فراخوانی تابع OpenAI
ویژگی فراخوانی تابع OpenAI در ژوئن 2023 منتشر شد و به توسعه دهندگان این امکان را می دهد تا مدل های GPT پشتیبانی شده (3.5 و 4) را با توابعی که می توانند داده های خارجی مرتبط با متن را از منابع مختلف مانند ابزارها، API ها و پرس و جوهای پایگاه داده بازیابی کنند، متصل کنند. ادغام این ویژگی می تواند به ما کمک کند برخی از محدودیت های دستیار هوش مصنوعی خود را که قبلاً ذکر شد برطرف کنیم.
ساخت یک ابزار دستیار تحقیقاتی پیشرفته
پیش نیازها
کلید NewsAPI . علاوه بر پیش نیازهایی که برای نسخه دستیار فعلی ذکر کردیم، به یک کلید API رایگان از NewsAPI نیاز داریم. آنها یک ردیف توسعه دهنده رایگان سخاوتمندانه دارند که برای نیازهای ما مناسب است.
توجه: میتوانید با طی مراحل زیر، GitHub Repo و کتاب آشپزی رسمی OpenAI را برای ادغام فراخوانیهای عملکرد در مدلهای GPT مرور کنید.
من همچنین نظرات مربوط به کد درون خطی را اضافه کرده ام تا بتوانید آن را دنبال کنید.
مرحله 1: تابع واکشی NewsAPI را برای داده های خارجی تنظیم کنید
توجه: برای مشاهده ساختار پاسخ می توانید به اسناد API نگاه کنید.
ابتدا، ما یک تابع برای واکشی آخرین اخبار بر اساس درخواست ارائه شده شما ایجاد می کنیم:
async function fetchLatestNews ( query ) { const apiKey = 'your_newsapi_api_key' ; const url = ` https://newsapi.org/v2/everything?q= ${ encodeURIComponent ( query ) } &from=2024-02-9&sortBy=popularity&apiKey= ${ apiKey } ` ; try { const response = await fetch ( url ) ; const data = await response . json ( ) ; const first5Articles = data . articles && data . articles . length > 0 ? data . articles . slice ( 0 , 5 ) : [ ] ; const resultJson = JSON . stringify ( { articles : first5Articles } ) ; return resultJson } catch ( error ) { console . error ( 'Error fetching data:' , error ) ; } }
مرحله 2: عملکرد ما را شرح دهید
در مرحله بعد، ما یک راهاندازی ابزاری را پیادهسازی میکنیم که ترکیب عملکرد دادههای خارجی ما را توصیف میکند تا مدل هوش مصنوعی بداند چه نوع دادهای را انتظار دارد. این باید شامل name
، description
و parameters
باشد:
const tools = [ { type : "function" , function : { name : "fetchLatestNews" , description : "Fetch the latest news based on a query" , parameters : { type : "object" , properties : { query : { type : "string" , } , } , required : [ "query" ] , } , } } , ] ; const availableTools = { fetchLatestNews , } ;
مرحله 3: ادغام ابزارهای خارجی در دستیار هوش مصنوعی ما
در این مرحله، تابعی به نام researchAssistant
ایجاد می کنیم. این مکالمه را با مدل GPT-4 OpenAI آغاز می کند، تابع داده خارجی مشخص شده را در ابزارها اجرا می کند و پاسخ ها را به صورت پویا یکپارچه می کند.
برای شروع، آرایهای را تعریف میکنیم که تمام مکالمات ما با دستیار هوش مصنوعی را ردیابی میکند و زمانی که درخواست جدیدی ارائه میشود، زمینه دقیقی را ارائه میدهد:
const messages = [ { role : "system" , content : ` You are a helpful assistant. Only use the functions you have been provided with. ` , } , ] ;
پس از انجام این کار، عملکرد اصلی را برای دستیار تنظیم می کنیم. این شامل پردازش پاسخهای توابع خارجی برای ایجاد یک گزارش جامع و مرتبط برای شما است:
async function researchAssistant ( userInput ) { messages . push ( { role : "user" , content : userInput , } ) ; for ( let i = 0 ; i < 5 ; i ++ ) { const response = await openai . chat . completions . create ( { model : "gpt-4" , messages : messages , tools : tools , max_tokens : 4096 } ) ; const { finish_reason , message } = response . choices [ 0 ] ; if ( finish_reason === "tool_calls" && message . tool_calls ) { const functionName = message . tool_calls [ 0 ] . function . name ; const functionToCall = availableTools [ functionName ] ; const functionArgs = JSON . parse ( message . tool_calls [ 0 ] . function . arguments ) ; const functionResponse = await functionToCall . apply ( null , [ functionArgs . query ] ) ; messages . push ( { role : "function" , name : functionName , content : ` The result of the last function was this: ${ JSON . stringify ( functionResponse ) }
` , } ) ; } else if ( finish_reason === "stop" ) { messages . push ( message ) ; return message . content ; } } return "The maximum number of iterations has been met without a relevant answer. Please try again." ; }
مرحله 4: دستیار هوش مصنوعی ما را اجرا کنید
مرحله آخر ما ایجاد تابعی است که پارامتر پرس و جو researchAssistant
را با پرس و جوی تحقیقاتی ما تامین کرده و اجرای آن را پردازش می کند:
async function main ( ) { const response = await researchAssistant ( "I have a presentation to make. Write a market research report on Apple Vision Pro and summarize the key points." ) ; console . log ( "Response:" , response ) ; } main ( ) ;
node index.js
در ترمینال خود اجرا کنید و باید پاسخی مشابه عکس زیر ببینید.
بیشتر بخوانید
ویژگی Best Take Google Pixel 8 Pro عکسهای گروهی شما را اصلاح میکند و من آن را دوست دارم
نکته جالب این است که قطع دانش مدل GPT-4 در آوریل 2023 بود که قبل از انتشار Vision Pro اپل در فوریه 2024 بود.
API های دیگری که می توانید در دستیار هوش مصنوعی خود ادغام کنید می توانند TimeAPI، Location API یا هر API دیگری با پاسخ های ساختاری که به آنها دسترسی دارید باشد.
نتیجه
چه سفر هیجان انگیزی بوده است! این آموزش مفاهیم کلیدی را تحلیل می کند که به درک ما از نحوه عملکرد برنامه های کاربردی مبتنی بر هوش مصنوعی کمک کرده است.
سپس یک دستیار تحقیقاتی هوش مصنوعی ساختیم که قادر به درک پرسشهای ما و ایجاد پاسخهای انسانمانند با استفاده از SDK OpenAI است.
برای تقویت بیشتر مثال اصلی خود، منابع داده خارجی را از طریق فراخوانی تابع ترکیب کردیم و اطمینان حاصل کردیم که مدل هوش مصنوعی ما به جدیدترین و مرتبط ترین اطلاعات از وب دسترسی دارد. با تمام این تلاشها، در نهایت، ما یک دستیار تحقیقاتی پیشرفته با هوش مصنوعی ساختیم.
امکانات با هوش مصنوعی بیپایان است، و شما میتوانید بر اساس این پایه، ابزارها و برنامههای هیجانانگیزی بسازید که از مدلهای پیشرفته هوش مصنوعی و البته جاوا اسکریپت برای خودکارسازی کارهای روزانه استفاده میکنند و در وقت و هزینه ما صرفهجویی میکنند.
ارسال نظر