Skip to main content
Lors de la création de flux de travail LLM complexes, vous pouvez avoir besoin de solliciter différents modèles selon la précision, le coût ou la latence des appels. Vous pouvez utiliser Not Diamond pour acheminer les prompts dans ces flux de travail vers le modèle le plus adapté à vos besoins, afin de maximiser la précision tout en réduisant les coûts liés aux modèles.

Premiers pas

Assurez-vous d’avoir créé un compte et généré une clé API, puis ajoutez votre clé API à vos variables d’environnement sous le nom NOTDIAMOND_API_KEY. Créer une clé API À partir de là, vous pouvez

Tracing

Weave s’intègre à la bibliothèque Python de Not Diamond pour journaliser automatiquement les appels d’API. Il vous suffit d’exécuter weave.init() au début de votre flux de travail, puis de continuer à utiliser le fournisseur avec routage comme d’habitude :
from notdiamond import NotDiamond

import weave
weave.init('notdiamond-quickstart')

client = NotDiamond()
session_id, provider = client.chat.completions.model_select(
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Concisely explain merge sort."}
    ],
    model=['openai/gpt-4o', 'anthropic/claude-3-5-sonnet-20240620']
)

print("LLM called: ", provider.provider)  # openai, anthropic, etc
print("Provider model: ", provider.model) # gpt-4o, claude-3-5-sonnet-20240620, etc

Routage personnalisé

Vous pouvez également entraîner votre propre [routeur personnalisé] à partir d’Évaluations, afin de permettre à Not Diamond d’acheminer les prompts en fonction des performances obtenues lors des évaluations pour des cas d’usage spécialisés. Commencez par entraîner un routeur personnalisé :
from weave.flow.eval import EvaluationResults
from weave.integrations.notdiamond.custom_router import train_router

# Créer une Évaluation sur gpt-4o et Claude 3.5 Sonnet
evaluation = weave.Evaluation(...)
gpt_4o = weave.Model(...)
sonnet = weave.Model(...)

model_evals = {
    'openai/gpt-4o': evaluation.get_eval_results(gpt_4o),
    'anthropic/claude-3-5-sonnet-20240620': evaluation.get_eval_results(sonnet),
}
preference_id = train_router(
    model_evals=model_evals,
    prompt_column="prompt",
    response_column="actual",
    language="en",
    maximize=True,
)
En réutilisant cet ID de préférence dans n’importe quelle requête model_select, vous pouvez acheminer vos prompts afin de maximiser les performances et de minimiser le coût sur vos données d’évaluation :
from notdiamond import NotDiamond
client = NotDiamond()

import weave
weave.init('notdiamond-quickstart')

session_id, provider = client.chat.completions.model_select(
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Concisely explain merge sort."}
    ],
    model=['openai/gpt-4o', 'anthropic/claude-3-5-sonnet-20240620'],

    # passer cet ID de préférence réutilise votre routeur personnalisé
    preference_id=preference_id
)

print("LLM called: ", provider.provider)  # openai, anthropic, etc
print("Provider model: ", provider.model) # gpt-4o, claude-3-5-sonnet-20240620, etc

Assistance complémentaire

Consultez la docs ou envoyez-nous un message si vous avez besoin d’une aide supplémentaire.