Šiame straipsnyje mes sukursime AI pagrįstą tyrimų įrankį naudodami „JavaScript“, daugiausia dėmesio skirdami naujausioms dirbtinio intelekto (AI) pažangai, kad būtų galima greičiau atsijoti daugybę duomenų.
Pradėsime paaiškindami pagrindines AI sąvokas, kurios padės suprasti, kaip veiks tyrimo įrankis. Taip pat išnagrinėsime tyrimo įrankio apribojimus ir kai kuriuos turimus įrankius, kurie padės mums pagerinti mūsų AI tyrimo įrankio galimybes taip, kad jis galėtų efektyviau pasiekti pritaikytą informaciją.
Straipsnio pabaigoje sukūrėte pažangų AI tyrimų pagalbinį įrankį, kuris padės greičiau gauti įžvalgų ir priimti labiau pagrįstus moksliniais tyrimais pagrįstus sprendimus.
Fonas ir pagrindai
Prieš pradėdami kurti, svarbu aptarti keletą pagrindinių sąvokų, kurios padės geriau suprasti, kaip veikia populiarios dirbtinio intelekto programos, tokios kaip Bard ir ChatGPT. Pradėkime nuo vektorinių įterpimų.
Vektoriniai įterpimai
Vektoriniai įterpimai yra skaitiniai tekstinių duomenų atvaizdai. Jie yra būtini, nes leidžia dirbtinio intelekto modeliams suprasti vartotojo pateikto teksto kontekstą ir rasti semantinį ryšį tarp pateikto teksto ir daugybės žinių, kurių jie išmoko. Tada šie vektoriniai įterpimai gali būti saugomi vektorių duomenų bazėse, pvz., Pinecone, leidžiant optimaliai ieškoti ir gauti saugomus vektorius.
Atkūrimo metodai
AI modeliai buvo tiksliai sureguliuoti, kad būtų pateikti patenkinami atsakymai. Kad tai padarytų efektyviai, jie buvo išmokyti naudotis didžiuliu duomenų kiekiu. Jie taip pat buvo sukurti taip, kad būtų galima pasikliauti efektyviais paieškos būdais, pvz., semantinio panašumo paieška, kad būtų galima greitai rasti pagal pateiktą užklausą tinkamiausias duomenų dalis (vektoriaus įterpimus).
Kai modeliui pateikiame išorinius duomenis, kaip tai darysime tolesniuose etapuose, šis procesas tampa generavimu, papildytu gavimu. Šis metodas sujungia viską, ką iki šiol išmokome, todėl galime pagerinti modelio našumą naudojant išorinius duomenis ir sintezuoti jį su panašiais vektoriniais įterpimais, kad būtų pateikti tikslesni ir patikimesni duomenys.
„JavaScript“ vaidmuo kuriant AI
„JavaScript“ buvo populiariausia programavimo kalba pastaruosius 11 metų, pagal 2023 m. „Stack Overflow“ tyrimą. Jis veikia daugumoje pasaulio žiniatinklio sąsajų, turi tvirtą kūrėjų ekosistemą ir turi universalų kelių platformų suderinamumą su kitais pagrindiniais žiniatinklio komponentais, pvz., naršyklėmis.
Ankstyvosiose AI revoliucijos stadijose Python buvo pagrindinė kalba, kurią AI tyrinėtojai naudojo mokydami naujus AI modelius. Tačiau, kai šie modeliai tampa paruošti vartotojui, didėja poreikis sukurti visą krūvą, dinamines ir interaktyvias žiniatinklio programas, kad galutiniams vartotojams būtų pristatytos naujausios AI pažangos.
Čia šviečia „JavaScript“. Kartu su HTML ir CSS „JavaScript“ yra geriausias pasirinkimas žiniatinklio ir (tam tikru mastu) mobiliųjų įrenginių kūrimui. Štai kodėl AI įmonės, tokios kaip „OpenAI“ ir „Mistral“, kuria kūrėjų rinkinius, kuriuos „JavaScript“ kūrėjai gali naudoti kurdami AI pagrįstą plėtrą, prieinamą platesnei auditorijai.
Pristatome OpenAI Node SDK
The OpenAI Node SDK yra įrankių rinkinys, kuriame pateikiamas API rinkinys, kurį „JavaScript“ kūrėjai gali naudoti norėdami sąveikauti su savo AI modelių galimybėmis. GPT 3.5 ir GPT 4 modelių serijos, Dall-E, TTS (tekstas į kalbą) ir Whisper (kalbos į tekstą modeliai) pasiekiami per SDK.
Kitame skyriuje naudosime naujausią GPT 4 modelį, kad sukurtume paprastą tyrimo asistento pavyzdį.
Pastaba: galite peržiūrėti GitHub Repo atlikdami toliau nurodytus veiksmus.
Būtinos sąlygos
- Pagrindinės JavaScript žinios.
- Node.js įdiegtas. Aplankykite pareigūną Node.js svetainę, kad įdiegtumėte arba atnaujintumėte Node.js vykdymo laiką vietiniame kompiuteryje.
- OpenAI API raktas. Griebk savo API raktaio jei jo neturite, užsiregistruokite jų oficialioje svetainėje.
1 veiksmas: projekto nustatymas
Vykdykite toliau pateiktą komandą, kad sukurtumėte naują projekto aplanką:
mkdir research-assistant
cd research-assistant
2 veiksmas: inicijuokite naują Node.js projektą
Toliau pateikta komanda sukurs naują package.json
savo aplanke:
npm init -y
3 veiksmas: įdiekite OpenAI Node SDK
Vykdykite šią komandą:
npm install openai
4 veiksmas. Sukurkite tyrimų asistento funkcijas
Sukurkime naują failą pavadinimu index.js
aplanke ir įdėkite žemiau esantį kodą.
Pridėsiu tiesioginius komentarus, kad padėčiau geriau suprasti kodo bloką:
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();
Bėk node index.js
komandinėje eilutėje ir turėtumėte gauti tokį rezultatą, kaip parodyta žemiau.
Atminkite, kad nerekomenduojama API raktų tvarkyti tiesiogiai sąsajoje dėl saugumo problemų. Šis pavyzdys skirtas tik mokymosi tikslais. Gamybos tikslais sukurkite a .env
failą ir įdėkite savo OPENAI_API_KEY
joje. Tada galite inicijuoti OpenAI SDK, kaip nurodyta toliau:
const openai = new OpenAI({
apiKey: process.env['OPENAI_API_KEY'],
});
Kai pereiname prie kito skyriaus, pagalvokite, kaip galite pagerinti dabartinę AI asistento sąranką.
Mūsų tyrimų asistentas yra puikus pavyzdys, kaip galime naudoti naujausius AI modelius, kad žymiai pagerintume savo tyrimų srautą. Tačiau jis turi tam tikrų apribojimų, kurie aptariami toliau.
Pagrindinės tyrimo priemonės apribojimai
Prasta vartotojo patirtis. Mūsų dabartinei sąrankai reikia geresnės naudotojo patirties įvesties atžvilgiu. Norėdami tai išspręsti, galime naudoti „JavaScript“ sistemą, pvz., „React“, kad sukurtume įvesties laukus. Be to, praeina kelios sekundės, kol gauname bet kokį atsakymą iš modelio, o tai gali būti nemalonu. Tai galima išspręsti naudojant įkroviklius ir integruojant OpenAI integruotą srautinio perdavimo funkciją, kad gautume atsakymus, kai tik modelis juos sugeneruos.
Ribota žinių bazė. Dabartinė versija remiasi GPT-4 iš anksto parengtomis žiniomis, kad gautų atsakymą. Nors šis duomenų rinkinys yra didžiulis, jo žinių ribinė data yra 2023 m. balandžio mėn. Tai reiškia, kad ji gali nepateikti atitinkamų atsakymų į tyrimo klausimus apie dabartinius įvykius. Bandysime pašalinti šį apribojimą naudodami kitą įrankio versiją pridėdami išorinių duomenų.
Ribotas kontekstas. Kai perduodame tyrimo užduotis žmogui, tikimės, kad jis turės pakankamai konteksto, kad galėtų efektyviai apdoroti visas užklausas. Tačiau mūsų dabartinė sąranka apdoroja kiekvieną užklausą atskirai, o tai netinka sudėtingesnėms sąrankoms. Norėdami tai išspręsti, mums reikia sistemos, leidžiančios saugoti ir sujungti ankstesnius atsakymus su dabartiniais, kad būtų pateiktas visas kontekstas.
Įvadas į OpenAI funkcijų iškvietimą
Buvo išleista OpenAI funkcijų iškvietimo funkcija 2023 m. birželio mėn, leidžiančią kūrėjams sujungti palaikomus GPT modelius (3.5 ir 4) su funkcijomis, kurios gali gauti kontekstui svarbius išorinius duomenis iš įvairių šaltinių, pvz., įrankių, API ir duomenų bazių užklausų. Šios funkcijos integravimas gali padėti mums išspręsti kai kuriuos anksčiau minėtus AI asistento apribojimus.
Patobulinto tyrimo pagalbinio įrankio kūrimas
Būtinos sąlygos
- NewsAPI raktas. Be būtinų sąlygų, kurias paminėjome dabartinei asistento versijai, mums reikės nemokamo API rakto NewsAPI. Jie turi didelę nemokamą kūrėjo pakopą, kuri puikiai tinka mūsų poreikiams.
Pastaba: galite peržiūrėti GitHub Repo atlikdami toliau nurodytus veiksmus ir OpenAI oficiali kulinarijos knyga funkcijų skambučių integravimui į GPT modelius.
Taip pat pridėjau atitinkamų tiesioginio kodo komentarų, kad galėtumėte sekti.
1 veiksmas: išoriniams duomenims nustatykite NewsAPI gavimo funkciją
Pastaba: galite pažvelgti į API dokumentacija kad pamatytumėte atsakymo struktūrą.
Pirmiausia sukursime funkciją naujausioms naujienoms gauti pagal pateiktą užklausą:
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 veiksmas: apibūdinkite mūsų funkciją
Tada įdiegsime įrankių sąranką, apibūdinančią mūsų išorinių duomenų funkcijos sudėtį, kad AI modelis žinotų, kokio tipo duomenų galima tikėtis. Tai turėtų apimti name
, description
ir 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 veiksmas: išorinių įrankių integravimas į mūsų AI asistentą
Šiame žingsnyje sukursime funkciją, vadinamą researchAssistant
. Jis paskatins pokalbį su OpenAI GPT-4 modeliu, vykdys nurodytą išorinių duomenų funkciją įrankiuose ir dinamiškai integruos atsakymus.
Pirmiausia nustatysime masyvą, kuriame bus sekami visi mūsų pokalbiai su AI asistentu ir pateikiamas išsamus kontekstas, kai pateikiama nauja užklausa:
const messages = [
{
role: "system",
content: `You are a helpful assistant. Only use the functions you have been provided with.`,
},
];
Kai tai bus padaryta, nustatysime pagrindines asistento funkcijas. Tai apima išorinių funkcijų atsakymų apdorojimą, kad būtų sukurta išsami ir tinkama ataskaita:
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 veiksmas: paleiskite mūsų AI asistentą
Paskutinis mūsų žingsnis yra sukurti funkciją, kuri tiektų researchAssistant
funkcijos užklausos parametras su mūsų tyrimo užklausa ir apdoroja jos vykdymą:
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();
Bėk node index.js
terminale ir turėtumėte pamatyti atsakymą, panašų į toliau pateiktą.
Įdomu tai, kad GPT-4 modelio žinių ribos buvo 2023 m. balandžio mėn., ty prieš „Apple Vision Pro“ išleidimą 2024 m. vasario mėn. Nepaisant šio apribojimo, modelis pateikė atitinkamą tyrimo ataskaitą, nes užklausą papildėme išoriniais duomenimis.
Gali būti ir kitos API, kurias galite integruoti į savo AI asistentą TimeAPI, Vietos APIarba bet kuri kita API su struktūriniais atsakymais, prie kurių turite prieigą.
Išvada
Kokia įdomi kelionė buvo! Šioje mokymo programoje buvo nagrinėjamos pagrindinės sąvokos, kurios padėjo mums suprasti, kaip veikia populiarios dirbtinio intelekto programos.
Tada sukūrėme AI tyrimų asistentą, galintį suprasti mūsų užklausas ir generuoti į žmones panašius atsakymus naudodami OpenAI SDK.
Norėdami dar labiau pagerinti savo pagrindinį pavyzdį, įtraukėme išorinius duomenų šaltinius per funkcijų skambučius, užtikrindami, kad mūsų AI modelis gautų prieigą prie naujausios ir aktualiausios informacijos iš žiniatinklio. Visomis šiomis pastangomis galiausiai sukūrėme sudėtingą AI varomą tyrimų asistentą.
DI galimybės yra neribotos, todėl galite remtis šiuo pagrindu kurdami įdomius įrankius ir programas, kurios naudoja naujausius AI modelius ir, žinoma, JavaScript, kad automatizuotų kasdienes užduotis, sutaupydami brangaus laiko ir pinigų.