Semantischer Router ist eine superschnelle Entscheidungsschicht für Ihre LLMs und Agenten. Anstatt auf langsame LLM-Generationen zu warten, um Entscheidungen zu verwenden, nutzen wir die Magie des semantischen Vektorraums, um diese Entscheidungen zu treffen-um unsere Anfragen mit semantischer Bedeutung zu leiten .
Um mit Semantic-Router zu beginnen, installieren wir es so:
pip install -qU semantic-router
❗️ Wenn Sie eine vollständig lokale Version des semantischen Routers verwenden möchten, können Sie HuggingFaceEncoder und LlamaCppLLM verwenden ( pip install -qU "semantic-router[local]" , siehe hier). Um den HybridRouteLayer zu verwenden, müssen Sie pip install -qU "semantic-router[hybrid]" .
Wir beginnen zunächst eine Reihe von Route . Dies sind die Entscheidungspfade , die der semantische Router verwenden kann .
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 ] Wir haben unsere Routen bereit, jetzt initialisieren wir ein Einbettung / Encoder -Modell. Derzeit unterstützen wir einen CohereEncoder und OpenAIEncoder - bald werden weitere Encoder hinzugefügt. Um sie zu initialisieren, tun wir:
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 () Wenn unsere routes und encoder definiert sind, erstellen wir jetzt einen RouteLayer . Die Routenschicht behandelt unsere semantische Entscheidungsfindung.
from semantic_router . layer import RouteLayer
rl = RouteLayer ( encoder = encoder , routes = routes )Wir können jetzt unsere Routenebene verwenden, um superschnelle Entscheidungen auf der Grundlage von Benutzeranfragen zu treffen. Versuchen wir es mit zwei Abfragen, die unsere Routenentscheidungen auslösen sollten:
rl ( "don't you love politics?" ). name [Out]: 'politics'
Richtige Entscheidung, versuchen wir es mit einem anderen:
rl ( "how's the weather today?" ). name [Out]: 'chitchat'
Wir bekommen beide Entscheidungen korrekt! Versuchen wir nun, eine nicht verwandte Abfrage zu senden:
rl ( "I'm interested in learning about llama 2" ). name [Out]:
In diesem Fall konnte keine Entscheidung getroffen werden, da wir keine Übereinstimmungen hatten - also gab unsere Routenschicht None zurück!
Zu den Encodern des semantischen Routers gehören einfach zu verwendende Integrationen mit Cohere, Openai, umarmendem Gesicht, Fastembed und mehr-wir unterstützen sogar Multi-Modalität!.
Unser Äußerungsvektorraum integriert sich auch in Tinecone und Qdrant!
| Notizbuch | Beschreibung |
|---|---|
| Einführung | Einführung in semantische Router und statische Routen |
| Dynamische Routen | Dynamische Routen für Parametergenerierung und Funktionsaufrufe |
| Schichten speichern/laden | So speichern und laden Sie RouteLayer aus der Datei |
| Langchain -Integration | So integrieren Sie semantische Router in Langchain -Agenten |
| Lokale Ausführung | Voll lokaler semantischer Router mit dynamischen Routen- lokale Modelle wie Mistral 7B übertreffen GPT-3,5 in den meisten Tests |
| Routenoptimierung | So trainieren Sie die Schwellenwerte der Routenschicht, um die Leistung zu optimieren |
| Multimodale Routen | Verwenden von multimodalen Routen zur Identifizierung von Shrek vs. nicht Shrek-Bildern |

ollama / gemma2:9b Hotline