langchainjs: rangka kerja yang kuat untuk membina model dan ejen bahasa JavaScript AI-yang
mata teras:
- Langchainjs adalah rangka kerja JavaScript yang kuat yang membolehkan pemaju membina dan mencuba dengan model bahasa dan ejen yang didorong oleh AI yang disepadukan dengan lancar ke dalam aplikasi web.
- Rangka kerja ini membolehkan penciptaan ejen yang dapat memanfaatkan pelbagai alat dan sumber data untuk melaksanakan tugas bahasa yang kompleks seperti carian internet dan pengiraan matematik, dengan itu meningkatkan ketepatan dan kaitan respons.
- Langchain menyokong pelbagai model, termasuk model bahasa untuk output teks mudah, model sembang untuk perbualan interaktif, dan membenamkan model untuk menukar teks ke dalam vektor angka, dengan itu memudahkan pembangunan pelbagai aplikasi NLP.
- Data teks boleh diuruskan dan diproses dengan cekap melalui kaedah chunking yang disesuaikan, memastikan prestasi optimum dan kaitan kontekstual apabila memproses teks besar.
- Selain menggunakan model OpenAI, Langchain serasi dengan model bahasa besar (LLMS) dan perkhidmatan AI yang lain, menyediakan keupayaan fleksibiliti dan lanjutan untuk pemaju meneroka integrasi AI yang berbeza dalam projek mereka.
Prasyarat:
untuk mempelajari artikel ini, buat folder baru dan pasang pakej NPM Langchain:
npm install -S langchainSelepas membuat folder baru, gunakan akhiran
untuk membuat fail modul JS baru (contohnya .mjs
). test1.mjs
ejen:
Di Langchain, ejen adalah entiti yang dapat memahami dan menghasilkan teks. Ejen-ejen ini boleh mengkonfigurasi tingkah laku dan sumber data tertentu dan dilatih untuk melaksanakan pelbagai tugas yang berkaitan dengan bahasa, menjadikannya alat pelbagai fungsi untuk pelbagai aplikasi.
Buat ejen Langchain: Agensi -agensi boleh dikonfigurasikan untuk menggunakan "alat" untuk mengumpul data yang diperlukan dan membangunkan respons yang baik. Sila lihat contoh di bawah. Ia menggunakan API SERP (API Carian Internet) untuk mencari maklumat yang berkaitan dengan soalan atau input dan menjawabnya. Ia juga menggunakan alat
untuk melaksanakan operasi matematik -contohnya, menukar unit atau mencari perubahan peratusan antara dua nilai:npm install -S langchain
Selepas membuat pembolehubah model menggunakan modelName: "gpt-3.5-turbo"
dan temperature: 0
, kami membuat pelaksana yang menggabungkan model yang dicipta dengan alat yang ditentukan (Serpapi dan kalkulator). Dalam input, saya meminta LLM untuk mencari Internet (menggunakan Serpapi) dan mengetahui artis mana yang telah mengeluarkan lebih banyak album sejak 2010 -Nas atau Boldy James -dan menunjukkan perbezaan peratusan (menggunakan kalkulator).
Dalam contoh ini, saya perlu memberitahu LLM secara eksplisit untuk "Melalui Cari Internet ..." untuk mendapatkannya menggunakan Internet untuk mendapatkan data sehingga hari ini, dan bukannya menggunakan OpenAI Default hingga 2021 sahaja.
output adalah seperti berikut:
import { initializeAgentExecutorWithOptions } from "langchain/agents"; import { ChatOpenAI } from "langchain/chat_models/openai"; import { SerpAPI } from "langchain/tools"; import { Calculator } from "langchain/tools/calculator"; process.env["OPENAI_API_KEY"] = "YOUR_OPENAI_KEY" process.env["SERPAPI_API_KEY"] = "YOUR_SERPAPI_KEY" const tools = [new Calculator(), new SerpAPI()]; const model = new ChatOpenAI({ modelName: "gpt-3.5-turbo", temperature: 0 }); const executor = await initializeAgentExecutorWithOptions(tools, model, { agentType: "openai-functions", verbose: false, }); const result = await executor.run("通過搜索互聯(lián)網(wǎng),查找Boldy James自2010年以來發(fā)行了多少張專輯,以及Nas自2010年以來發(fā)行了多少張專輯?找出誰發(fā)行了更多專輯,并顯示百分比差異。"); console.log(result);
Model (model):
Terdapat tiga jenis model di Langchain: LLM, model sembang, dan model penyembuhan teks. Mari kita meneroka setiap jenis model dengan beberapa contoh.
Model Bahasa:
Langchain menyediakan cara untuk menggunakan model bahasa dalam JavaScript untuk menghasilkan output teks berdasarkan input teks. Ia tidak begitu rumit seperti model sembang dan paling sesuai untuk tugas bahasa input-output mudah. Berikut adalah contoh menggunakan OpenAI:
<code>// 輸出將取決于互聯(lián)網(wǎng)搜索結(jié)果</code>
seperti yang anda lihat, ia menggunakan model gpt-3.5-turbo
untuk menyenaraikan semua beri merah. Dalam contoh ini, saya menetapkan suhu kepada 0 untuk memberikan ketepatan LLM de facto.
output:
import { OpenAI } from "langchain/llms/openai"; const llm = new OpenAI({ openAIApiKey: "YOUR_OPENAI_KEY", model: "gpt-3.5-turbo", temperature: 0 }); const res = await llm.call("列出所有紅色的漿果"); console.log(res);
Model sembang:
Jika anda mahukan jawapan dan perbualan yang lebih kompleks, anda perlu menggunakan model sembang. Secara teknikal, bagaimana model sembang berbeza dari model bahasa? Dalam kata -kata dokumentasi Langchain:
Model sembang adalah varian model bahasa. Walaupun model sembang menggunakan model bahasa di latar belakang, mereka menggunakan antara muka yang sedikit berbeza. Daripada menggunakan "input teks, output teks" API, mereka menggunakan "mesej sembang" sebagai antara muka untuk input dan output.
Ini adalah skrip model sembang javascript yang mudah (agak tidak berguna tetapi menarik):
<code>// 輸出將列出紅色的漿果</code>
Seperti yang anda lihat, kod pertama menghantar mesej sistem dan memberitahu chatbot untuk menjadi pembantu puitis yang selalu menjawab dengan puisi, dan kemudian ia menghantar mesej manusia yang memberitahu chatbot untuk memberitahu saya siapa pemain tenis yang lebih baik: De Jokovic, Federer atau Nadal. Sekiranya anda menjalankan model chatbot ini, anda akan melihat sesuatu seperti ini:
import { ChatOpenAI } from "langchain/chat_models/openai"; import { PromptTemplate } from "langchain/prompts"; const chat = new ChatOpenAI({ openAIApiKey: "YOUR_OPENAI_KEY", model: "gpt-3.5-turbo", temperature: 0 }); const prompt = PromptTemplate.fromTemplate(`你是一個詩意的助手,總是用押韻來回答:{question}`); const runnable = prompt.pipe(chat); const response = await runnable.invoke({ question: "誰更好,德約科維奇、費德勒還是納達爾?" }); console.log(response);
Embeddings:
Model Embing menyediakan cara untuk menukar perkataan dan nombor dalam teks ke dalam vektor yang kemudiannya boleh dikaitkan dengan perkataan atau nombor lain. Ini mungkin terdengar abstrak, jadi mari kita lihat contoh:
<code>// 輸出將是一個用押韻回答的問題</code>
ini akan mengembalikan senarai panjang nombor terapung:
import { OpenAIEmbeddings } from "langchain/embeddings/openai"; process.env["OPENAI_API_KEY"] = "YOUR_OPENAI_KEY" const embeddings = new OpenAIEmbeddings(); const res = await embeddings.embedQuery("誰創(chuàng)造了萬維網(wǎng)?"); console.log(res)
Ini adalah apa yang kelihatan seperti. Terdapat banyak nombor titik terapung dalam hanya enam perkataan!
ini dibenamkan kemudian boleh digunakan untuk mengaitkan teks input dengan jawapan yang berpotensi, teks yang berkaitan, nama, dll.
mari kita lihat kes penggunaan untuk model tertanam sekarang ...
Sekarang, ini adalah skrip yang akan menggunakan embeds untuk mendapatkan soalan "Apakah haiwan yang paling berat?"
npm install -S langchain
ketulan:
Model Langchain tidak dapat memproses teks besar dan menggunakannya untuk menghasilkan respons. Di sinilah segmentasi chunking dan teks dimainkan. Biarkan saya menunjukkan kepada anda dua cara mudah untuk memecah data teks ke dalam ketulan sebelum memberi makan kepada Langchain.
segmen oleh watak:
Untuk mengelakkan gangguan secara tiba -tiba dalam chunking, anda boleh memecah teks dengan perenggan dengan memisahkan setiap kejadian watak baru:
import { initializeAgentExecutorWithOptions } from "langchain/agents"; import { ChatOpenAI } from "langchain/chat_models/openai"; import { SerpAPI } from "langchain/tools"; import { Calculator } from "langchain/tools/calculator"; process.env["OPENAI_API_KEY"] = "YOUR_OPENAI_KEY" process.env["SERPAPI_API_KEY"] = "YOUR_SERPAPI_KEY" const tools = [new Calculator(), new SerpAPI()]; const model = new ChatOpenAI({ modelName: "gpt-3.5-turbo", temperature: 0 }); const executor = await initializeAgentExecutorWithOptions(tools, model, { agentType: "openai-functions", verbose: false, }); const result = await executor.run("通過搜索互聯(lián)網(wǎng),查找Boldy James自2010年以來發(fā)行了多少張專輯,以及Nas自2010年以來發(fā)行了多少張專輯?找出誰發(fā)行了更多專輯,并顯示百分比差異。"); console.log(result);Ini adalah cara yang berguna untuk memecah teks. Walau bagaimanapun, anda boleh menggunakan mana -mana watak sebagai pemisah, bukan hanya
. n
rekursively segmenting chunking:
Jika anda ingin membahagikan teks dengan ketat oleh watak -watak panjang tertentu, anda boleh menggunakan: RecursiveCharacterTextSplitter
<code>// 輸出將取決于互聯(lián)網(wǎng)搜索結(jié)果</code>Dalam contoh ini, teks dibahagikan setiap 100 aksara, dan ketulan bertindih hingga 15 aksara.
saiz blok dan tumpang tindih:
Dengan melihat contoh -contoh ini, anda mungkin mula tertanya -tanya apa saiz chunking dan parameter bertindih dan bagaimana ia mempengaruhi prestasi. Ok, izinkan saya menerangkan dua perkara secara ringkas.
- Saiz bahagian menentukan bilangan aksara dalam setiap bahagian. Semakin besar saiz bahagian, semakin banyak data yang ada di bahagian, semakin lama ia mengambil langchain untuk memprosesnya dan menghasilkan output, dan sebaliknya.
- Blok bertindih adalah kandungan yang berkongsi maklumat antara blok supaya mereka berkongsi beberapa konteks. Semakin tinggi tumpang tindih, semakin berlebihan potongan anda; Biasanya, tumpang tindih yang baik adalah kira -kira 10% hingga 20% daripada saiz chunking, walaupun tumpang tindih yang dikehendaki bervariasi dengan jenis teks yang berbeza dan kes penggunaan.
rantai:
Bab pada dasarnya adalah pelbagai fungsi LLM yang dikaitkan bersama untuk melakukan tugas yang lebih kompleks, jika tidak, ia tidak dapat dilakukan melalui input LLM yang mudah; Mari lihat contoh yang sejuk:
import { OpenAI } from "langchain/llms/openai"; const llm = new OpenAI({ openAIApiKey: "YOUR_OPENAI_KEY", model: "gpt-3.5-turbo", temperature: 0 }); const res = await llm.call("列出所有紅色的漿果"); console.log(res);
Beyond Openai:
Walaupun saya telah menggunakan model OpenAI sebagai contoh fungsi Langchain yang berlainan, ia tidak terhad kepada model OpenAI. Anda boleh menggunakan Langchain dengan banyak perkhidmatan LLM dan AI yang lain. Anda boleh mencari senarai lengkap Langchain dan JavaScript Integrated LLMS dalam dokumentasi mereka.Sebagai contoh, anda boleh menggunakan Cohere dengan Langchain. Selepas memasang Cohere, menggunakan
, anda boleh membuat kod Q & A yang mudah menggunakan Langchain dan Cohere, seperti yang ditunjukkan di bawah: npm install cohere-ai
<code>// 輸出將列出紅色的漿果</code>output:
import { ChatOpenAI } from "langchain/chat_models/openai"; import { PromptTemplate } from "langchain/prompts"; const chat = new ChatOpenAI({ openAIApiKey: "YOUR_OPENAI_KEY", model: "gpt-3.5-turbo", temperature: 0 }); const prompt = PromptTemplate.fromTemplate(`你是一個詩意的助手,總是用押韻來回答:{question}`); const runnable = prompt.pipe(chat); const response = await runnable.invoke({ question: "誰更好,德約科維奇、費德勒還是納達爾?" }); console.log(response);
Kesimpulan:
Dalam panduan ini, anda telah melihat pelbagai aspek dan fungsi Langchain dalam JavaScript. Anda boleh dengan mudah membangunkan aplikasi web berkuasa AI di JavaScript menggunakan Langchain dan bereksperimen dengan LLM. Pastikan anda merujuk kepada dokumentasi Langchainjs untuk maklumat lanjut mengenai ciri -ciri tertentu.Saya doakan anda gembira dengan pengekodan dan bereksperimen dengan Langchain di JavaScript! Jika anda suka artikel ini, anda juga mungkin ingin membaca artikel tentang menggunakan Langchain dengan Python.
Atas ialah kandungan terperinci Panduan Lengkap untuk Langchain di JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Mekanisme pengumpulan sampah JavaScript secara automatik menguruskan memori melalui algoritma pembersihan tag untuk mengurangkan risiko kebocoran ingatan. Enjin melintasi dan menandakan objek aktif dari objek akar, dan tidak bertanda dianggap sebagai sampah dan dibersihkan. Sebagai contoh, apabila objek tidak lagi dirujuk (seperti menetapkan pembolehubah kepada null), ia akan dikeluarkan dalam pusingan seterusnya kitar semula. Punca kebocoran memori yang biasa termasuk: ① Pemasa atau pendengar peristiwa yang tidak jelas; ② Rujukan kepada pembolehubah luaran dalam penutupan; ③ Pembolehubah global terus memegang sejumlah besar data. Enjin V8 mengoptimumkan kecekapan kitar semula melalui strategi seperti kitar semula generasi, penandaan tambahan, kitar semula selari/serentak, dan mengurangkan masa menyekat benang utama. Semasa pembangunan, rujukan global yang tidak perlu harus dielakkan dan persatuan objek harus dihiasi dengan segera untuk meningkatkan prestasi dan kestabilan.

Terdapat tiga cara biasa untuk memulakan permintaan HTTP dalam node.js: Gunakan modul terbina dalam, axios, dan nod-fetch. 1. Gunakan modul HTTP/HTTPS terbina dalam tanpa kebergantungan, yang sesuai untuk senario asas, tetapi memerlukan pemprosesan manual jahitan data dan pemantauan ralat, seperti menggunakan https.get () untuk mendapatkan data atau menghantar permintaan pos melalui .write (); 2.AXIOS adalah perpustakaan pihak ketiga berdasarkan janji. Ia mempunyai sintaks ringkas dan fungsi yang kuat, menyokong async/menunggu, penukaran JSON automatik, pemintas, dan lain -lain. Adalah disyorkan untuk memudahkan operasi permintaan tak segerak; 3.Node-Fetch menyediakan gaya yang serupa dengan pengambilan penyemak imbas, berdasarkan janji dan sintaks mudah

Jenis data JavaScript dibahagikan kepada jenis primitif dan jenis rujukan. Jenis primitif termasuk rentetan, nombor, boolean, null, undefined, dan simbol. Nilai -nilai tidak berubah dan salinan disalin apabila memberikan nilai, jadi mereka tidak mempengaruhi satu sama lain; Jenis rujukan seperti objek, tatasusunan dan fungsi menyimpan alamat memori, dan pembolehubah menunjuk objek yang sama akan mempengaruhi satu sama lain. Typeof dan Instanceof boleh digunakan untuk menentukan jenis, tetapi memberi perhatian kepada isu -isu sejarah TypeOfNull. Memahami kedua -dua jenis perbezaan ini dapat membantu menulis kod yang lebih stabil dan boleh dipercayai.

Rangka kerja JavaScript mana yang terbaik? Jawapannya ialah memilih yang paling sesuai mengikut keperluan anda. 1. REACT adalah fleksibel dan bebas, sesuai untuk projek sederhana dan besar yang memerlukan penyesuaian tinggi dan keupayaan seni bina pasukan; 2. Angular menyediakan penyelesaian lengkap, sesuai untuk aplikasi peringkat perusahaan dan penyelenggaraan jangka panjang; 3. Vue mudah digunakan, sesuai untuk projek kecil dan sederhana atau perkembangan pesat. Di samping itu, sama ada terdapat timbunan teknologi sedia ada, saiz pasukan, kitaran hayat projek dan sama ada SSR diperlukan juga faktor penting dalam memilih rangka kerja. Singkatnya, tidak ada kerangka terbaik, pilihan terbaik adalah yang sesuai dengan keperluan anda.

Helo, pemaju JavaScript! Selamat datang ke berita JavaScript minggu ini! Minggu ini kami akan memberi tumpuan kepada: Pertikaian tanda dagangan Oracle dengan Deno, objek masa JavaScript baru disokong oleh pelayar, kemas kini Google Chrome, dan beberapa alat pemaju yang kuat. Mari mulakan! Pertikaian tanda dagangan Oracle dengan percubaan Deno Oracle untuk mendaftarkan tanda dagangan "JavaScript" telah menyebabkan kontroversi. Ryan Dahl, pencipta Node.js dan Deno, telah memfailkan petisyen untuk membatalkan tanda dagangan, dan dia percaya bahawa JavaScript adalah standard terbuka dan tidak boleh digunakan oleh Oracle

IIFE (Segera Dilanjutkan FunctionExpression) adalah ekspresi fungsi yang dilaksanakan dengan segera selepas definisi, digunakan untuk mengasingkan pembolehubah dan mengelakkan mencemarkan skop global. Ia dipanggil dengan membungkus fungsi dalam kurungan untuk menjadikannya ungkapan dan sepasang kurungan segera diikuti olehnya, seperti (fungsi () {/code/}) ();. Penggunaan terasnya termasuk: 1. Elakkan konflik berubah -ubah dan mencegah pertindihan penamaan antara skrip berganda; 2. Buat skop peribadi untuk menjadikan pembolehubah dalaman tidak kelihatan; 3. Kod modular untuk memudahkan permulaan tanpa mendedahkan terlalu banyak pembolehubah. Kaedah penulisan biasa termasuk versi yang diluluskan dengan parameter dan versi fungsi anak panah ES6, tetapi perhatikan bahawa ungkapan dan ikatan mesti digunakan.

Janji adalah mekanisme teras untuk mengendalikan operasi tak segerak dalam JavaScript. Memahami panggilan rantaian, pengendalian ralat dan gabungan adalah kunci untuk menguasai aplikasi mereka. 1. Panggilan rantai mengembalikan janji baru melalui .then () untuk merealisasikan persamaan proses tak segerak. Setiap .then () menerima hasil sebelumnya dan boleh mengembalikan nilai atau janji; 2. Pengendalian ralat harus menggunakan .catch () untuk menangkap pengecualian untuk mengelakkan kegagalan senyap, dan boleh mengembalikan nilai lalai dalam tangkapan untuk meneruskan proses; 3. Gabungan seperti janji.all () (berjaya hanya berjaya selepas semua kejayaan), janji.race () (penyempurnaan pertama dikembalikan) dan janji.allsettled () (menunggu semua penyelesaian)

CACHEAPI adalah alat yang disediakan oleh penyemak imbas kepada permintaan rangkaian cache, yang sering digunakan bersempena dengan ServiceWorker untuk meningkatkan prestasi laman web dan pengalaman luar talian. 1. Ia membolehkan pemaju menyimpan sumber secara manual seperti skrip, helaian gaya, gambar, dan lain -lain; 2. Ia boleh memadankan tindak balas cache mengikut permintaan; 3. Ia menyokong memotong cache tertentu atau membersihkan seluruh cache; 4. Ia boleh melaksanakan keutamaan cache atau strategi keutamaan rangkaian melalui perkhidmatan pekerja yang mendengar acara mengambil; 5. Ia sering digunakan untuk sokongan luar talian, mempercepat kelajuan akses berulang, sumber utama dan kandungan kemas kini latar belakang; 6. Apabila menggunakannya, anda perlu memberi perhatian kepada kawalan versi cache, sekatan penyimpanan dan perbezaan dari mekanisme caching HTTP.
