> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wandb.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Not Diamond ¬◇

> Utilisez Not Diamond pour acheminer les prompts vers le modèle le plus adapté à vos besoins, tout en maximisant la précision et en réduisant les coûts

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][nd] 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.

Ce guide vous montre comment intégrer Not Diamond à W\&B Weave afin que Weave trace automatiquement les appels de modèle
acheminés, et comment entraîner un routeur personnalisé à l'aide de Weave Evaluations pour acheminer les prompts en fonction
de vos propres données de performances.

<div id="get-started">
  ## Premiers pas
</div>

Pour utiliser Not Diamond avec Weave, vous devez disposer d’un compte Not Diamond et d’une clé API. [Créez un
compte][account] et [générez une clé API][keys], puis ajoutez votre clé API
à vos variables d’environnement sous le nom `NOTDIAMOND_API_KEY`.

<img src="https://mintcdn.com/wb-21fd5541/S0cRiDzxeODX77LU/weave/guides/integrations/imgs/notdiamond/api-keys.png?fit=max&auto=format&n=S0cRiDzxeODX77LU&q=85&s=74a45e52c932eaff2094855c07831f0d" alt="Créer une clé API" width="3454" height="1912" data-path="weave/guides/integrations/imgs/notdiamond/api-keys.png" />

À partir de là, vous pouvez effectuer l’une des actions suivantes :

* essayer le \[guide de démarrage rapide].
* [créer un routeur personnalisé][custom router] avec Weave et Not Diamond.
* [discuter avec Not Diamond][chat] pour voir le routage à l’œuvre.

<div id="tracing">
  ## Tracing
</div>

Weave s’intègre à [la bibliothèque Python de Not Diamond][python] pour [journaliser automatiquement les appels d’API][ops],
afin que vous puissiez inspecter les décisions de routage et les réponses des fournisseurs avec le reste de vos traces Weave.
Exécutez `weave.init()` au début de votre flux de travail, puis continuez à utiliser le fournisseur
sélectionné par le routeur comme d’habitude :

```python lines theme={null}
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.
```

<div id="custom-routing">
  ## Routage personnalisé
</div>

Pour des cas d’usage spécialisés, vous pouvez entraîner votre propre \[routeur personnalisé] à partir d’[Évaluations][evals], ce qui permet à
Not Diamond d’acheminer les prompts selon les performances des évaluations plutôt que selon la stratégie de routage par défaut.

Commencez par entraîner un routeur personnalisé. L’appel `train_router` renvoie un `preference_id` qui identifie
votre routeur entraîné pour une utilisation ultérieure :

```python lines theme={null}
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,
)
```

Lorsque vous transmettez cet ID de préférence à une requête `model_select`, vous pouvez réutiliser votre routeur personnalisé pour
acheminer les prompts de façon à maximiser les performances et à minimiser les coûts sur vos données d’évaluation :

```python lines theme={null}
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.
```

<div id="additional-support">
  ## Assistance complémentaire
</div>

Consultez la [docs] ou [envoyez un message][support] si vous avez besoin d'une aide supplémentaire.

[account]: https://app.notdiamond.ai

[chat]: https://chat.notdiamond.ai

[custom router]: https://docs.notdiamond.ai/docs/router-training-quickstart

[docs]: https://docs.notdiamond.ai

[evals]: /weave/guides/core-types/evaluations

[keys]: https://app.notdiamond.ai/keys

[nd]: https://www.notdiamond.ai/

[ops]: /weave/guides/tracking/ops

[python]: https://github.com/Not-Diamond/notdiamond-python

[quickstart guide]: https://docs.notdiamond.ai/docs/quickstart-routing

[support]: mailto:support@notdiamond.ai
