Semantic Router adalah lapisan pengambilan keputusan yang sangat cepat untuk LLM dan agen Anda. Daripada menunggu generasi LLM yang lambat untuk membuat keputusan penggunaan alat, kami menggunakan keajaiban ruang vektor semantik untuk membuat keputusan tersebut- merutekan permintaan kami menggunakan makna semantik .
Untuk memulai dengan semantic-router kami menginstalnya seperti itu:
pip install -qU semantic-router
❗️ Jika ingin menggunakan versi router semantik yang sepenuhnya lokal, Anda dapat menggunakan HuggingFaceEncoder dan LlamaCppLLM ( pip install -qU "semantic-router[local]" , lihat di sini). Untuk menggunakan HybridRouteLayer , Anda harus pip install -qU "semantic-router[hybrid]" .
Kami mulai dengan mendefinisikan satu set objek Route . Ini adalah jalur keputusan yang dapat diputuskan oleh router semantik untuk digunakan, mari kita coba dua rute sederhana untuk saat ini - satu untuk berbicara tentang politik dan satu lagi untuk obrolan :
from semantic_router import Route
# we could use this as a guide for our chatbot to avoid political conversations
politics = Route (
name = "politics" ,
utterances = [
"isn't politics the best thing ever" ,
"why don't you tell me about your political opinions" ,
"don't you just love the president" ,
"they're going to destroy this country!" ,
"they will save the country!" ,
],
)
# this could be used as an indicator to our chatbot to switch to a more
# conversational prompt
chitchat = Route (
name = "chitchat" ,
utterances = [
"how's the weather today?" ,
"how are things going?" ,
"lovely weather today" ,
"the weather is horrendous" ,
"let's go to the chippy" ,
],
)
# we place both of our decisions together into single list
routes = [ politics , chitchat ] Kami memiliki rute kami siap, sekarang kami menginisialisasi model embedding / encoder. Kami saat ini mendukung CohereEncoder dan OpenAIEncoder - lebih banyak encoder akan segera ditambahkan. Untuk menginisialisasi mereka, kami lakukan:
import os
from semantic_router . encoders import CohereEncoder , OpenAIEncoder
# for Cohere
os . environ [ "COHERE_API_KEY" ] = "<YOUR_API_KEY>"
encoder = CohereEncoder ()
# or for OpenAI
os . environ [ "OPENAI_API_KEY" ] = "<YOUR_API_KEY>"
encoder = OpenAIEncoder () Dengan routes dan encoder kami yang didefinisikan, kami sekarang membuat RouteLayer . Lapisan rute menangani pengambilan keputusan semantik kami.
from semantic_router . layer import RouteLayer
rl = RouteLayer ( encoder = encoder , routes = routes )Kami sekarang dapat menggunakan lapisan rute kami untuk membuat keputusan super cepat berdasarkan kueri pengguna. Mari kita coba dengan dua pertanyaan yang seharusnya memicu keputusan rute kita:
rl ( "don't you love politics?" ). name [Out]: 'politics'
Keputusan yang benar, mari kita coba yang lain:
rl ( "how's the weather today?" ). name [Out]: 'chitchat'
Kami mendapatkan kedua keputusan yang benar! Sekarang mari kita coba kirim kueri yang tidak terkait:
rl ( "I'm interested in learning about llama 2" ). name [Out]:
Dalam hal ini, tidak ada keputusan yang bisa dibuat karena kami tidak memiliki kecocokan - jadi lapisan rute kami tidak mengembalikan None !
Encoders of Semantic router mencakup integrasi yang mudah digunakan dengan cohere, openai, memeluk wajah, fastembed, dan banyak lagi-kami bahkan mendukung multi-modalitas!.
Ruang vektor ucapan kami juga terintegrasi dengan pinecone dan qdrant!
| Buku catatan | Keterangan |
|---|---|
| Perkenalan | Pengantar router semantik dan rute statis |
| Rute dinamis | Rute dinamis untuk pembuatan parameter dan panggilan fungsi |
| Simpan/memuat lapisan | Cara menyimpan dan memuat RouteLayer dari file |
| Integrasi Langchain | Cara mengintegrasikan router semantik dengan agen langchain |
| Eksekusi lokal | Router semantik lokal sepenuhnya dengan rute dinamis- model lokal seperti Mistral 7B mengungguli GPT-3.5 di sebagian besar tes |
| Optimalisasi rute | Cara melatih ambang batas lapisan rute untuk mengoptimalkan kinerja |
| Rute multi-modal | Menggunakan rute multi-modal untuk mengidentifikasi gambar Shrek vs Not-Shrek |

ollama / gemma2:9b hotline