> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-docs-1917.mintlify.site/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.

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

Assurez-vous d’avoir [créé un compte][account] et [généré 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-docs-1917/-cTWVH_3DwFkzNNv/weave/guides/integrations/imgs/notdiamond/api-keys.png?fit=max&auto=format&n=-cTWVH_3DwFkzNNv&q=85&s=f494d5ce00ca294c3e2170a45c07c7a8" 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

* essayer le \[guide de démarrage rapide],
* [créer un routeur personnalisé][custom router] avec W\&B Weave et Not Diamond, ou
* [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].
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 :

```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>

Vous pouvez également entraîner votre propre \[routeur personnalisé] à partir d’[Évaluations][evals], 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é :

```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,
)
```

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 :

```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-nous 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
