LLM Adaptive Router est un package Python qui permet une sélection de modèle dynamique basée sur le contenu de requête. Il utilise une recherche de vecteur efficace pour la catégorisation initiale et la sélection à grains fins basés sur LLM pour les cas complexes. Le routeur peut s'adapter et apprendre des commentaires, ce qui le rend adapté à un large éventail d'applications.
Vous pouvez installer le routeur adaptatif LLM à l'aide de PIP:
pip3 install llm-adaptive-routerVoici un exemple de base de la façon d'utiliser le routeur adaptatif LLM:
from llm_adaptive_router import AdaptiveRouter , RouteMetadata
from langchain_chroma import Chroma
from langchain_openai import OpenAIEmbeddings , ChatOpenAI
from dotenv import load_dotenv
load_dotenv ()
gpt_3_5_turbo = ChatOpenAI ( model = "gpt-3.5-turbo" )
mini = ChatOpenAI ( model = "gpt-4o-mini" )
gpt_4 = ChatOpenAI ( model = "gpt-4" )
routes = {
"general" : RouteMetadata (
invoker = gpt_3_5_turbo ,
capabilities = [ "general knowledge" ],
cost = 0.002 ,
example_sentences = [ "What is the capital of France?" , "Explain photosynthesis." ]
),
"mini" : RouteMetadata (
invoker = mini ,
capabilities = [ "general knowledge" ],
cost = 0.002 ,
example_sentences = [ "What is the capital of France?" , "Explain photosynthesis." ]
),
"math" : RouteMetadata (
invoker = gpt_4 ,
capabilities = [ "advanced math" , "problem solving" ],
cost = 0.01 ,
example_sentences = [ "Solve this differential equation." , "Prove the Pythagorean theorem." ]
)
}
llm = ChatOpenAI ( model = "gpt-3.5-turbo" )
router = AdaptiveRouter (
vectorstore = Chroma ( embedding_function = OpenAIEmbeddings ()),
llm = llm ,
embeddings = OpenAIEmbeddings (),
routes = routes
)
query = "How are you"
query2 = "Write a Python function to hello world"
selected_model_route = router . route ( query )
selected_model_name = selected_model_route
print ( selected_model_name )
invoker = selected_model_route . invoker
response = invoker . invoke ( query )
print ( f"Response: { response } " ) Utilisez la fonction create_route_metadata pour définir les routes:
from llm_adaptive_router import create_route_metadata
route = create_route_metadata (
invoker = model_function ,
capabilities = [ "capability1" , "capability2" ],
cost = 0.01 ,
example_sentences = [ "Example query 1" , "Example query 2" ],
additional_info = { "key" : "value" }
) Créez une instance d' AdaptiveRouter avec vos itinéraires configurés:
router = AdaptiveRouter (
vectorstore = your_vectorstore ,
llm = your_llm ,
embeddings = your_embeddings ,
routes = your_routes
) Utilisez la méthode route pour sélectionner le modèle approprié pour une requête:
selected_model_route = router . route ( "Your query here" )
selected_model_name = selected_model_route . model
invoker = selected_model_route . invoker
response = invoker . invoke ( "Your query here" )Améliorez les performances du routeur en fournissant des commentaires:
router . add_feedback ( query , selected_model , performance_score )VectorStore de Langchain. router . add_route ( "new_route" , new_route_metadata )
router . remove_route ( "old_route" ) router . set_complexity_threshold ( 0.8 )
router . set_update_frequency ( 200 )