LLM Adaptive Router ist ein Python -Paket, das dynamische Modellauswahl basierend auf Abfrageinhalten ermöglicht. Es verwendet eine effiziente Vektor-Suche nach anfänglicher Kategorisierung und LLM-basierter feinkörniger Auswahl für komplexe Fälle. Der Router kann sich aus Feedback anpassen und lernen, was es für eine Vielzahl von Anwendungen geeignet ist.
Sie können LLM Adaptive Router mit PIP installieren:
pip3 install llm-adaptive-routerHier ist ein grundlegendes Beispiel für die Verwendung von LLM Adaptive Router:
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 } " ) Verwenden Sie die Funktion create_route_metadata , um Routen zu definieren:
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" }
) Erstellen Sie eine Instanz von AdaptiveRouter mit Ihren konfigurierten Routen:
router = AdaptiveRouter (
vectorstore = your_vectorstore ,
llm = your_llm ,
embeddings = your_embeddings ,
routes = your_routes
) Verwenden Sie die route , um das entsprechende Modell für eine Abfrage auszuwählen:
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" )Verbessern Sie die Leistung des Routers, indem Sie Feedback geben:
router . add_feedback ( query , selected_model , performance_score )VectorStore -Schnittstelle von Langchain implementiert. router . add_route ( "new_route" , new_route_metadata )
router . remove_route ( "old_route" ) router . set_complexity_threshold ( 0.8 )
router . set_update_frequency ( 200 )