Semantic Router 是一个为你的大语言模型(LLM)和智能体打造的极速决策层。它利用语义向量空间的魔力来做出决策,而无需等待缓慢的 LLM 生成过程,从而根据语义含义来路由请求。
要开始使用 semantic-router,请按如下方式安装:
pip install -qU semantic-router
❗️ 如果想使用完全本地版本的 semantic router,可以使用 HuggingFaceEncoder 和 LlamaCppLLM (pip install -qU "semantic-router[local]",详见此处)。要使用 HybridRouteLayer,必须执行 pip install -qU "semantic-router[hybrid]"。
我们首先定义一组 Route 对象。这些是语义路由器可以决定使用的决策路径。我们先尝试两个简单的路由:一个用于讨论政治,另一个用于闲聊:
from semantic_router import Route
# 我们可以用它来引导聊天机器人避开政治话题
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!",
],
)
# 这可以作为一个信号,指示聊天机器人切换到更对话式的提示
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",
],
)
# 我们将两个决策路径放入一个列表中
routes = [politics, chitchat]
路由准备就绪后,我们初始化一个嵌入/编码器模型。目前我们支持 CohereEncoder 和 OpenAIEncoder —— 更多编码器即将推出。初始化方法如下:
import os
from semantic_router.encoders import CohereEncoder, OpenAIEncoder
# 使用 Cohere
os.environ["COHERE_API_KEY"] = "<YOUR_API_KEY>"
encoder = CohereEncoder()
# 或使用 OpenAI
os.environ["OPENAI_API_KEY"] = "<YOUR_API_KEY>"
encoder = OpenAIEncoder()
定义好 routes 和 encoder 后,我们创建一个 RouteLayer。路由层负责处理语义决策。
from semantic_router.routers import SemanticRouter
rl = SemanticRouter(encoder=encoder, routes=routes, auto_sync="local")
现在,我们可以使用路由层根据用户查询做出极速决策。让我们用两个应该触发路由决策的查询来试试:
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!
Semantic Router 的编码器包含与 Cohere、OpenAI、Hugging Face、FastEmbed 等的易用集成 —— 我们甚至支持多模态!
我们的语义向量空间还与 Pinecone 和 Qdrant 集成!
| 笔记本 | 描述 |
|---|---|
| 简介 | Semantic Router 和静态路由介绍 |
| 动态路由 | 用于参数生成和函数调用的动态路由 |
| 保存/加载路由层 | 如何从文件保存和加载 RouteLayer |
| LangChain 集成 | 如何将 Semantic Router 与 LangChain Agents 集成 |
| 本地执行 | 具有动态路由的完全本地化 Semantic Router —— 在大多数测试中,Mistral 7B 等本地模型的表现优于 GPT-3.5 |
| 路由优化 | 如何训练路由层阈值以优化性能 |
| 多模态路由 | 使用多模态路由识别史莱克与非史莱克图片 |
ollama/ gemma2:9b hotline