Semantic Router-это сверхбыстрый слой принятия решений для ваших LLMS и агентов. Вместо того, чтобы ждать, пока медленные поколения LLM принимают решения об использовании инструментов, мы используем магию семантического векторного пространства для принятия этих решений- маршрутирование наших запросов с помощью семантического значения.
Чтобы начать работу с семантической маркировкой, мы устанавливаем его так:
pip install -qU semantic-router
❗ Если желать использовать полностью локальную версию семантического маршрутизатора, вы можете использовать HuggingFaceEncoder и LlamaCppLLM ( pip install -qU "semantic-router[local]" , см. Здесь). Чтобы использовать HybridRouteLayer , вы должны pip install -qU "semantic-router[hybrid]" .
Мы начинаем с определения набора объектов Route . Это пути решений, которые семантический маршрутизатор может принять решение использовать, давайте пока попробуем два простых маршрута - один для разговоров о политике , а другой - для 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 ] У нас готовы наши маршруты, теперь мы инициализируем модель встраивания / энкодера. В настоящее время мы поддерживаем CohereEncoder и OpenAIEncoder - в ближайшее время будет добавлено больше кодеров. Чтобы инициализировать их мы делаем:
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 () С нашими routes и определением encoder мы теперь создаем RouteLayer . Слой маршрута обрабатывает наше семантическое принятие решений.
from semantic_router . layer import RouteLayer
rl = RouteLayer ( encoder = encoder , routes = routes )Теперь мы можем использовать наш уровень маршрута для принятия супер быстрых решений на основе запросов пользователей. Давайте попробуем с двумя вопросами, которые должны вызвать решения наших маршрутов:
rl ( "don't you love politics?" ). name [Out]: 'politics'
Правильное решение, давайте попробуем другое:
rl ( "how's the weather today?" ). name [Out]: 'chitchat'
Мы получаем оба решения правильных! Теперь давайте попробуем отправить не связанный запрос:
rl ( "I'm interested in learning about llama 2" ). name [Out]:
В этом случае не было принято никакого решения, поскольку у нас не было совпадений - поэтому наш уровень маршрута не вернул None !
Кодеры семантического маршрутизатора включают в себя простую в использовании интеграции с Cohere, OpenAI, обнимающееся лицо, Fastembed и многое другое-мы даже поддерживаем многомодальность!.
Наше векторное пространство высказывания также интегрируется с Pinecone и Qdrant!
| Блокнот | Описание |
|---|---|
| Введение | Введение в семантический маршрутизатор и статические маршруты |
| Динамические маршруты | Динамические маршруты для генерации параметров и вызовов функций |
| Сохранить/загружать слои | Как сохранить и загрузить RouteLayer из файла |
| Интеграция Langchain | Как интегрировать семантический маршрутизатор с агентами Langchain |
| Местное исполнение | Полностью локальный семантический маршрутизатор с динамическими маршрутами- местные модели, такие как Mistral 7B, превосходят GPT-3.5 в большинстве тестов |
| Оптимизация маршрута | Как тренировать пороги слоя маршрута для оптимизации производительности |
| Многомодальные маршруты | Использование мультимодальных маршрутов для идентификации Шрека против неприкоренных изображений |

ollama / gemma2:9b горячая линия