El enrutador semántico es una capa de toma de decisiones súper rápida para sus LLM y agentes. En lugar de esperar a que las generaciones de LLM lentas tomen decisiones de uso de herramientas, utilizamos la magia del espacio vectorial semántico para tomar esas decisiones, enrutando nuestras solicitudes utilizando el significado semántico .
Para comenzar con el enrutador semántico lo instalamos así:
pip install -qU semantic-router
❗️ Si desea usar una versión totalmente local del enrutador semántico, puede usar HuggingFaceEncoder y LlamaCppLLM ( pip install -qU "semantic-router[local]" , ver aquí). Para usar el HybridRouteLayer , debe pip install -qU "semantic-router[hybrid]" .
Comenzamos definiendo un conjunto de objetos Route . Estos son los caminos de decisión que el enrutador semántico puede decidir usar, intentemos dos rutas simples por ahora, una para hablar sobre política y otra para Chitchat :
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 ] Tenemos nuestras rutas listas, ahora inicializamos un modelo de incrustación / codificador. Actualmente apoyamos un CohereEncoder y OpenAIEncoder ; pronto se agregarán más codificadores. Para inicializarlos lo hacemos:
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 () Con nuestras routes y encoder definidos, ahora creamos un RouteLayer . La capa de ruta maneja nuestra toma de decisiones semánticas.
from semantic_router . layer import RouteLayer
rl = RouteLayer ( encoder = encoder , routes = routes )Ahora podemos usar nuestra capa de ruta para tomar decisiones súper rápidas basadas en consultas de usuarios. Intentemos con dos consultas que deberían activar nuestras decisiones de ruta:
rl ( "don't you love politics?" ). name [Out]: 'politics'
Decisión correcta, intentemos otra:
rl ( "how's the weather today?" ). name [Out]: 'chitchat'
¡Tenemos ambas decisiones correctas! Ahora intentemos enviar una consulta no relacionada:
rl ( "I'm interested in learning about llama 2" ). name [Out]:
En este caso, no se pudo tomar una decisión, ya que no tuvimos coincidencias, por lo que nuestra capa de ruta no devolvió None .
Los codificadores del enrutador semántico incluyen integraciones fáciles de usar con Cohere, OpenAi, abrazando la cara, la comida rápida y más, ¡incluso apoyamos la multimodalidad!
¡Nuestro espacio vectorial enunciado también se integra con Pinecone y Qdrant!
| Computadora portátil | Descripción |
|---|---|
| Introducción | Introducción al enrutador semántico y las rutas estáticas |
| Rutas dinámicas | Rutas dinámicas para las llamadas de generación de parámetros y funciones |
| Guardar/cargar capas | Cómo guardar y cargar RouteLayer desde el archivo |
| Integración de Langchain | Cómo integrar el enrutador semántico con los agentes de Langchain |
| Ejecución local | Enrutador semántico totalmente local con rutas dinámicas: modelos locales como Mistral 7B superan a GPT-3.5 en la mayoría de las pruebas |
| Optimización de ruta | Cómo entrenar los umbrales de la capa de ruta para optimizar el rendimiento |
| Rutas multimodales | Uso de rutas multimodales para identificar fotos de Shrek vs. Not-Shrek |

ollama / gemma2:9b Línea directa