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

# weave

> Référence du SDK Python pour weave

export const SourceLink = ({url}) => <a href={url} target="_blank" rel="noopener noreferrer" className="source-link">
    Source
  </a>;

<h1 id="api-overview">
  Aperçu de l’API
</h1>

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/agent/agent.py#L17" />

<h2 id="class-agent">
  <kbd>classe</kbd> `Agent`
</h2>

**Champs Pydantic :**

* `name`: `str | None`
* `description`: `str | None`
* `ref`: `trace.refs.ObjectRef | None`
* `model_name`: `<class 'str'>`
* `temperature`: `<class 'float'>`
* `system_message`: `<class 'str'>`
* `tools`: `list[typing.Any]`

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/op.py#L23" />

<h3 id="method-step">
  <kbd>méthode</kbd> `step`
</h3>

```python theme={"system"}
step(state: AgentState) → AgentState
```

Exécute une étape de l’agent.

**Arguments :**

* <b>`state`</b> : l’état actuel de l’environnement.
* <b>`action`</b> : l’action à effectuer.
  **Retourne :**
  Le nouvel état de l’environnement.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/agent/agent.py#L12" />

<h2 id="class-agentstate">
  <kbd>classe</kbd> `AgentState`
</h2>

**Champs Pydantic :**

* `name` : `str | None`
* `description` : `str | None`
* `ref` : `trace.refs.ObjectRef | None`
* `history` : `list[typing.Any]`

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace_server/interface/builtin_object_classes/annotation_spec.py#L11" />

<h2 id="class-annotationspec">
  <kbd>classe</kbd> `AnnotationSpec`
</h2>

**Champs Pydantic :**

* `name` : `str | None`
* `description` : `str | None`
* `field_schema` : `dict[str, typing.Any]`
* `unique_among_creators` : `<class 'bool'>`
* `op_scope` : `list[str] | None`

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace_server/interface/builtin_object_classes/annotation_spec.py#L46" />

<h3 id="classmethod-preprocess_field_schema">
  <kbd>classmethod</kbd> `preprocess_field_schema`
</h3>

```python theme={"system"}
preprocess_field_schema(data: Any) → Any
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace_server/interface/builtin_object_classes/annotation_spec.py#L93" />

<h3 id="classmethod-validate_field_schema">
  <kbd>classmethod</kbd> `validate_field_schema`
</h3>

```python theme={"system"}
validate_field_schema(schema: dict[str, Any]) → dict[str, Any]
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace_server/interface/builtin_object_classes/annotation_spec.py#L109" />

<h3 id="method-value_is_valid">
  <kbd>méthode</kbd> `value_is_valid`
</h3>

```python theme={"system"}
value_is_valid(payload: Any) → bool
```

Valide une charge utile par rapport au schéma de cette spécification d'annotation.

**Arguments :**

* <b>`payload`</b> : les données à valider par rapport au schéma
  **Retourne :**

* <b>`bool`</b> :  True si la validation réussit, False sinon

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/type_handlers/Audio/audio.py#L81" />

<h2 id="class-audio">
  <kbd>classe</kbd> `Audio`
</h2>

Classe représentant des données audio dans un format pris en charge (wav ou mp3).

Cette classe gère le stockage des données audio et fournit des méthodes pour les charger depuis différentes sources et les exporter vers des fichiers.

**Attributs :**

* <b>`format`</b> :  Le format audio (actuellement, 'wav' ou 'mp3' sont pris en charge)
* <b>`data`</b> :  Les données audio brutes, sous forme d’octets

**Arguments :**

* <b>`data`</b> : Les données audio (octets ou string encodée en base64)

* <b>`format`</b> : Le format audio ('wav' ou 'mp3')

* <b>`validate_base64`</b> : Indique s’il faut tenter de décoder les données d’entrée en base64
  **Exceptions levées :**

* <b>`ValueError`</b> :  Si les données audio sont vides ou si le format n’est pas pris en charge

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/type_handlers/Audio/audio.py#L106" />

<h3 id="method-__init__">
  <kbd>méthode</kbd> `__init__`
</h3>

```python theme={"system"}
__init__(
    data: 'bytes',
    format: 'SUPPORTED_FORMATS_TYPE',
    validate_base64: 'bool' = True
) → None
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/type_handlers/Audio/audio.py#L174" />

<h3 id="method-export">
  <kbd>méthode</kbd> `export`
</h3>

```python theme={"system"}
export(path: 'str | bytes | Path | PathLike') → None
```

Exporte les données audio vers un fichier.

**Arguments :**

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/type_handlers/Audio/audio.py#L121" />

<h3 id="classmethod-from_data">
  <kbd>classmethod</kbd> `from_data`
</h3>

```python theme={"system"}
from_data(data: 'str | bytes', format: 'str') → Self
```

Crée un objet Audio à partir de données brutes et d’un format spécifié.

* <b>`path`</b> : chemin où le fichier audio doit être écrit
  **Arguments :**

* <b>`data`</b> : données audio sous forme d’octets ou de string encodée en base64

* <b>`format`</b> : format audio ('wav' ou 'mp3')
  **Retourne :**

* <b>`Audio`</b> :  une nouvelle instance d’Audio

**Exceptions levées :**

* <b>`ValueError`</b> :  si le format n’est pas pris en charge

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/type_handlers/Audio/audio.py#L146" />

<h3 id="classmethod-from_path">
  <kbd>classmethod</kbd> `from_path`
</h3>

```python theme={"system"}
from_path(path: 'str | bytes | Path | PathLike') → Self
```

Crée un objet Audio à partir d’un chemin de fichier.

**Arguments :**

* <b>`path`</b> : chemin d’accès à un fichier audio (extension .wav ou .mp3 obligatoire)
  **Retourne :**

* <b>`Audio`</b> :  une nouvelle instance Audio chargée à partir du fichier

**Exceptions levées :**

* <b>`ValueError`</b> :  si le fichier n'existe pas ou si son extension n'est pas prise en charge

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/monitor.py#L278" />

<h2 id="class-classifiermonitor">
  <kbd>classe</kbd> `ClassifierMonitor`
</h2>

Un moniteur qui fusionne plusieurs évaluateurs en un seul classifieur.

Les moniteurs de classification regroupent les prompts de plusieurs LLMAsAJudgeScorers ciblant le même modèle en un seul appel d’évaluation.

**Champs Pydantic :**

* `name`: `str | None`
* `description`: `str | None`
* `ref`: `trace.refs.ObjectRef | None`
* `sampling_rate`: `<class 'float'>`
* `scorers`: `list[flow.scorer.Scorer]`
* `op_names`: `list[typing.Union[typing.Literal['genai.turn_ended'], str]]`
* `query`: `trace_server.interface.query.Query | None`
* `is_traced`: `<class 'bool'>`
* `active`: `<class 'bool'>`
* `scorer_debounce_config`: `flow.monitor.ScorerDebounceConfig | None`
* `prompt_header`: `str | None`
* `prompt_footer`: `str | None`

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/monitor.py#L141" />

<h3 id="method-activate">
  <kbd>méthode</kbd> `activate`
</h3>

```python theme={"system"}
activate() → ObjectRef
```

Active le moniteur.

**Retourne :**
La réf. du moniteur.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/monitor.py#L152" />

<h3 id="method-deactivate">
  <kbd>méthode</kbd> `deactivate`
</h3>

```python theme={"system"}
deactivate() → ObjectRef
```

Désactive le moniteur.

**Retourne :**
La réf. du moniteur.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/monitor.py#L203" />

<h3 id="classmethod-from_obj">
  <kbd>classmethod</kbd> `from_obj`
</h3>

```python theme={"system"}
from_obj(obj: WeaveObject) → Self
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/monitor.py#L302" />

<h3 id="method-get_prompt_footer">
  <kbd>méthode</kbd> `get_prompt_footer`
</h3>

```python theme={"system"}
get_prompt_footer() → str
```

Texte à ajouter après les prompts fusionnés des classifieurs.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/monitor.py#L296" />

<h3 id="method-get_prompt_header">
  <kbd>méthode</kbd> `get_prompt_header`
</h3>

```python theme={"system"}
get_prompt_header(op_name: str) → str
```

Texte à insérer avant les prompts fusionnés des classifieurs.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/monitor.py#L118" />

<h3 id="method-model_post_init">
  <kbd>méthode</kbd> `model_post_init`
</h3>

```python theme={"system"}
model_post_init(context: Any) → None
```

Normalise `op_names` lors de la construction lorsqu’un client est disponible.

La publication ne dispose d’aucun hook par objet. Pour couvrir également un simple appel à `weave.publish(monitor)` (sans `activate()`), les noms courts sont donc développés ici : toute personne qui publie a généralement déjà appelé `weave.init`, de sorte que le client est défini au moment de la construction du moniteur.

Dans plusieurs cas d’usage, la construction s’effectue sans client : tests unitaires, inspection, ou encore désérialisation d’un moniteur stocké dans un worker. La vérification sur `get_weave_client()` permet la construction sans client. Dans ce cas, la normalisation n’a pas lieu, ce qui ne devrait pas poser de problème, car les moniteurs stockés contiennent déjà des réf. complètes.

Il existe un cas limite dans lequel un moniteur peut être créé avec le SDK sans être normalisé : lorsque l’utilisateur construit le moniteur, appelle ensuite weave.init, puis le publie. Pour contourner ce problème, vous pouvez appeler `activate()` ou `deactivate()`.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/type_wrappers/Content/content.py#L42" />

<h2 id="class-content">
  <kbd>classe</kbd> `Content`
</h2>

Classe permettant de représenter du contenu issu de diverses sources en le convertissant en une représentation unifiée sous forme d’octets, accompagnée des métadonnées associées.

Cette classe doit être instanciée à l’aide de l’une de ses classmethods :

* from\_path()
* from\_bytes()
* from\_text()
* from\_url()
* from\_base64()
* from\_data\_url()

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/type_wrappers/Content/content.py#L87" />

<h3 id="method-__init__-2">
  <kbd>méthode</kbd> `__init__`
</h3>

```python theme={"system"}
__init__(*args: 'Any', **kwargs: 'Any') → None
```

L’initialisation directe est désactivée. Utilisez une classmethod telle que `Content.from_path()` pour créer une instance.

**Champs Pydantic :**

* `data`: `<class 'bytes'>`
* `size`: `<class 'int'>`
* `mimetype`: `<class 'str'>`
* `digest`: `<class 'str'>`
* `filename`: `<class 'str'>`
* `content_type`: `typing.Literal['bytes', 'text', 'base64', 'file', 'url', 'data_url', 'data_url:base64', 'data_url:encoding', 'data_url:encoding:base64']`
* `input_type`: `<class 'str'>`
* `encoding`: `<class 'str'>`
* `metadata`: `dict[str, typing.Any] | None`
* `extension`: `str | None`

***

<h4 id="property-art">
  <kbd>propriété</kbd> art
</h4>

<h4 id="property-ref">
  <kbd>propriété</kbd> ref
</h4>

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/type_wrappers/Content/content.py#L543" />

<h3 id="method-as_string">
  <kbd>méthode</kbd> `as_string`
</h3>

```python theme={"system"}
as_string() → str
```

Affiche les données sous forme de string. Les octets sont décodés à l’aide de l’attribut `encoding`. Si l’encodage est base64, les données sont réencodées en octets base64, puis décodées en string ASCII.

**Retourne :**
str.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/type_wrappers/Content/content.py#L258" />

<h3 id="classmethod-from_base64">
  <kbd>classmethod</kbd> `from_base64`
</h3>

```python theme={"system"}
from_base64(
    b64_data: 'str | bytes',
    extension: 'str | None' = None,
    mimetype: 'str | None' = None,
    metadata: 'dict[str, Any] | None' = None
) → Self
```

Initialise Content à partir d’une string ou d’octets encodés en base64.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/type_wrappers/Content/content.py#L168" />

<h3 id="classmethod-from_bytes">
  <kbd>classmethod</kbd> `from_bytes`
</h3>

```python theme={"system"}
from_bytes(
    data: 'bytes',
    extension: 'str | None' = None,
    mimetype: 'str | None' = None,
    metadata: 'dict[str, Any] | None' = None,
    encoding: 'str' = 'utf-8'
) → Self
```

Initialise Content à partir d’octets bruts.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/type_wrappers/Content/content.py#L357" />

<h3 id="classmethod-from_data_url">
  <kbd>classmethod</kbd> `from_data_url`
</h3>

```python theme={"system"}
from_data_url(url: 'str', metadata: 'dict[str, Any] | None' = None) → Self
```

Initialise Content à partir d’une URL de données.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/type_wrappers/Content/content.py#L309" />

<h3 id="classmethod-from_path-2">
  <kbd>classmethod</kbd> `from_path`
</h3>

```python theme={"system"}
from_path(
    path: 'str | Path',
    encoding: 'str' = 'utf-8',
    mimetype: 'str | None' = None,
    metadata: 'dict[str, Any] | None' = None
) → Self
```

Initialise Content à partir d’un chemin de fichier local.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/type_wrappers/Content/content.py#L209" />

<h3 id="classmethod-from_text">
  <kbd>classmethod</kbd> `from_text`
</h3>

```python theme={"system"}
from_text(
    text: 'str',
    extension: 'str | None' = None,
    mimetype: 'str | None' = None,
    metadata: 'dict[str, Any] | None' = None,
    encoding: 'str' = 'utf-8'
) → Self
```

Initialise Content à partir d’une string.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/type_wrappers/Content/content.py#L399" />

<h3 id="classmethod-from_url">
  <kbd>classmethod</kbd> `from_url`
</h3>

```python theme={"system"}
from_url(
    url: 'str',
    headers: 'dict[str, Any] | None' = None,
    timeout: 'int | None' = 30,
    metadata: 'dict[str, Any] | None' = None
) → Self
```

Initialise un objet Content en récupérant des octets depuis une URL HTTP(S).

Télécharge le contenu, déduit le type MIME et l’extension à partir des en-têtes, du chemin de l’URL et des données, puis construit un objet Content à partir des octets obtenus.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/type_wrappers/Content/content.py#L97" />

<h3 id="classmethod-model_validate">
  <kbd>classmethod</kbd> `model_validate`
</h3>

```python theme={"system"}
model_validate(
    obj: 'Any',
    strict: 'bool | None' = None,
    from_attributes: 'bool | None' = None,
    context: 'dict[str, Any] | None' = None,
    extra: 'str | None' = None,
    by_alias: 'bool | None' = None,
    by_name: 'bool | None' = None
) → Self
```

Redéfinit model\_validate pour gérer la reconstruction de Content à partir d’un dict.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/type_wrappers/Content/content.py#L148" />

<h3 id="classmethod-model_validate_json">
  <kbd>classmethod</kbd> `model_validate_json`
</h3>

```python theme={"system"}
model_validate_json(
    json_data: 'str | bytes | bytearray',
    strict: 'bool | None' = None,
    context: 'dict[str, Any] | None' = None,
    extra: 'str | None' = None,
    by_alias: 'bool | None' = None,
    by_name: 'bool | None' = None
) → Self
```

Redéfinit model\_validate\_json pour gérer la reconstruction de Content à partir de JSON.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/type_wrappers/Content/content.py#L553" />

<h3 id="method-open">
  <kbd>méthode</kbd> `open`
</h3>

```python theme={"system"}
open() → bool
```

Ouvre le fichier avec l'application par défaut du système d'exploitation.

Cette méthode s'appuie sur le mécanisme propre à la plateforme pour ouvrir le fichier avec l'application par défaut associée à son type.

**Retourne :**

* <b>`bool`</b> :  True si le fichier a bien été ouvert, False sinon.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/type_wrappers/Content/content.py#L583" />

<h3 id="method-save">
  <kbd>méthode</kbd> `save`
</h3>

```python theme={"system"}
save(dest: 'str | Path') → None
```

Copie le fichier vers le chemin de destination spécifié. Met à jour le nom de fichier et le chemin du contenu pour refléter la dernière copie enregistrée.

**Arguments :**

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/type_wrappers/Content/content.py#L535" />

<h3 id="method-serialize_data">
  <kbd>méthode</kbd> `serialize_data`
</h3>

```python theme={"system"}
serialize_data(data: 'bytes') → str
```

Lors de la sérialisation du modèle en mode json

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/type_wrappers/Content/content.py#L510" />

<h3 id="method-to_data_url">
  <kbd>méthode</kbd> `to_data_url`
</h3>

```python theme={"system"}
to_data_url(use_base64: 'bool' = True) → str
```

Construit une URL de données à partir du contenu.

* <b>`dest`</b> : chemin de destination vers lequel le fichier sera copié (string ou pathlib.Path). Le chemin de destination peut être un fichier ou un répertoire. Si dest n’a pas d’extension de fichier (par exemple .txt), la destination est considérée comme un répertoire.
  **Arguments :**

* <b>`use_base64`</b> : si True, les données sont encodées en base64. Sinon, elles sont encodées en pourcentage (percent-encoding). Valeur par défaut : True.
  **Retourne :**
  Une URL de données sous forme de string.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L1080" />

<h2 id="class-conversation">
  <kbd>classe</kbd> `Conversation`
</h2>

Une conversation. Regroupe les tours de conversation par conversation\_id (sans span).

`continue_parent_trace` contrôle l’isolation des traces pour les tours de conversation créés par cette conversation. Avec la valeur par défaut `False`, chaque tour de conversation démarre sa propre trace OTel (le choix adapté à la vue autonome de l’onglet Agents). Définissez `True` lorsque l’application dispose d’une trace externe (par exemple, une requête instrumentée par fastapi) qui doit englober l’appel d’agent.

**Champs Pydantic :**

* `conversation_id`: `<class 'str'>`
* `conversation_name`: `<class 'str'>`
* `agent_name`: `<class 'str'>`
* `model`: `<class 'str'>`
* `agent_id`: `<class 'str'>`
* `agent_description`: `<class 'str'>`
* `agent_version`: `<class 'str'>`
* `include_content`: `<class 'bool'>`
* `continue_parent_trace`: `<class 'bool'>`
* `attributes`: `dict[str, typing.Any]`

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L1157" />

<h3 id="method-end">
  <kbd>méthode</kbd> `end`
</h3>

```python theme={"system"}
end() → None
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/pydantic/_internal/_model_construction.py#L1112" />

<h3 id="method-model_post_init-2">
  <kbd>méthode</kbd> `model_post_init`
</h3>

```python theme={"system"}
model_post_init(context: 'Any') → None
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L1116" />

<h3 id="method-start_turn">
  <kbd>méthode</kbd> `start_turn`
</h3>

```python theme={"system"}
start_turn(
    user_message: 'str' = '',
    model: 'str' = '',
    agent_name: 'str' = '',
    agent_id: 'str' = '',
    agent_description: 'str' = '',
    agent_version: 'str' = '',
    system_instructions: 'list[str] | None' = None
) → Turn
```

Crée un nouveau tour de conversation. Termine automatiquement le tour de conversation précédent s’il est encore ouvert.

Définit la contextvar `_current_turn` afin que le tour de conversation soit accessible via `get_current_turn()`, qu’un gestionnaire de contexte soit utilisé ou non. Chacun des paramètres `agent_name` / `model` / `agent_id` / `agent_description` / `agent_version` reprend la valeur par défaut de la conversation s’il est laissé vide ; `continue_parent_trace` est hérité. Vous pouvez redéfinir n’importe lequel d’entre eux ultérieurement via `turn.record(...)`.

`system_instructions` (le prompt système de l'agent) est porté par le span invoke\_agent du tour de conversation ; vous pouvez également le définir ultérieurement en affectant l’attribut sur le `Turn` renvoyé, comme pour `start_llm`.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/dataset/dataset.py#L26" />

<h2 id="class-dataset">
  <kbd>classe</kbd> `Dataset`
</h2>

Objet Dataset offrant un enregistrement simplifié et une gestion automatique des versions.

**Exemples :**

```python theme={"system"}
# Créer un dataset
dataset = Dataset(name='grammar', rows=[
     {'id': '0', 'sentence': "He no likes ice cream.", 'correction': "He doesn't like ice cream."},
     {'id': '1', 'sentence': "She goed to the store.", 'correction': "She went to the store."},
     {'id': '2', 'sentence': "They plays video games all day.", 'correction': "They play video games all day."}
])

# Publier le dataset
weave.publish(dataset)

# Récupérer le dataset
dataset_ref = weave.ref('grammar').get()

# Accéder à un exemple précis
example_label = dataset_ref.rows[2]['sentence']
```

**Champs Pydantic :**

* `name`: `str | None`
* `description`: `str | None`
* `ref`: `trace.refs.ObjectRef | None`
* `rows`: `trace.table.Table | trace.vals.WeaveTable`

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/dataset/dataset.py#L129" />

<h3 id="method-add_rows">
  <kbd>méthode</kbd> `add_rows`
</h3>

```python theme={"system"}
add_rows(rows: Iterable[dict]) → Dataset
```

Crée une nouvelle version du dataset en ajoutant des lignes au dataset existant.

Cette méthode permet d’ajouter des exemples à des datasets volumineux sans avoir à charger l’intégralité du dataset en mémoire.

**Arguments :**

* <b>`rows`</b> : les lignes à ajouter au dataset.
  **Retourne :**
  Le dataset mis à jour.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/dataset/dataset.py#L173" />

<h3 id="classmethod-convert_to_table">
  <kbd>classmethod</kbd> `convert_to_table`
</h3>

```python theme={"system"}
convert_to_table(rows: Any) → Table | WeaveTable
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/dataset/dataset.py#L61" />

<h3 id="classmethod-from_calls">
  <kbd>classmethod</kbd> `from_calls`
</h3>

```python theme={"system"}
from_calls(calls: Iterable[Call]) → Self
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/dataset/dataset.py#L71" />

<h3 id="classmethod-from_hf">
  <kbd>classmethod</kbd> `from_hf`
</h3>

```python theme={"system"}
from_hf(hf_dataset: 'HFDataset | HFDatasetDict') → Self
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/dataset/dataset.py#L52" />

<h3 id="classmethod-from_obj-2">
  <kbd>classmethod</kbd> `from_obj`
</h3>

```python theme={"system"}
from_obj(obj: WeaveObject) → Self
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/dataset/dataset.py#L66" />

<h3 id="classmethod-from_pandas">
  <kbd>classmethod</kbd> `from_pandas`
</h3>

```python theme={"system"}
from_pandas(df: 'DataFrame') → Self
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/dataset/dataset.py#L220" />

<h3 id="method-select">
  <kbd>méthode</kbd> `select`
</h3>

```python theme={"system"}
select(indices: Iterable[int]) → Self
```

Sélectionne des lignes du dataset à partir des indices fournis.

**Arguments :**

* <b>`indices`</b> : un itérable d’indices entiers indiquant les lignes à sélectionner.
  **Retourne :**
  Un nouvel objet Dataset contenant uniquement les lignes sélectionnées.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/dataset/dataset.py#L115" />

<h3 id="method-to_hf">
  <kbd>méthode</kbd> `to_hf`
</h3>

```python theme={"system"}
to_hf() → HFDataset
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/dataset/dataset.py#L107" />

<h3 id="method-to_pandas">
  <kbd>méthode</kbd> `to_pandas`
</h3>

```python theme={"system"}
to_pandas() → DataFrame
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L192" />

<h2 id="class-easyprompt">
  <kbd>classe</kbd> `EasyPrompt`
</h2>

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L200" />

<h3 id="method-__init__-3">
  <kbd>méthode</kbd> `__init__`
</h3>

```python theme={"system"}
__init__(
    content: str | dict | list | None = None,
    role: str | None = None,
    dedent: bool = False,
    **kwargs: Any
) → None
```

**Champs Pydantic :**

* `name`: `str | None`
* `description`: `str | None`
* `ref`: `trace.refs.ObjectRef | None`
* `data`: `<class 'list'>`
* `config`: `<class 'dict'>`
* `requirements`: `<class 'dict'>`

***

<h4 id="property-as_str">
  <kbd>propriété</kbd> as\_str
</h4>

Regroupe tous les messages dans une seule string.

***

<h4 id="property-is_bound">
  <kbd>propriété</kbd> is\_bound
</h4>

***

<h4 id="property-messages">
  <kbd>propriété</kbd> messages
</h4>

<h4 id="property-placeholders">
  <kbd>propriété</kbd> placeholders
</h4>

***

<h4 id="property-system_message">
  <kbd>propriété</kbd> system\_message
</h4>

Regrouper tous les messages dans un message de prompt système.

***

<h4 id="property-system_prompt">
  <kbd>propriété</kbd> system\_prompt
</h4>

Regrouper tous les messages dans un objet de prompt système.

***

<h4 id="property-unbound_placeholders">
  <kbd>propriété</kbd> unbound\_placeholders
</h4>

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L230" />

<h3 id="method-append">
  <kbd>méthode</kbd> `append`
</h3>

```python theme={"system"}
append(item: Any, role: str | None = None, dedent: bool = False) → None
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L489" />

<h3 id="method-as_dict">
  <kbd>méthode</kbd> `as_dict`
</h3>

```python theme={"system"}
as_dict() → dict[str, Any]
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L486" />

<h3 id="method-as_pydantic_dict">
  <kbd>méthode</kbd> `as_pydantic_dict`
</h3>

```python theme={"system"}
as_pydantic_dict() → dict[str, Any]
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L321" />

<h3 id="method-bind">
  <kbd>méthode</kbd> `bind`
</h3>

```python theme={"system"}
bind(*args: Any, **kwargs: Any) → Prompt
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L341" />

<h3 id="method-bind_rows">
  <kbd>méthode</kbd> `bind_rows`
</h3>

```python theme={"system"}
bind_rows(dataset: list[dict] | Any) → list['Prompt']
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L447" />

<h3 id="method-config_table">
  <kbd>méthode</kbd> `config_table`
</h3>

```python theme={"system"}
config_table(title: str | None = None) → Table
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L411" />

<h3 id="method-configure">
  <kbd>méthode</kbd> `configure`
</h3>

```python theme={"system"}
configure(config: dict | None = None, **kwargs: Any) → Prompt
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L527" />

<h3 id="method-dump">
  <kbd>méthode</kbd> `dump`
</h3>

```python theme={"system"}
dump(fp: <class 'IO'>) → None
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L530" />

<h3 id="method-dump_file">
  <kbd>méthode</kbd> `dump_file`
</h3>

```python theme={"system"}
dump_file(filepath: str | Path) → None
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L84" />

<h3 id="method-format">
  <kbd>méthode</kbd> `format`
</h3>

```python theme={"system"}
format(**kwargs: Any) → Any
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L496" />

<h3 id="classmethod-from_obj-3">
  <kbd>classmethod</kbd> `from_obj`
</h3>

```python theme={"system"}
from_obj(obj: WeaveObject) → Self
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L511" />

<h3 id="classmethod-load">
  <kbd>classmethod</kbd> `load`
</h3>

```python theme={"system"}
load(fp: <class 'IO'>) → Self
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L521" />

<h3 id="classmethod-load_file">
  <kbd>classmethod</kbd> `load_file`
</h3>

```python theme={"system"}
load_file(filepath: str | Path) → Self
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L427" />

<h3 id="method-messages_table">
  <kbd>méthode</kbd> `messages_table`
</h3>

```python theme={"system"}
messages_table(title: str | None = None) → Table
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L455" />

<h3 id="method-print">
  <kbd>méthode</kbd> `print`
</h3>

```python theme={"system"}
print() → str
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L417" />

<h3 id="method-publish">
  <kbd>méthode</kbd> `publish`
</h3>

```python theme={"system"}
publish(
    name: str | None = None,
    tags: list[str] | None = None,
    aliases: list[str] | None = None
) → ObjectRef
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L407" />

<h3 id="method-require">
  <kbd>méthode</kbd> `require`
</h3>

```python theme={"system"}
require(param_name: str, **kwargs: Any) → Prompt
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/op.py#L540" />

<h3 id="method-run">
  <kbd>méthode</kbd> `run`
</h3>

```python theme={"system"}
run() → Any
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L298" />

<h3 id="method-validate_requirement">
  <kbd>méthode</kbd> `validate_requirement`
</h3>

```python theme={"system"}
validate_requirement(key: str, value: Any) → list
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L315" />

<h3 id="method-validate_requirements">
  <kbd>méthode</kbd> `validate_requirements`
</h3>

```python theme={"system"}
validate_requirements(values: dict[str, Any]) → list
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L439" />

<h3 id="method-values_table">
  <kbd>méthode</kbd> `values_table`
</h3>

```python theme={"system"}
values_table(title: str | None = None) → Table
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/evaluation/eval.py#L147" />

<h2 id="class-evaluation">
  <kbd>classe</kbd> `Evaluation`
</h2>

Configure une évaluation comprenant un ensemble d’évaluateurs et un dataset.

L’Appel à evaluation.evaluate(model) transmet les lignes d’un dataset à un modèle, en faisant correspondre les noms des colonnes du dataset aux noms des arguments de model.predict.

La méthode appelle ensuite tous les évaluateurs et enregistre les résultats dans Weave.

Pour prétraiter les lignes du dataset, vous pouvez transmettre une fonction à preprocess\_model\_input.

**Exemples :**

```python theme={"system"}
# Rassemblez vos exemples
examples = [
     {"question": "What is the capital of France?", "expected": "Paris"},
     {"question": "Who wrote 'To Kill a Mockingbird'?", "expected": "Harper Lee"},
     {"question": "What is the square root of 64?", "expected": "8"},
]

# Définissez une fonction de score personnalisée
@weave.op
def match_score1(expected: str, model_output: dict) -> dict:
     # Définissez ici la logique d'évaluation de la sortie du modèle
     return {'match': expected == model_output['generated_text']}

@weave.op
def function_to_evaluate(question: str):
     # ajoutez ici votre appel LLM et renvoyez la sortie
     return  {'generated_text': 'Paris'}

# Évaluez vos exemples à l'aide de fonctions de score
evaluation = Evaluation(
     dataset=examples, scorers=[match_score1]
)

# Démarrez le suivi de l'évaluation
weave.init('intro-example')
# Exécutez l'évaluation
asyncio.run(evaluation.evaluate(function_to_evaluate))
```

**Champs Pydantic :**

* `name` : `str | None`
* `description` : `str | None`
* `ref` : `trace.refs.ObjectRef | None`
* `dataset` : `<class 'dataset.dataset.Dataset'>`
* `scorers` : `list[typing.Annotated[trace.op_protocol.Op | flow.scorer.Scorer, BeforeValidator(func=<function cast_to_scorer at 0x7f136d430d60>, json_schema_input_type=PydanticUndefined)]] | None`
* `preprocess_model_input` : `collections.abc.Callable[[dict], dict] | None`
* `trials` : `<class 'int'>`
* `metadata` : `dict[str, typing.Any] | None`
* `evaluation_name` : `str | collections.abc.Callable[trace.call.Call, str] | None`

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/op.py#L381" />

<h3 id="method-evaluate">
  <kbd>méthode</kbd> `evaluate`
</h3>

```python theme={"system"}
evaluate(model: Op | Model) → dict
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/evaluation/eval.py#L205" />

<h3 id="classmethod-from_obj-4">
  <kbd>classmethod</kbd> `from_obj`
</h3>

```python theme={"system"}
from_obj(obj: WeaveObject) → Self
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/evaluation/eval.py#L329" />

<h3 id="method-get_eval_results">
  <kbd>méthode</kbd> `get_eval_results`
</h3>

```python theme={"system"}
get_eval_results(model: Op | Model) → EvaluationResults
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/evaluation/eval.py#L397" />

<h3 id="method-get_evaluate_calls">
  <kbd>méthode</kbd> `get_evaluate_calls`
</h3>

```python theme={"system"}
get_evaluate_calls() → PaginatedIterator[CallSchema, WeaveObject]
```

Récupère tous les Appels d’évaluation ayant utilisé cet objet Evaluation.

Notez que cette méthode renvoie un CallsIter plutôt qu’un Appel unique, car une même évaluation peut donner lieu à plusieurs Appels d’évaluation (par exemple, si vous exécutez la même évaluation plusieurs fois).

**Retourne :**

* <b>`CallsIter`</b> :  Un itérateur sur des objets Appel représentant des runs d’évaluation.

**Exceptions levées :**

* <b>`ValueError`</b> :  Si l’évaluation n’a pas de réf. (elle n’a pas encore été enregistrée ni exécutée).

**Exemples :**

```python theme={"system"}
evaluation = Evaluation(dataset=examples, scorers=[scorer])
await evaluation.evaluate(model)  # Exécutez d’abord l’évaluation
calls = evaluation.get_evaluate_calls()
for call in calls:
     print(f"Evaluation run: {call.id} at {call.started_at}")
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/evaluation/eval.py#L433" />

<h3 id="method-get_score_calls">
  <kbd>méthode</kbd> `get_score_calls`
</h3>

```python theme={"system"}
get_score_calls() → dict[str, list[Call]]
```

Récupère les Appels d’évaluateur pour chaque run d’évaluation, regroupés par ID de trace.

**Retourne :**

* <b>`dict[str, list[Call]]`</b> :  Un dictionnaire associant les ID de trace à des listes d’objets Appel d’évaluateur.  Chaque ID de trace correspond à un run d’évaluation et la liste contient tous les Appels d’évaluateur  exécutés au cours de ce run.

**Exemples :**

```python theme={"system"}
evaluation = Evaluation(dataset=examples, scorers=[accuracy_scorer, f1_scorer])
await evaluation.evaluate(model)
score_calls = evaluation.get_score_calls()
for trace_id, calls in score_calls.items():
     print(f"Trace {trace_id}: {len(calls)} scorer calls")
     for call in calls:
         scorer_name = call.summary.get("weave", {}).get("trace_name")
         print(f"  Scorer: {scorer_name}, Output: {call.output}")
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/evaluation/eval.py#L472" />

<h3 id="method-get_scores">
  <kbd>méthode</kbd> `get_scores`
</h3>

```python theme={"system"}
get_scores() → dict[str, dict[str, list[Any]]]
```

Extrait et organise les sorties des évaluateurs à partir des runs d’évaluation.

**Retourne :**

* <b>`dict[str, dict[str, list[Any]]]`</b> :  Une structure de dictionnaire imbriqué dans laquelle :
  * les clés de premier niveau sont les ID de trace (runs d’évaluation) ;
  * les clés de second niveau sont les noms des évaluateurs ;
  * les valeurs sont des listes de sorties d’évaluateur pour le run et l’évaluateur correspondants.

**Exemples :**

```python theme={"system"}
evaluation = Evaluation(dataset=examples, scorers=[accuracy_scorer, f1_scorer])
await evaluation.evaluate(model)
scores = evaluation.get_scores()
# Accéder aux scores par trace et par évaluateur
for trace_id, trace_scores in scores.items():
         print(f"Evaluation run {trace_id}:")
         for scorer_name, outputs in trace_scores.items():
             print(f"  {scorer_name}: {outputs}")
```

Sortie attendue :

```
{
     "trace_123": {
     "accuracy_scorer": [{"accuracy": 0.85}],
     "f1_scorer": [{"f1": 0.78}]
     }
}
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/pydantic/_internal/_model_construction.py#L249" />

<h3 id="method-model_post_init-3">
  <kbd>méthode</kbd> `model_post_init`
</h3>

```python theme={"system"}
model_post_init(context: Any) → None
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/op.py#L266" />

<h3 id="method-predict_and_score">
  <kbd>méthode</kbd> `predict_and_score`
</h3>

```python theme={"system"}
predict_and_score(model: Op | Model, example: dict) → dict
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/op.py#L306" />

<h3 id="method-summarize">
  <kbd>méthode</kbd> `summarize`
</h3>

```python theme={"system"}
summarize(eval_table: EvaluationResults) → dict
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/evaluation/eval_imperative.py#L642" />

<h2 id="class-evaluationlogger">
  <kbd>classe</kbd> `EvaluationLogger`
</h2>

Cette classe fournit une interface impérative pour journaliser des évaluations.

Une évaluation démarre automatiquement lorsque la première prédiction est journalisée à l’aide de la méthode `log_prediction`, et se termine lorsque la méthode `log_summary` est appelée.

Chaque fois que vous journalisez une prédiction, un objet `ScoreLogger` vous est renvoyé. Cet objet vous permet de journaliser des scores et des métadonnées propres à cette prédiction. Pour plus d'informations, voir la classe `ScoreLogger`.

Utilisation de base – journaliser directement des prédictions avec leurs entrées et sorties :

```python theme={"system"}
ev = EvaluationLogger()

# Journaliser des prédictions dont les entrées/sorties sont connues
pred = ev.log_prediction(inputs={'q': 'Hello'}, outputs={'a': 'Hi there!'})
pred.log_score("correctness", 0.9)

# Terminer l’évaluation
ev.log_summary({"avg_score": 0.9})
```

Utilisation avancée : utiliser un gestionnaire de contexte pour les sorties dynamiques et les opérations imbriquées :

```python theme={"system"}
ev = EvaluationLogger()

# Utilisez un gestionnaire de contexte pour capturer des opérations imbriquées
with ev.log_prediction(inputs={'q': 'Hello'}) as pred:
     # Toute opération effectuée ici (comme un appel LLM) devient automatiquement
     # un enfant de l’appel de prédiction
     response = your_llm_call(...)
     pred.output = response.content
     pred.log_score("correctness", 0.9)

# Terminer l’évaluation
ev.log_summary({"avg_score": 0.9})
```

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/evaluation/eval_imperative.py#L684" />

<h3 id="method-__init__-4">
  <kbd>méthode</kbd> `__init__`
</h3>

```python theme={"system"}
__init__(
    name: 'str | None' = None,
    model: 'Model | dict | str | None' = None,
    dataset: 'Dataset | list[dict] | str | None' = None,
    eval_attributes: 'dict[str, Any] | None' = None,
    scorers: 'list[str] | None' = None
) → None
```

***

<h4 id="property-attributes">
  <kbd>property</kbd> attributes
</h4>

***

<h4 id="property-ui_url">
  <kbd>property</kbd> ui\_url
</h4>

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/evaluation/eval_imperative.py#L1106" />

<h3 id="method-fail">
  <kbd>méthode</kbd> `fail`
</h3>

```python theme={"system"}
fail(exception: 'BaseException') → None
```

Méthode utilitaire permettant de marquer l’évaluation comme ayant échoué à l’aide d’une exception.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/evaluation/eval_imperative.py#L1090" />

<h3 id="method-finish">
  <kbd>méthode</kbd> `finish`
</h3>

```python theme={"system"}
finish(exception: 'BaseException | None' = None) → None
```

Libère explicitement les ressources de l’évaluation sans journaliser de synthèse.

Garantit que tous les Appels de prédiction ainsi que l’Appel principal de l’évaluation sont finalisés. Cette méthode est appelée automatiquement lorsque le logger est utilisé comme gestionnaire de contexte.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/evaluation/eval_imperative.py#L950" />

<h3 id="method-log_example">
  <kbd>méthode</kbd> `log_example`
</h3>

```python theme={"system"}
log_example(
    inputs: 'dict[str, Any]',
    output: 'Any',
    scores: 'dict[str, ScoreType]'
) → None
```

Journalise un exemple complet avec les entrées, la sortie et les scores.

Cette méthode utilitaire combine log\_prediction et log\_score lorsque vous disposez de toutes les données dès le départ.

**Arguments :**

* <b>`inputs`</b> : les données d’entrée de la prédiction
* <b>`output`</b> : la valeur de sortie
* <b>`scores`</b> : dictionnaire associant les noms des évaluateurs aux valeurs de score
  **Exemple :**

```python theme={"system"}
ev = EvaluationLogger()
ev.log_example(
    inputs={'q': 'What is 2+2?'},
    output='4',
    scores={'correctness': 1.0, 'fluency': 0.9}
)
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/evaluation/eval_imperative.py#L877" />

<h3 id="method-log_prediction">
  <kbd>méthode</kbd> `log_prediction`
</h3>

```python theme={"system"}
log_prediction(inputs: 'dict[str, Any]', output: 'Any' = None) → ScoreLogger
```

Journalise une prédiction dans l’Évaluation.

Renvoie un ScoreLogger utilisable directement ou comme gestionnaire de contexte.

**Arguments :**

* <b>`inputs`</b> : les données d’entrée de la prédiction
* <b>`output`</b> : la valeur de sortie. Valeur par défaut : None. Peut être définie ultérieurement via pred.output.
  **Retourne :**
  Un ScoreLogger permettant de journaliser des scores et, si besoin, de finaliser la prédiction.

Exemple (utilisation directe) :

* <b>`pred = ev.log_prediction({'q'`</b>:  '...'}, output="answer") pred.log\_score("correctness", 0.9) pred.finish()

Exemple (gestionnaire de contexte) :

* <b>`with ev.log_prediction({'q'`</b>:  '...'}) as pred:  response = model(...)  pred.output = response  pred.log\_score("correctness", 0.9) # Appelle automatiquement finish() à la sortie

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/evaluation/eval_imperative.py#L989" />

<h3 id="method-log_summary">
  <kbd>méthode</kbd> `log_summary`
</h3>

```python theme={"system"}
log_summary(summary: 'dict | None' = None, auto_summarize: 'bool' = True) → None
```

Journalise un dict de synthèse dans l’Évaluation.

Cette méthode calcule la synthèse, appelle l’op summarize, puis finalise l’évaluation : il n’est alors plus possible de journaliser de prédictions ni de scores.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/evaluation/eval_imperative.py#L1038" />

<h3 id="method-set_view">
  <kbd>méthode</kbd> `set_view`
</h3>

```python theme={"system"}
set_view(
    name: 'str',
    content: 'Content | str',
    extension: 'str | None' = None,
    mimetype: 'str | None' = None,
    metadata: 'dict[str, Any] | None' = None,
    encoding: 'str' = 'utf-8'
) → None
```

Joint une vue à la synthèse de l’Appel principal de l'évaluation, sous `weave.views`.

Enregistre le contenu fourni en tant qu'objet dans le projet et écrit son URI de référence sous `summary.weave.views.<name>` pour l’Appel `evaluate` de l'évaluation. Les entrées de type string sont encapsulées en tant que contenu textuel à l'aide de `Content.from_text`, avec l'extension ou le type MIME fourni.

**Arguments :**

* <b>`name`</b> : nom de la vue à afficher, utilisé comme clé sous `summary.weave.views`.
* <b>`content`</b> : instance de `weave.Content` ou string à sérialiser.
* <b>`extension`</b> : extension de fichier facultative pour les entrées de contenu de type string.
* <b>`mimetype`</b> : type MIME facultatif pour les entrées de contenu de type string.
* <b>`metadata`</b> : métadonnées facultatives jointes au `Content` nouvellement créé.
* <b>`encoding`</b> : encodage du texte pour les entrées de contenu de type string.
  **Retourne :**
  None

**Exemples :**
` import weave`

> > > ev = weave.EvaluationLogger()
> > > ev.set\_view("report", "# Report", extension="md")

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/type_handlers/File/file.py#L30" />

<h2 id="class-file">
  <kbd>classe</kbd> `File`
</h2>

Classe représentant un fichier, avec des informations sur son chemin, son type MIME et sa taille.

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/type_handlers/File/file.py#L34" />

<h3 id="method-__init__-5">
  <kbd>méthode</kbd> `__init__`
</h3>

```python theme={"system"}
__init__(path: 'str | Path', mimetype: 'str | None' = None)
```

Initialise un objet File.

**Arguments :**

***

<h4 id="property-filename">
  <kbd>property</kbd> filename
</h4>

Obtenir le nom du fichier.

* <b>`path`</b> : chemin du fichier (string ou pathlib.Path)

* <b>`mimetype`</b> : type MIME facultatif du fichier ; déduit de l’extension s’il n’est pas fourni
  **Retourne :**

* <b>`str`</b> :  le nom du fichier, sans le chemin du répertoire.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/type_handlers/File/file.py#L60" />

<h3 id="method-open-2">
  <kbd>méthode</kbd> `open`
</h3>

```python theme={"system"}
open() → bool
```

Ouvre le fichier avec l'application par défaut du système d'exploitation.

Cette méthode s'appuie sur le mécanisme propre à la plateforme pour ouvrir le fichier avec l'application par défaut associée à son type.

**Retourne :**

* <b>`bool`</b> :  True si le fichier a bien été ouvert, False sinon.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/type_handlers/File/file.py#L81" />

<h3 id="method-save-2">
  <kbd>méthode</kbd> `save`
</h3>

```python theme={"system"}
save(dest: 'str | Path') → None
```

Copie le fichier vers le chemin de destination spécifié.

**Arguments :**

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L418" />

<h2 id="class-llm">
  <kbd>classe</kbd> `LLM`
</h2>

Un Appel d’API LLM. Correspond à un span OTel de chat.

* <b>`dest`</b> : chemin de destination vers lequel le fichier sera copié (string ou pathlib.Path). Le chemin de destination peut être un fichier ou un répertoire.
  **Champs Pydantic :**

* `model`: `<class 'str'>`

* `provider_name`: `<class 'str'>`

* `response_id`: `<class 'str'>`

* `response_model`: `<class 'str'>`

* `output_type`: `<class 'str'>`

* `system_instructions`: `list[str]`

* `usage`: `<class 'conversation.types.Usage'>`

* `reasoning`: `<class 'conversation.types.Reasoning'>`

* `finish_reasons`: `list[str]`

* `input_messages`: `list[conversation.types.Message]`

* `output_messages`: `list[conversation.types.Message]`

* `media_attachments`: `list[conversation.types.MediaAttachment]`

* `request_temperature`: `float | None`

* `request_max_tokens`: `int | None`

* `request_top_p`: `float | None`

* `request_frequency_penalty`: `float | None`

* `request_presence_penalty`: `float | None`

* `request_seed`: `int | None`

* `request_stop_sequences`: `list[str]`

* `request_choice_count`: `int | None`

* `started_at`: `datetime.datetime | None`

* `ended_at`: `datetime.datetime | None`

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/typing_extensions.py#L257" />

<h3 id="method-add_event">
  <kbd>méthode</kbd> `add_event`
</h3>

```python theme={"system"}
add_event(
    name: 'str',
    attributes: 'dict[str, Any] | None' = None,
    timestamp: 'datetime | None' = None
) → Self
```

Enregistre un événement de span OTel à un instant donné au sein de ce span.

.. deprecated:
\`\`\`      Enregistrez plutôt ces données avec `set_attributes`. OpenTelemetry      abandonne progressivement l’API Span Event (`Span.add_event`).      `add_event` fonctionne toujours, et les données d’événements de span existantes restent valides.      Voir [https://opentelemetry.io/blog/2026/deprecating-span-events/](https://opentelemetry.io/blog/2026/deprecating-span-events/).

````
À utiliser pour les données de marqueur ou de cycle de vie : demandes d’autorisation (par ex. ``weave.permission_request``), transitions de cycle de vie (par ex. ``spawned`` / ``streaming`` / ``finished``) ou tout jalon personnalisé survenant à un instant précis de la durée de vie du span (contrairement à un attribut, qui est une propriété du span dans son ensemble). 

Doit être appelée entre le début et la fin du span (à l’intérieur du bloc ``with``). En dehors de cette fenêtre, l’Appel n’a aucun effet et journalise un avertissement. 

---

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L462" />

### <kbd>méthode</kbd> `attach_media`

```python
attach_media(
    content: 'bytes | str' = '',
    uri: 'str' = '',
    file_id: 'str' = '',
    mime_type: 'str' = '',
    modality: 'str' = ''
) → LLM
````

Joindre un média à cet Appel LLM.

Crée un objet `Content` à partir des données fournies, le publie pour obtenir une réf. `weave://` et ne stocke que cette réf. Vous devez fournir exactement un des paramètres suivants : `content`, `uri` ou `file_id`.

La publication (qui téléverse le média) s’exécute sur un thread d’arrière-plan dédié : l’Appel rend donc la main immédiatement, sans bloquer l’appelant. Un thread est lancé par pièce jointe, ce qui permet d’effectuer plusieurs téléversements en parallèle. L’objet `MediaAttachment` provisoire est ajouté de manière synchrone, et sa `ref` est renseignée une fois le téléversement terminé. Les réfs sont toujours renseignées avant l’émission du span (le chemin de construction attend la fin des téléversements en cours via `_await_uploads`).

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L555" />

<h3 id="method-attach_media_url">
  <kbd>méthode</kbd> `attach_media_url`
</h3>

```python theme={"system"}
attach_media_url(url: 'str', modality: 'str' = '') → LLM
```

Joint une URL de média à cet Appel LLM.

Raccourci pratique pour `attach_media` dans le cas courant où l’appelant dispose d’une URL sous forme de string provenant d’un message en amont. Les URL `data:` sont décodées en octets puis publiées ; les URI simples sont récupérées puis publiées. Les URL vides sont ignorées. Renvoie `self` pour permettre le chaînage.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L690" />

<h3 id="method-end-2">
  <kbd>méthode</kbd> `end`
</h3>

```python theme={"system"}
end() → None
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/pydantic/_internal/_model_construction.py#L448" />

<h3 id="method-model_post_init-4">
  <kbd>méthode</kbd> `model_post_init`
</h3>

```python theme={"system"}
model_post_init(context: 'Any') → None
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L452" />

<h3 id="method-output">
  <kbd>méthode</kbd> `output`
</h3>

```python theme={"system"}
output(content: 'str') → LLM
```

Ajoute un message assistant à output\_messages.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L572" />

<h3 id="method-record">
  <kbd>méthode</kbd> `record`
</h3>

```python theme={"system"}
record(
    input_messages: 'list[Message] | None' = None,
    output_messages: 'list[Message] | None' = None,
    media_attachments: 'list[MediaAttachment] | None' = None,
    usage: 'Usage | None' = None,
    reasoning: 'Reasoning | str | None' = None,
    response_id: 'str | None' = None,
    response_model: 'str | None' = None,
    finish_reasons: 'list[str] | None' = None,
    output_type: 'str | None' = None
) → LLM
```

Définit plusieurs champs d’appel LLM en un seul appel.

Les agents instrumentés manuellement construisent généralement un span de chat en attribuant au moins huit champs distincts à la fin d’un appel LLM (`input_messages`, `output_messages`, `usage`, `response_id`, etc.). `record(...)` les regroupe en un seul appel avec arguments nommés, ce qui permet de garder compact le code d’enregistrement.

Seuls les champs explicitement transmis (autres que `None`) sont appliqués ; les valeurs existantes sont conservées. `reasoning` accepte soit une instance de `Reasoning`, soit une simple chaîne de caractères (encapsulée automatiquement). Renvoie `self` pour permettre le chaînage.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L241" />

<h3 id="method-set_attributes">
  <kbd>méthode</kbd> `set_attributes`
</h3>

```python theme={"system"}
set_attributes(attributes: 'dict[str, Any]') → Self
```

Ajoute des attributs OTel arbitraires à ce span.

Passez un dict, que vous ayez une seule clé ou plusieurs : pour une seule clé, utilisez `span.set_attributes({"weave.tag": "value"})`. Équivalent de `Span.set_attributes` d'OTel.

Doit être appelée entre le début et la fin du span, c'est-à-dire à l'intérieur d'un bloc `with`. En dehors de cette fenêtre, l'appel est sans effet (no-op) et journalise un avertissement. Pour l'ingestion par lots, renseignez directement les champs déclarés de l'objet et passez celui-ci à `log_turn` / `log_conversation`.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L457" />

<h3 id="method-think">
  <kbd>méthode</kbd> `think`
</h3>

```python theme={"system"}
think(content: 'str') → LLM
```

Définit le contenu du raisonnement (chaîne de pensée).

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/types.py#L256" />

<h2 id="class-logresult">
  <kbd>classe</kbd> `LogResult`
</h2>

Résultat d’un appel log\_\* par lot.

**Champs Pydantic :**

* `conversation_id` : `<class 'str'>`
* `trace_ids` : `list[str]`
* `root_span_ids` : `list[str]`
* `span_count` : `<class 'int'>`

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/rich/markdown.py#L513" />

<h2 id="class-markdown">
  <kbd>classe</kbd> `Markdown`
</h2>

Un objet Markdown pouvant faire l’objet d’un rendu.

**Arguments :**

* <b>`markup`</b> (str) :  Une chaîne de caractères contenant du markdown.
* <b>`code_theme`</b> (str, facultatif) :  Thème Pygments pour les blocs de code. Valeur par défaut : "monokai". Voir [https://pygments.org/styles/](https://pygments.org/styles/) pour les thèmes de code disponibles.
* <b>`justify`</b> (JustifyMethod, facultatif) :  Valeur de justification des paragraphes. Valeur par défaut : None.
* <b>`style`</b> (Union\[str, Style], facultatif) :  Style facultatif à appliquer au markdown.
* <b>`hyperlinks`</b> (bool, facultatif) :  Active les liens hypertextes. Valeur par défaut : `True`.

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/rich/markdown.py#L549" />

<h3 id="method-__init__-6">
  <kbd>méthode</kbd> `__init__`
</h3>

```python theme={"system"}
__init__(
    markup: 'str',
    code_theme: 'str' = 'monokai',
    justify: 'JustifyMethod | None' = None,
    style: 'str | Style' = 'none',
    hyperlinks: 'bool' = True,
    inline_code_lexer: 'str | None' = None,
    inline_code_theme: 'str | None' = None
) → None
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/types.py#L243" />

<h2 id="class-mediaattachment">
  <kbd>classe</kbd> `MediaAttachment`
</h2>

Un média joint à un appel LLM.

Contient toujours une URI de réf. de contenu `weave://`. Les octets bruts, les URL de données et les URI HTTP simples sont convertis en objet `Content` publié par `LLM.attach_media` avant d’être stockés ici.

* <b>`inline_code_lexer`</b> : (str, facultatif) : analyseur lexical à utiliser si la coloration syntaxique du code en ligne est activée. Valeur par défaut : None.

* <b>`inline_code_theme`</b> : (Optional\[str], facultatif) : thème Pygments pour la coloration syntaxique du code en ligne, ou None pour désactiver la coloration. Valeur par défaut : None.
  **Champs Pydantic :**

* `ref`: `<class 'str'>`

* `modality`: `<class 'str'>`

* `mime_type`: `<class 'str'>`

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/types.py#L158" />

<h2 id="class-message">
  <kbd>classe</kbd> `Message`
</h2>

Un message unique au sein d’une conversation.

Deux styles de construction sont pris en charge :

1. Plat (rétrocompatible, pratique pour du texte brut) :  `Message(role="assistant", content="Hi there")`

2. Parties explicites (plus complet — prend en charge les appels d’outil, le mélange de raisonnement et de texte, ainsi que les médias intégrés) :  `Message(role="assistant", parts=[TextPart(content="Let me check"),  ToolCallPart(id="c1", name="get_weather", arguments='{...}')])`

Lorsque `parts` n’est pas vide, il constitue la représentation canonique. S’il est vide, le sérialiseur génère un unique TextPart (ou ToolCallResponsePart pour `role="tool"`) à partir des champs plats.

**Champs Pydantic :**

* `role`: `typing.Literal['user', 'assistant', 'system', 'tool']`
* `content`: `<class 'str'>`
* `tool_call_id`: `<class 'str'>`
* `tool_name`: `<class 'str'>`
* `parts`: `list[typing.Annotated[conversation.types.TextPart | conversation.types.ReasoningPart | conversation.types.ToolCallPart | conversation.types.ToolCallResponsePart | conversation.types.BlobPart | conversation.types.UriPart | conversation.types.FilePart, FieldInfo(annotation=NoneType, required=True, discriminator='type')]]`

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/types.py#L192" />

<h3 id="classmethod-assistant">
  <kbd>classmethod</kbd> `assistant`
</h3>

```python theme={"system"}
assistant(
    text: 'str' = '',
    tool_calls: 'list[ToolCallPart] | None' = None
) → Message
```

Construit un message de l’assistant avec, de manière facultative, du texte et des appels d’outil.

Utilisez du texte brut pour les réponses simples ; passez `tool_calls` lorsque l’assistant fait appel à un ou plusieurs outils. Lorsque les deux sont présents, le texte est émis sous la forme d’un `TextPart` initial, suivi de chaque `ToolCallPart`, afin que la vue du chat les affiche en ligne.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/types.py#L187" />

<h3 id="classmethod-system">
  <kbd>classmethod</kbd> `system`
</h3>

```python theme={"system"}
system(text: 'str') → Message
```

Construit un message système à partir de texte brut.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/types.py#L214" />

<h3 id="classmethod-tool_result">
  <kbd>classmethod</kbd> `tool_result`
</h3>

```python theme={"system"}
tool_result(call_id: 'str', output: 'Any') → Message
```

Construit un message de résultat d’outil pour un appel d’outil demandé précédemment.

`output` peut être une chaîne de caractères, un dict, une liste, un scalaire ou `None`. Le `ToolCallResponsePart` sous-jacent encode en JSON les valeurs autres que des chaînes.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/types.py#L182" />

<h3 id="classmethod-user">
  <kbd>classmethod</kbd> `user`
</h3>

```python theme={"system"}
user(text: 'str') → Message
```

Construit un message utilisateur à partir de texte brut.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L164" />

<h2 id="class-messagesprompt">
  <kbd>classe</kbd> `MessagesPrompt`
</h2>

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L168" />

<h3 id="method-__init__-7">
  <kbd>méthode</kbd> `__init__`
</h3>

```python theme={"system"}
__init__(messages: list[dict])
```

**Champs Pydantic :**

* `name` : `str | None`
* `description` : `str | None`
* `ref` : `trace.refs.ObjectRef | None`
* `messages` : `list[dict]`

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L180" />

<h3 id="method-format-2">
  <kbd>méthode</kbd> `format`
</h3>

```python theme={"system"}
format(**kwargs: Any) → list
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L172" />

<h3 id="method-format_message">
  <kbd>méthode</kbd> `format_message`
</h3>

```python theme={"system"}
format_message(message: dict, **kwargs: Any) → dict
```

Formate un seul message en remplaçant les variables de modèle.

Cette méthode délègue la logique de formatage proprement dite à la fonction autonome format\_message\_with\_template\_vars.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L183" />

<h3 id="classmethod-from_obj-5">
  <kbd>classmethod</kbd> `from_obj`
</h3>

```python theme={"system"}
from_obj(obj: WeaveObject) → Self
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/model.py#L25" />

<h2 id="class-model">
  <kbd>classe</kbd> `Model`
</h2>

Destiné à capturer une combinaison de code et de données qui traite une entrée. Par exemple, il peut appeler un LLM avec un prompt pour faire une prédiction ou générer du texte.

Lorsque vous modifiez les attributs ou le code qui définit votre modèle, ces modifications sont journalisées et la version est mise à jour. Vous pouvez ainsi comparer les prédictions entre les différentes versions de votre modèle. Utilisez cette fonctionnalité pour itérer sur vos prompts ou pour essayer le dernier LLM et comparer les prédictions obtenues avec différents paramètres

**Exemples :**

```python theme={"system"}
class YourModel(Model):
     attribute1: str
     attribute2: int

     @weave.op
     def predict(self, input_data: str) -> dict:
         # Placez ici la logique du modèle
         prediction = self.attribute1 + ' ' + input_data
         return {'pred': prediction}
```

**Champs Pydantic :**

* `name` : `str | None`
* `description` : `str | None`
* `ref` : `trace.refs.ObjectRef | None`

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/model.py#L51" />

<h3 id="method-get_infer_method">
  <kbd>méthode</kbd> `get_infer_method`
</h3>

```python theme={"system"}
get_infer_method() → Callable
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/monitor.py#L48" />

<h2 id="class-monitor">
  <kbd>classe</kbd> `Monitor`
</h2>

Configure un moniteur chargé d'attribuer automatiquement un score aux appels entrants.

Notez que le nom de l'op sera converti en réf. Weave à partir de l'entity et du projet du client Weave. Si vous travaillez sur plusieurs entities et projets avec le même client, vous devrez indiquer une réf. Weave entièrement qualifiée. Pour plus de détails, voir \_normalized\_op\_names.

**Exemples :**

```python theme={"system"}
import weave
from weave.scorers import ValidJSONScorer

json_scorer = ValidJSONScorer()

my_monitor = weave.Monitor(
     name="my-monitor",
     description="This is a test monitor",
     sampling_rate=0.5,
     op_names=["my_op"],
     query={
         "$expr": {
             "$gt": [
                 {
                         "$getField": "started_at"
                     },
                     {
                         "$literal": 1742540400
                     }
                 ]
             }
         }
     },
     scorers=[json_scorer],
)

my_monitor.activate()
```

**Champs Pydantic :**

* `name` : `str | None`
* `description` : `str | None`
* `ref` : `trace.refs.ObjectRef | None`
* `sampling_rate` : `<class 'float'>`
* `scorers` : `list[flow.scorer.Scorer]`
* `op_names` : `list[typing.Union[typing.Literal['genai.turn_ended'], str]]`
* `query` : `trace_server.interface.query.Query | None`
* `is_traced` : `<class 'bool'>`
* `active` : `<class 'bool'>`
* `scorer_debounce_config` : `flow.monitor.ScorerDebounceConfig | None`

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/monitor.py#L141" />

<h3 id="method-activate-2">
  <kbd>méthode</kbd> `activate`
</h3>

```python theme={"system"}
activate() → ObjectRef
```

Active le moniteur.

**Retourne :**
La réf. du moniteur.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/monitor.py#L152" />

<h3 id="method-deactivate-2">
  <kbd>méthode</kbd> `deactivate`
</h3>

```python theme={"system"}
deactivate() → ObjectRef
```

Désactive le moniteur.

**Retourne :**
La réf. du moniteur.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/monitor.py#L203" />

<h3 id="classmethod-from_obj-6">
  <kbd>classmethod</kbd> `from_obj`
</h3>

```python theme={"system"}
from_obj(obj: WeaveObject) → Self
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/monitor.py#L118" />

<h3 id="method-model_post_init-5">
  <kbd>méthode</kbd> `model_post_init`
</h3>

```python theme={"system"}
model_post_init(context: Any) → None
```

Normalise `op_names` lors de la construction lorsqu’un client est disponible.

La publication ne dispose d’aucun hook par objet. Pour couvrir également un simple `weave.publish(monitor)` (sans `activate()`), les noms courts sont donc développés ici : quiconque publie a généralement déjà appelé `weave.init`, si bien que le client est défini au moment de la construction du moniteur.

Dans plusieurs cas d’usage, la construction se fait sans client : tests unitaires, inspection ou désérialisation d’un moniteur stocké dans un worker, par exemple. La vérification sur `get_weave_client()` autorise la construction sans client. La normalisation n’a alors pas lieu, mais cela ne devrait pas poser de problème, car les moniteurs stockés contiennent déjà des réf. complètes.

Il existe un cas limite dans lequel un moniteur peut être créé avec le SDK sans être normalisé : lorsque l’utilisateur construit le moniteur, appelle ensuite weave.init, puis le publie. Pour contourner ce problème, vous pouvez appeler `activate()` ou `deactivate()`.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/object/obj.py#L26" />

<h2 id="class-object">
  <kbd>classe</kbd> `Object`
</h2>

Classe de base pour les objets Weave pouvant être suivis et versionnés.

Cette classe étend la classe BaseModel de Pydantic afin de fournir des fonctionnalités propres à Weave pour le suivi, le référencement et la sérialisation des objets. Les objets peuvent avoir un nom, une description et des références, qui permettent de les stocker dans le système Weave et de les en récupérer.

**Attributs :**

* <b>`name`</b> (str | None) :  Nom lisible de l’objet.
* <b>`description`</b> (str | None) :  Description de ce que représente l’objet.
* <b>`ref`</b> (ObjectRef | None) :  Référence à l’objet dans le système Weave.

**Exemples :**

```python theme={"system"}
# Créer un objet simple
obj = Object(name="my_object", description="A test object")

# Créer un objet à partir d’un URI
obj = Object.from_uri("weave:///entity/project/object:digest")
```

**Champs Pydantic :**

* `name` : `str | None`
* `description` : `str | None`
* `ref` : `trace.refs.ObjectRef | None`

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/object/obj.py#L65" />

<h3 id="classmethod-from_uri">
  <kbd>classmethod</kbd> `from_uri`
</h3>

```python theme={"system"}
from_uri(uri: str, objectify: bool = True) → Self
```

Crée une instance d’objet à partir d’un URI Weave.

**Arguments :**

* <b>`uri`</b> (str) :  L’URI Weave qui pointe vers l’objet.
* <b>`objectify`</b> (bool) :  Indique si le résultat doit être converti en objet. Valeur par défaut : True.

**Retourne :**

* <b>`Self`</b> :  Une instance de la classe créée à partir de l’URI.

**Exceptions levées :**

* <b>`NotImplementedError`</b> :  Si la classe n'implémente pas les  méthodes requises pour la désérialisation.

**Exemples :**

```python theme={"system"}
obj = MyObject.from_uri("weave:///entity/project/object:digest")
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/object/obj.py#L108" />

<h3 id="classmethod-handle_relocatable_object">
  <kbd>classmethod</kbd> `handle_relocatable_object`
</h3>

```python theme={"system"}
handle_relocatable_object(
    v: Any,
    handler: ValidatorFunctionWrapHandler,
    info: ValidationInfo
) → Any
```

Gère la validation des objets relocalisables, notamment ObjectRef et WeaveObject.

Ce validateur traite les cas particuliers où l’entrée est un ObjectRef ou un WeaveObject qui doit être correctement converti en instance standard de Object. Il garantit que les références sont conservées et que les types ignorés sont correctement pris en charge au cours du processus de validation.

**Arguments :**

* <b>`v`</b> (Any) :  La valeur à valider.
* <b>`handler`</b> (ValidatorFunctionWrapHandler) :  Le gestionnaire de validation pydantic standard.
* <b>`info`</b> (ValidationInfo) :  Informations sur le contexte de validation.

**Retourne :**

* <b>`Any`</b> :  L’instance d’objet validée.

**Exemples :**
Cette méthode est appelée automatiquement lors de la création et de la validation d’un objet. Elle gère notamment les cas suivants : \`\`\`python

<h1 id="when-an-objectref-is-passed">
  Lorsqu’un ObjectRef est transmis
</h1>

obj = MyObject(some\_object\_ref)

<h1 id="when-a-weaveobject-is-passed">
  Lorsqu’un WeaveObject est transmis
</h1>

obj = MyObject(some\_weave\_object)

````

---

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/object/obj.py#L91" />

### <kbd>classmethod</kbd> `strip_weave_serialization_metadata`

```python
strip_weave_serialization_metadata(data: Any) → Any
````

Supprime les métadonnées de sérialisation de Weave des entrées de type dict.

La sérialisation de Weave ajoute \_type, \_class\_name et \_bases aux dicts afin de permettre la reconstruction du type. Il ne s’agit pas de véritables champs du modèle : ils doivent donc être supprimés avant la validation Pydantic, qui utilise extra="forbid".

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/refs.py#L183" />

<h2 id="class-objectref">
  <kbd>classe</kbd> `ObjectRef`
</h2>

ObjectRef(entity: 'str', project: 'str', name: 'str', \_digest: 'str | Future\[str]', \_extra: 'tuple\[str | Future\[str], ...]' = ())

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/../../../../weave/trace/refs/__init__" />

<h3 id="method-__init__-8">
  <kbd>méthode</kbd> `__init__`
</h3>

```python theme={"system"}
__init__(
    entity: 'str',
    project: 'str',
    name: 'str',
    _digest: 'str | Future[str]',
    _extra: 'tuple[str | Future[str], ]' = ()
) → None
```

***

<h4 id="property-digest">
  <kbd>propriété</kbd> digest
</h4>

***

<h4 id="property-extra">
  <kbd>propriété</kbd> extra
</h4>

***

<h4 id="property-is_digest_resolved">
  <kbd>propriété</kbd> is\_digest\_resolved
</h4>

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/refs.py#L191" />

<h3 id="method-as_param_dict">
  <kbd>méthode</kbd> `as_param_dict`
</h3>

```python theme={"system"}
as_param_dict() → dict
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/refs.py#L287" />

<h3 id="method-delete">
  <kbd>méthode</kbd> `delete`
</h3>

```python theme={"system"}
delete() → None
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/refs.py#L243" />

<h3 id="method-get">
  <kbd>méthode</kbd> `get`
</h3>

```python theme={"system"}
get(objectify: 'bool' = True) → Any
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/refs.py#L271" />

<h3 id="method-is_descended_from">
  <kbd>méthode</kbd> `is_descended_from`
</h3>

```python theme={"system"}
is_descended_from(potential_ancestor: 'ObjectRef') → bool
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/refs.py#L93" />

<h3 id="method-maybe_parse_uri">
  <kbd>méthode</kbd> `maybe_parse_uri`
</h3>

```python theme={"system"}
maybe_parse_uri(s: 'str') → AnyRef | None
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/refs.py#L294" />

<h3 id="method-parse_uri">
  <kbd>méthode</kbd> `parse_uri`
</h3>

```python theme={"system"}
parse_uri(uri: 'str') → ObjectRef
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/refs.py#L173" />

<h3 id="method-with_attr">
  <kbd>méthode</kbd> `with_attr`
</h3>

```python theme={"system"}
with_attr(attr: 'str') → Self
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/refs.py#L165" />

<h3 id="method-with_extra">
  <kbd>méthode</kbd> `with_extra`
</h3>

```python theme={"system"}
with_extra(extra: 'tuple[str | Future[str], ]') → Self
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/refs.py#L176" />

<h3 id="method-with_index">
  <kbd>méthode</kbd> `with_index`
</h3>

```python theme={"system"}
with_index(index: 'int') → Self
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/refs.py#L179" />

<h3 id="method-with_item">
  <kbd>méthode</kbd> `with_item`
</h3>

```python theme={"system"}
with_item(item_digest: 'str | Future[str]') → Self
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/refs.py#L170" />

<h3 id="method-with_key">
  <kbd>méthode</kbd> `with_key`
</h3>

```python theme={"system"}
with_key(key: 'str') → Self
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L83" />

<h2 id="class-prompt">
  <kbd>classe</kbd> `Prompt`
</h2>

**Champs Pydantic :**

* `name` : `str | None`
* `description` : `str | None`
* `ref` : `trace.refs.ObjectRef | None`

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L84" />

<h3 id="method-format-3">
  <kbd>méthode</kbd> `format`
</h3>

```python theme={"system"}
format(**kwargs: Any) → Any
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L494" />

<h2 id="class-savedview">
  <kbd>classe</kbd> `SavedView`
</h2>

Une classe de style fluent permettant de manipuler les objets SavedView.

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L500" />

<h3 id="method-__init__-9">
  <kbd>méthode</kbd> `__init__`
</h3>

```python theme={"system"}
__init__(view_type: 'str' = 'traces', label: 'str' = 'SavedView') → None
```

***

<h4 id="property-entity">
  <kbd>propriété</kbd> entity
</h4>

***

<h4 id="property-label">
  <kbd>propriété</kbd> label
</h4>

***

<h4 id="property-project">
  <kbd>propriété</kbd> project
</h4>

***

<h4 id="property-view_type">
  <kbd>propriété</kbd> view\_type
</h4>

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L624" />

<h3 id="method-add_column">
  <kbd>méthode</kbd> `add_column`
</h3>

```python theme={"system"}
add_column(path: 'str | ObjectPath', label: 'str | None' = None) → SavedView
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L633" />

<h3 id="method-add_columns">
  <kbd>méthode</kbd> `add_columns`
</h3>

```python theme={"system"}
add_columns(*columns: 'str') → SavedView
```

Méthode utilitaire permettant d’ajouter plusieurs colonnes à la grille.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L525" />

<h3 id="method-add_filter">
  <kbd>méthode</kbd> `add_filter`
</h3>

```python theme={"system"}
add_filter(
    field: 'str',
    operator: 'str',
    value: 'Any | None' = None
) → SavedView
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L599" />

<h3 id="method-add_sort">
  <kbd>méthode</kbd> `add_sort`
</h3>

```python theme={"system"}
add_sort(field: 'str', direction: 'SortDirection') → SavedView
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L664" />

<h3 id="method-column_index">
  <kbd>méthode</kbd> `column_index`
</h3>

```python theme={"system"}
column_index(path: 'int | str | ObjectPath') → int
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L579" />

<h3 id="method-filter_op">
  <kbd>méthode</kbd> `filter_op`
</h3>

```python theme={"system"}
filter_op(op_name: 'str | None') → SavedView
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L849" />

<h3 id="method-get_calls">
  <kbd>méthode</kbd> `get_calls`
</h3>

```python theme={"system"}
get_calls(
    limit: 'int | None' = None,
    offset: 'int | None' = None,
    include_costs: 'bool' = False,
    include_feedback: 'bool' = False,
    all_columns: 'bool' = False
) → CallsIter
```

Obtenir les appels correspondant aux filtres et aux paramètres de cette vue enregistrée.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L907" />

<h3 id="method-get_known_columns">
  <kbd>méthode</kbd> `get_known_columns`
</h3>

```python theme={"system"}
get_known_columns(num_calls_to_query: 'int | None' = None) → list[str]
```

Obtenir l’ensemble des colonnes dont l’existence est connue.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L917" />

<h3 id="method-get_table_columns">
  <kbd>méthode</kbd> `get_table_columns`
</h3>

```python theme={"system"}
get_table_columns() → list[TableColumn]
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L618" />

<h3 id="method-hide_column">
  <kbd>méthode</kbd> `hide_column`
</h3>

```python theme={"system"}
hide_column(col_name: 'str') → SavedView
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L639" />

<h3 id="method-insert_column">
  <kbd>méthode</kbd> `insert_column`
</h3>

```python theme={"system"}
insert_column(
    idx: 'int',
    path: 'str | ObjectPath',
    label: 'str | None' = None
) → SavedView
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L977" />

<h3 id="classmethod-load-2">
  <kbd>classmethod</kbd> `load`
</h3>

```python theme={"system"}
load(ref: 'str') → Self
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L742" />

<h3 id="method-page_size">
  <kbd>méthode</kbd> `page_size`
</h3>

```python theme={"system"}
page_size(page_size: 'int') → SavedView
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L712" />

<h3 id="method-pin_column_left">
  <kbd>méthode</kbd> `pin_column_left`
</h3>

```python theme={"system"}
pin_column_left(col_name: 'str') → SavedView
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L722" />

<h3 id="method-pin_column_right">
  <kbd>méthode</kbd> `pin_column_right`
</h3>

```python theme={"system"}
pin_column_right(col_name: 'str') → SavedView
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L684" />

<h3 id="method-remove_column">
  <kbd>méthode</kbd> `remove_column`
</h3>

```python theme={"system"}
remove_column(path: 'int | str | ObjectPath') → SavedView
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L703" />

<h3 id="method-remove_columns">
  <kbd>méthode</kbd> `remove_columns`
</h3>

```python theme={"system"}
remove_columns(*columns: 'str') → SavedView
```

Supprime des colonnes de la vue enregistrée.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L548" />

<h3 id="method-remove_filter">
  <kbd>méthode</kbd> `remove_filter`
</h3>

```python theme={"system"}
remove_filter(index_or_field: 'int | str') → SavedView
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L563" />

<h3 id="method-remove_filters">
  <kbd>méthode</kbd> `remove_filters`
</h3>

```python theme={"system"}
remove_filters() → SavedView
```

Supprime tous les filtres de la vue enregistrée.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L521" />

<h3 id="method-rename">
  <kbd>méthode</kbd> `rename`
</h3>

```python theme={"system"}
rename(label: 'str') → SavedView
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L678" />

<h3 id="method-rename_column">
  <kbd>méthode</kbd> `rename_column`
</h3>

```python theme={"system"}
rename_column(path: 'int | str | ObjectPath', label: 'str') → SavedView
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L834" />

<h3 id="method-save-3">
  <kbd>méthode</kbd> `save`
</h3>

```python theme={"system"}
save() → SavedView
```

Publie la vue enregistrée sur le serveur.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L658" />

<h3 id="method-set_columns">
  <kbd>méthode</kbd> `set_columns`
</h3>

```python theme={"system"}
set_columns(*columns: 'str') → SavedView
```

Définit les colonnes à afficher dans la grille.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L612" />

<h3 id="method-show_column">
  <kbd>méthode</kbd> `show_column`
</h3>

```python theme={"system"}
show_column(col_name: 'str') → SavedView
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L606" />

<h3 id="method-sort_by">
  <kbd>méthode</kbd> `sort_by`
</h3>

```python theme={"system"}
sort_by(field: 'str', direction: 'SortDirection') → SavedView
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L890" />

<h3 id="method-to_grid">
  <kbd>méthode</kbd> `to_grid`
</h3>

```python theme={"system"}
to_grid(limit: 'int | None' = None) → Grid
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L771" />

<h3 id="method-to_rich_table_str">
  <kbd>méthode</kbd> `to_rich_table_str`
</h3>

```python theme={"system"}
to_rich_table_str() → str
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L754" />

<h3 id="method-ui_url">
  <kbd>méthode</kbd> `ui_url`
</h3>

```python theme={"system"}
ui_url() → str | None
```

URL permettant d’afficher cette vue enregistrée dans l’interface utilisateur.

Notez qu’il s’agit de la page de « résultats » contenant les traces, etc., et non de l’URL de l’objet vue.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/saved_view.py#L732" />

<h3 id="method-unpin_column">
  <kbd>méthode</kbd> `unpin_column`
</h3>

```python theme={"system"}
unpin_column(col_name: 'str') → SavedView
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/scorer.py#L30" />

<h2 id="class-scorer">
  <kbd>classe</kbd> `Scorer`
</h2>

**Champs Pydantic :**

* `name` : `str | None`
* `description` : `str | None`
* `ref` : `trace.refs.ObjectRef | None`
* `column_map` : `dict[str, str] | None`

***

<h4 id="property-display_name">
  <kbd>propriété</kbd> display\_name
</h4>

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/scorer.py#L57" />

<h3 id="classmethod-from_obj-7">
  <kbd>classmethod</kbd> `from_obj`
</h3>

```python theme={"system"}
from_obj(obj: WeaveObject) → Self
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/flow/scorer.py#L36" />

<h3 id="method-model_post_init-6">
  <kbd>méthode</kbd> `model_post_init`
</h3>

```python theme={"system"}
model_post_init(context: Any) → None
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/op.py#L49" />

<h3 id="method-score">
  <kbd>méthode</kbd> `score`
</h3>

```python theme={"system"}
score(output: Any, **kwargs: Any) → Any
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/op.py#L53" />

<h3 id="method-summarize-2">
  <kbd>méthode</kbd> `summarize`
</h3>

```python theme={"system"}
summarize(score_rows: list) → dict | None
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/_deprecated.py#L119" />

<h2 id="class-session">
  <kbd>classe</kbd> `Session`
</h2>

Alias obsolète de :class:`weave.Conversation`.

Accepte les anciens champs de constructeur `session_id` / `session_name` et les expose également sous forme de propriétés en lecture/écriture, redirigées vers `conversation_id` / `conversation_name`. Dans la classe `Session` d’origine, il s’agissait de champs de modèle : l’ancien code qui lit ou attribue `s.session_id` continue donc de fonctionner.

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/_deprecated.py#L129" />

<h3 id="method-__init__-10">
  <kbd>méthode</kbd> `__init__`
</h3>

```python theme={"system"}
__init__(**data: 'Any') → None
```

**Champs Pydantic :**

* `conversation_id` : `<class 'str'>`
* `conversation_name` : `<class 'str'>`
* `agent_name` : `<class 'str'>`
* `model` : `<class 'str'>`
* `agent_id` : `<class 'str'>`
* `agent_description` : `<class 'str'>`
* `agent_version` : `<class 'str'>`
* `include_content` : `<class 'bool'>`
* `continue_parent_trace` : `<class 'bool'>`
* `attributes` : `dict[str, typing.Any]`

<h4 id="property-session_id">
  <kbd>propriété</kbd> session\_id
</h4>

Alias obsolète de :attr:`conversation_id`.

***

<h4 id="property-session_name">
  <kbd>propriété</kbd> session\_name
</h4>

Alias obsolète de :attr:`conversation_name`.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L88" />

<h2 id="class-stringprompt">
  <kbd>classe</kbd> `StringPrompt`
</h2>

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L92" />

<h3 id="method-__init__-11">
  <kbd>méthode</kbd> `__init__`
</h3>

```python theme={"system"}
__init__(content: str)
```

**Champs Pydantic :**

* `name`: `str | None`
* `description`: `str | None`
* `ref`: `trace.refs.ObjectRef | None`
* `content`: `<class 'str'>`

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L96" />

<h3 id="method-format-4">
  <kbd>méthode</kbd> `format`
</h3>

```python theme={"system"}
format(**kwargs: Any) → str
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/prompt/prompt.py#L99" />

<h3 id="classmethod-from_obj-8">
  <kbd>classmethod</kbd> `from_obj`
</h3>

```python theme={"system"}
from_obj(obj: WeaveObject) → Self
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L732" />

<h2 id="class-subagent">
  <kbd>classe</kbd> `SubAgent`
</h2>

Un appel d’agent délégué au sein d’un tour de conversation.

Correspond à un span OTel `invoke_agent` imbriqué dans la même trace.

**Champs Pydantic :**

* `name`: `<class 'str'>`
* `model`: `<class 'str'>`
* `agent_id`: `<class 'str'>`
* `agent_description`: `<class 'str'>`
* `agent_version`: `<class 'str'>`
* `system_instructions`: `list[str]`
* `started_at`: `datetime.datetime | None`
* `ended_at`: `datetime.datetime | None`

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/typing_extensions.py#L257" />

<h3 id="method-add_event-2">
  <kbd>méthode</kbd> `add_event`
</h3>

```python theme={"system"}
add_event(
    name: 'str',
    attributes: 'dict[str, Any] | None' = None,
    timestamp: 'datetime | None' = None
) → Self
```

Enregistre un événement de span OTel à un instant donné dans ce span.

.. deprecated:
\`\`\`      Enregistrez plutôt ces données avec `set_attributes`. OpenTelemetry      abandonne progressivement l’API Span Event (`Span.add_event`).      `add_event` fonctionne toujours et les données d’événements de span existantes restent valides.      Voir [https://opentelemetry.io/blog/2026/deprecating-span-events/](https://opentelemetry.io/blog/2026/deprecating-span-events/).

````
À utiliser pour les données de marqueur ou de cycle de vie : demandes d’autorisation (par ex. ``weave.permission_request``), transitions de cycle de vie (par ex. ``spawned`` / ``streaming`` / ``finished``) ou tout jalon personnalisé survenant à un instant précis pendant la durée de vie du span (contrairement à un attribut, qui est une propriété du span dans son ensemble). 

Doit être appelée entre le début et la fin du span (à l’intérieur du bloc ``with``). En dehors de cette fenêtre, l’appel n’a aucun effet et journalise un avertissement. 

---

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L843" />

### <kbd>méthode</kbd> `end`

```python
end() → None
````

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L749" />

<h3 id="method-llm">
  <kbd>méthode</kbd> `llm`
</h3>

```python theme={"system"}
llm(
    model: 'str' = '',
    provider_name: 'str' = '',
    system_instructions: 'list[str] | None' = None
) → LLM
```

Démarre un appel LLM au sein de ce sous-agent.

Définit la contextvar `_current_llm` afin que le LLM soit accessible via `get_current_llm()`, qu'un gestionnaire de contexte soit utilisé ou non.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L773" />

<h3 id="method-record-2">
  <kbd>méthode</kbd> `record`
</h3>

```python theme={"system"}
record(
    name: 'str | None' = None,
    model: 'str | None' = None,
    system_instructions: 'list[str] | None' = None,
    agent_id: 'str | None' = None,
    agent_description: 'str | None' = None,
    agent_version: 'str | None' = None
) → SubAgent
```

Définit plusieurs champs du sous-agent en un seul appel.

Regroupe en un seul appel à arguments nommés les affectations champ par champ qu’un agent instrumenté manuellement effectuerait sinon sur un sous-agent (`system_instructions`, `agent_id`, ...). Seuls les champs explicitement transmis (différents de `None`) sont appliqués ; les valeurs existantes sont conservées. Renvoie `self` pour permettre le chaînage. Fonctionne comme `Turn.record` / `LLM.record`.

Remarque : dans le cas du streaming (`with`), le nom du span du sous-agent est défini à partir de `name` lors de `__enter__`. Si vous souhaitez que le nom du span reflète `name`, définissez-le donc via `start_subagent` / `turn.subagent` plutôt que via `record` ; `record` met tout de même à jour l’attribut `gen_ai.agent.name`.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L241" />

<h3 id="method-set_attributes-2">
  <kbd>méthode</kbd> `set_attributes`
</h3>

```python theme={"system"}
set_attributes(attributes: 'dict[str, Any]') → Self
```

Appose des attributs OTel arbitraires sur ce span.

Passez un dict, que vous ayez une seule clé ou plusieurs : pour une seule clé, utilisez `span.set_attributes({"weave.tag": "value"})`. Équivalent de `Span.set_attributes` d'OTel.

Doit être appelé entre le début et la fin du span, c'est-à-dire à l'intérieur d'un bloc `with`. En dehors de cette fenêtre, l'appel est sans effet (no-op) et journalise un avertissement. Pour l'ingestion par lots, renseignez directement les champs déclarés de l'objet, puis passez-le à `log_turn` / `log_conversation`.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L769" />

<h3 id="method-tool">
  <kbd>méthode</kbd> `tool`
</h3>

```python theme={"system"}
tool(name: 'str', arguments: 'str' = '', tool_call_id: 'str' = '') → Tool
```

Démarre une exécution d’outil dans ce sous-agent.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/table.py#L9" />

<h2 id="class-table">
  <kbd>classe</kbd> `Table`
</h2>

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/table.py#L12" />

<h3 id="method-__init__-12">
  <kbd>méthode</kbd> `__init__`
</h3>

```python theme={"system"}
__init__(rows: 'list[dict]') → None
```

***

<h4 id="property-rows">
  <kbd>propriété</kbd> rows
</h4>

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/table.py#L50" />

<h3 id="method-append-2">
  <kbd>méthode</kbd> `append`
</h3>

```python theme={"system"}
append(row: 'dict') → None
```

Ajoute une ligne au tableau.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/table.py#L56" />

<h3 id="method-pop">
  <kbd>méthode</kbd> `pop`
</h3>

```python theme={"system"}
pop(index: 'int') → None
```

Supprime du tableau la ligne située à l’index spécifié.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/util.py#L105" />

<h2 id="class-contextawarethread">
  <kbd>classe</kbd> `ContextAwareThread`
</h2>

Un Thread qui exécute des fonctions avec le contexte de l’appelant.

Il s’agit d’un remplacement direct de threading.Thread qui garantit que les appels se comportent comme prévu à l’intérieur du thread. Weave exige que certaines contextvars soient définies (voir call\_context.py), mais les nouveaux threads ne copient pas automatiquement le contexte du parent, ce qui peut entraîner la perte du contexte d’appel, ce qui est fâcheux ! Cette classe automatise la copie des contextvars : ce thread « fonctionne tout simplement », comme l’utilisateur s’y attend sans doute.

Vous pouvez obtenir le même résultat sans cette classe en écrivant plutôt :

```python theme={"system"}
def run_with_context(func, *args, **kwargs):
     context = copy_context()
     def wrapper():
         context.run(func, *args, **kwargs)
     return wrapper

thread = threading.Thread(target=run_with_context(your_func, *args, **kwargs))
thread.start()
```

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/util.py#L129" />

<h3 id="method-__init__-13">
  <kbd>méthode</kbd> `__init__`
</h3>

```python theme={"system"}
__init__(*args: 'Any', **kwargs: 'Any') → None
```

***

<h4 id="property-daemon">
  <kbd>property</kbd> daemon
</h4>

Valeur booléenne indiquant si ce thread est un thread démon.

Elle doit être définie avant l’appel à start(), sinon une RuntimeError est levée. Sa valeur initiale est héritée du thread qui le crée ; le thread principal n’étant pas un thread démon, tous les threads créés dans le thread principal ont par défaut daemon = False.

L’ensemble du programme Python se termine lorsqu’il ne reste plus que des threads démons.

***

<h4 id="property-ident">
  <kbd>property</kbd> ident
</h4>

Identifiant de ce thread, ou None s’il n’a pas encore été démarré.

Il s’agit d’un entier non nul. Voir la fonction get\_ident(). Les identifiants de thread peuvent être réutilisés lorsqu’un thread se termine et qu’un autre thread est créé. L’identifiant reste disponible même après la fin du thread.

***

<h4 id="property-name">
  <kbd>property</kbd> name
</h4>

Chaîne de caractères utilisée uniquement à des fins d’identification.

Elle n’a aucune valeur sémantique. Plusieurs threads peuvent porter le même nom. Le nom initial est défini par le constructeur.

***

<h4 id="property-native_id">
  <kbd>property</kbd> native\_id
</h4>

Identifiant entier natif de ce thread, ou None s’il n’a pas encore été démarré.

Il s’agit d’un entier positif ou nul. Voir la fonction get\_native\_id(). Cette valeur correspond à l’identifiant du thread tel qu’indiqué par le noyau.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/util.py#L133" />

<h3 id="method-run-2">
  <kbd>méthode</kbd> `run`
</h3>

```python theme={"system"}
run() → None
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/api.py#L535" />

<h2 id="class-threadcontext">
  <kbd>classe</kbd> `ThreadContext`
</h2>

Objet de contexte donnant accès aux informations sur le thread et le tour de conversation en cours.

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/api.py#L538" />

<h3 id="method-__init__-14">
  <kbd>méthode</kbd> `__init__`
</h3>

```python theme={"system"}
__init__(thread_id: 'str | None')
```

Initialise ThreadContext avec le thread\_id spécifié.

**Arguments :**

***

<h4 id="property-thread_id">
  <kbd>property</kbd> thread\_id
</h4>

Obtenir le thread\_id de ce contexte.

* <b>`thread_id`</b> : L’identifiant du thread de ce contexte, ou None si le suivi est désactivé.
  **Retourne :**
  L’identifiant du thread, ou None si le suivi des threads est désactivé.

***

<h4 id="property-turn_id">
  <kbd>property</kbd> turn\_id
</h4>

Obtient le turn\_id actuel à partir du contexte actif.

**Retourne :**
Le turn\_id actuel s’il est défini, sinon None.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/util.py#L45" />

<h2 id="class-contextawarethreadpoolexecutor">
  <kbd>classe</kbd> `ContextAwareThreadPoolExecutor`
</h2>

Un ThreadPoolExecutor qui exécute des fonctions avec le contexte de l’appelant.

Cette classe remplace directement concurrent.futures.ThreadPoolExecutor et garantit que les appels Weave se comportent comme prévu dans l’exécuteur. Weave exige que certaines contextvars soient définies (voir call\_context.py), mais les nouveaux threads ne copient pas automatiquement le contexte du thread parent, ce qui peut entraîner la perte du contexte d’appel, ce qu’il faut éviter ! Cette classe automatise la copie des contextvars, de sorte que cet exécuteur « fonctionne tout simplement », comme l’utilisateur s’y attend probablement.

Vous pouvez obtenir le même résultat sans cette classe en écrivant plutôt :

```python theme={"system"}
with concurrent.futures.ThreadPoolExecutor() as executor:
     contexts = [copy_context() for _ in range(len(vals))]

     def _wrapped_fn(*args):
         return contexts.pop().run(fn, *args)

     executor.map(_wrapped_fn, vals)
```

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/util.py#L68" />

<h3 id="method-__init__-15">
  <kbd>méthode</kbd> `__init__`
</h3>

```python theme={"system"}
__init__(*args: 'Any', **kwargs: 'Any') → None
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/util.py#L77" />

<h3 id="method-map">
  <kbd>méthode</kbd> `map`
</h3>

```python theme={"system"}
map(
    fn: 'Callable',
    *iterables: 'Iterable[Any]',
    timeout: 'float | None' = None,
    chunksize: 'int' = 1
) → Iterator
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/util.py#L73" />

<h3 id="method-submit">
  <kbd>méthode</kbd> `submit`
</h3>

```python theme={"system"}
submit(fn: 'Callable', *args: 'Any', **kwargs: 'Any') → Any
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L326" />

<h2 id="class-tool">
  <kbd>classe</kbd> `Tool`
</h2>

Une exécution d’outil. Correspond à un span OTel execute\_tool.

`arguments` et `result` utilisent l’annotation `JSONString` : les appelants peuvent attribuer un dict, une liste ou un scalaire, que le SDK encode en JSON lors de la construction ou de l’attribution. La valeur stockée est toujours une chaîne de caractères, conformément au format de transmission défini par les conventions sémantiques GenAI.

**Champs Pydantic :**

* `name` : `<class 'str'>`
* `arguments` : `<class 'str'>`
* `result` : `<class 'str'>`
* `tool_call_id` : `<class 'str'>`
* `tool_type` : `<class 'str'>`
* `tool_description` : `<class 'str'>`
* `tool_definitions` : `<class 'str'>`
* `duration_ms` : `<class 'int'>`
* `started_at` : `datetime.datetime | None`
* `ended_at` : `datetime.datetime | None`

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/typing_extensions.py#L257" />

<h3 id="method-add_event-3">
  <kbd>méthode</kbd> `add_event`
</h3>

```python theme={"system"}
add_event(
    name: 'str',
    attributes: 'dict[str, Any] | None' = None,
    timestamp: 'datetime | None' = None
) → Self
```

Enregistre un événement de span OTel à un instant donné au sein de ce span.

.. deprecated:
\`\`\`      Enregistrez plutôt ces données avec `set_attributes`. OpenTelemetry est      en train d’abandonner progressivement l’API Span Event (`Span.add_event`).      `add_event` fonctionne toujours et les données d’événements de span existantes restent valides.      Voir [https://opentelemetry.io/blog/2026/deprecating-span-events/](https://opentelemetry.io/blog/2026/deprecating-span-events/).

````
À utiliser pour les données de marqueur ou de cycle de vie : demandes d’autorisation (par ex. ``weave.permission_request``), transitions de cycle de vie (par ex. ``spawned`` / ``streaming`` / ``finished``) ou tout jalon personnalisé qui survient à un instant précis pendant la durée de vie du span (contrairement à un attribut, qui est une propriété du span dans son ensemble). 

Doit être appelée entre le début et la fin du span (dans le bloc ``with``). En dehors de cette fenêtre, l’appel est sans effet et journalise un avertissement. 

---

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L382" />

### <kbd>method</kbd> `end`

```python
end() → None
````

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L241" />

<h3 id="method-set_attributes-3">
  <kbd>méthode</kbd> `set_attributes`
</h3>

```python theme={"system"}
set_attributes(attributes: 'dict[str, Any]') → Self
```

Appose des attributs OTel arbitraires sur ce span.

Passez un dict, que vous ayez une seule clé ou plusieurs : pour une seule clé, utilisez `span.set_attributes({"weave.tag": "value"})`. Équivalent de `Span.set_attributes` d'OTel.

Doit être appelée entre le début et la fin du span, c'est-à-dire à l'intérieur d'un bloc `with`. En dehors de cet intervalle, l'appel n'a aucun effet (no-op) et journalise un avertissement. Pour une ingestion par lots, renseignez directement les champs déclarés de l'objet, puis passez-le à `log_turn` / `log_conversation`.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L882" />

<h2 id="class-turn">
  <kbd>classe</kbd> `Turn`
</h2>

Un échange entre l’utilisateur et l’agent. Correspond à un span OTel invoke\_agent.

Par défaut, chaque tour de conversation démarre sa propre trace OTel (`continue_parent_trace=False`) : l’onglet Agents affiche donc une trace par tour de conversation. Définissez `continue_parent_trace=True` sur la Conversation (ou directement sur le Turn) lorsqu’une trace externe est déjà active et que vous souhaitez y imbriquer l’appel d’agent — par exemple, dans une requête instrumentée par fastapi.

**Champs Pydantic :**

* `agent_name`: `<class 'str'>`
* `model`: `<class 'str'>`
* `agent_id`: `<class 'str'>`
* `agent_description`: `<class 'str'>`
* `agent_version`: `<class 'str'>`
* `system_instructions`: `list[str]`
* `messages`: `list[conversation.types.Message]`
* `spans`: `list[conversation.conversation.LLM | conversation.conversation.Tool | conversation.conversation.SubAgent]`
* `continue_parent_trace`: `<class 'bool'>`
* `started_at`: `datetime.datetime | None`
* `ended_at`: `datetime.datetime | None`

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/typing_extensions.py#L257" />

<h3 id="method-add_event-4">
  <kbd>méthode</kbd> `add_event`
</h3>

```python theme={"system"}
add_event(
    name: 'str',
    attributes: 'dict[str, Any] | None' = None,
    timestamp: 'datetime | None' = None
) → Self
```

Enregistre un événement de span OTel à un instant donné dans ce span.

.. deprecated:
\`\`\`      Enregistrez plutôt ces données avec `set_attributes`. OpenTelemetry      abandonne progressivement l’API Span Event (`Span.add_event`).      `add_event` fonctionne toujours et les données d’événements de span existantes restent valides.      Voir [https://opentelemetry.io/blog/2026/deprecating-span-events/](https://opentelemetry.io/blog/2026/deprecating-span-events/).

````
À utiliser pour les données de marqueur ou de cycle de vie : demandes d’autorisation (par ex. ``weave.permission_request``), transitions de cycle de vie (par ex. ``spawned`` / ``streaming`` / ``finished``) ou tout jalon personnalisé qui survient à un instant précis pendant la durée de vie du span (contrairement à un attribut, qui est une propriété du span dans son ensemble). 

Doit être appelé entre le début et la fin du span (à l’intérieur du bloc ``with``). En dehors de cet intervalle, l’appel est sans effet et journalise un avertissement. 

---

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L1033" />

### <kbd>method</kbd> `end`

```python
end() → None
````

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L916" />

<h3 id="method-llm-2">
  <kbd>méthode</kbd> `llm`
</h3>

```python theme={"system"}
llm(
    model: 'str' = '',
    provider_name: 'str' = '',
    system_instructions: 'list[str] | None' = None
) → LLM
```

Démarre un appel LLM (span de chat, enfant de ce tour de conversation).

Définit la contextvar `_current_llm` afin que le LLM soit accessible via `get_current_llm()`, qu’un gestionnaire de contexte soit utilisé ou non.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/pydantic/_internal/_model_construction.py#L907" />

<h3 id="method-model_post_init-7">
  <kbd>méthode</kbd> `model_post_init`
</h3>

```python theme={"system"}
model_post_init(context: 'Any') → None
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L954" />

<h3 id="method-record-3">
  <kbd>méthode</kbd> `record`
</h3>

```python theme={"system"}
record(
    messages: 'list[Message] | None' = None,
    system_instructions: 'list[str] | None' = None,
    agent_name: 'str | None' = None,
    model: 'str | None' = None,
    agent_id: 'str | None' = None,
    agent_description: 'str | None' = None,
    agent_version: 'str | None' = None
) → Turn
```

Définit plusieurs champs du tour de conversation en un seul appel.

Regroupe en un seul appel à arguments nommés les affectations champ par champ qu’un agent instrumenté manuellement devrait sinon effectuer sur un tour de conversation (`system_instructions`, `agent_id`, ...). Seuls les champs explicitement transmis (non `None`) sont appliqués ; les valeurs existantes sont conservées. `messages` **remplace** les messages existants du tour de conversation (contrairement à `Turn.user(...)`, qui ajoute un seul message). Renvoie `self` pour permettre le chaînage. Fonctionne comme `LLM.record`.

Remarque : sur le chemin de streaming (`with`), le span du tour de conversation est nommé d’après `agent_name` lors de `__enter__`. Si le nom du span doit refléter `agent_name`, définissez-le donc via `start_turn` plutôt que via `record` ; `record` met tout de même à jour l’attribut `gen_ai.agent.name`.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L241" />

<h3 id="method-set_attributes-4">
  <kbd>méthode</kbd> `set_attributes`
</h3>

```python theme={"system"}
set_attributes(attributes: 'dict[str, Any]') → Self
```

Appose des attributs OTel arbitraires sur ce span.

Passez un dict, que vous ayez une seule clé ou plusieurs : pour une seule clé, utilisez `span.set_attributes({"weave.tag": "value"})`. Reproduit la méthode `Span.set_attributes` d'OTel.

Doit être appelée entre le début et la fin du span, c.-à-d. à l'intérieur d'un bloc `with`. En dehors de cet intervalle, l'appel est sans effet (no-op) et journalise un avertissement. Pour une ingestion par lot, renseignez directement les champs déclarés de l'objet et passez-le à `log_turn` / `log_conversation`.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L940" />

<h3 id="method-subagent">
  <kbd>méthode</kbd> `subagent`
</h3>

```python theme={"system"}
subagent(
    name: 'str',
    model: 'str' = '',
    system_instructions: 'list[str] | None' = None
) → SubAgent
```

Démarre un appel de sous-agent (span invoke\_agent imbriqué, dans la même trace).

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L936" />

<h3 id="method-tool-2">
  <kbd>méthode</kbd> `tool`
</h3>

```python theme={"system"}
tool(name: 'str', arguments: 'str' = '', tool_call_id: 'str' = '') → Tool
```

Démarre une exécution d’outil (span execute\_tool, enfant de ce tour de conversation).

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L911" />

<h3 id="method-user">
  <kbd>méthode</kbd> `user`
</h3>

```python theme={"system"}
user(content: 'str') → Turn
```

Ajoute un message utilisateur au cours d’un tour de conversation.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/types.py#L227" />

<h2 id="class-usage">
  <kbd>classe</kbd> `Usage`
</h2>

Utilisation des jetons d’un appel LLM.

**Champs Pydantic :**

* `input_tokens` : `<class 'int'>`
* `output_tokens` : `<class 'int'>`
* `reasoning_tokens` : `<class 'int'>`
* `cache_creation_input_tokens` : `<class 'int'>`
* `cache_read_input_tokens` : `<class 'int'>`

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/api.py#L270" />

<h3 id="function-add_tags">
  <kbd>fonction</kbd> `add_tags`
</h3>

```python theme={"system"}
add_tags(obj_ref: 'ObjectRef | str', tags: 'list[str]') → None
```

Ajouter des tags à une version d’objet.

**Arguments :**

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/op.py#L1477" />

<h3 id="function-as_op">
  <kbd>fonction</kbd> `as_op`
</h3>

```python theme={"system"}
as_op(fn: 'Callable[P, R]') → Op[P, R]
```

Étant donné une fonction décorée avec @weave.op, renvoie son Op.

Les fonctions décorées avec @weave.op sont déjà des instances d’Op ; cette fonction n’a donc aucun effet à l’exécution (no-op). Vous pouvez toutefois l’utiliser pour satisfaire les vérificateurs de types si vous devez accéder aux attributs d’OpDef de manière sûre sur le plan du typage.

* <b>`obj_ref`</b> : Référence à la version de l’objet, soit un ObjectRef (renvoyé par weave.publish()), soit une chaîne URI weave ///.

* <b>`tags`</b> : Liste des chaînes de tags à ajouter.
  **Arguments :**

* <b>`fn`</b> : Une fonction décorée avec weave.op.
  **Retourne :**
  L’Op de la fonction.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/../../../../weave/trace/api/attributes#L462" />

<h3 id="function-attributes">
  <kbd>fonction</kbd> `attributes`
</h3>

```python theme={"system"}
attributes(attributes: 'dict[str, Any]') → Iterator
```

Gestionnaire de contexte permettant de définir des attributs sur un appel.

**Exemple :**

```python theme={"system"}
with weave.attributes({'env': 'production'}):
     print(my_function.call("World"))
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L1317" />

<h3 id="function-end_conversation">
  <kbd>fonction</kbd> `end_conversation`
</h3>

```python theme={"system"}
end_conversation() → None
```

Termine la conversation en cours (à partir de la contextvar).

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L1331" />

<h3 id="function-end_llm">
  <kbd>fonction</kbd> `end_llm`
</h3>

```python theme={"system"}
end_llm() → None
```

Termine l’appel LLM en cours (à partir de la contextvar).

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/_deprecated.py#L107" />

<h3 id="function-end_session">
  <kbd>fonction</kbd> `end_session`
</h3>

```python theme={"system"}
end_session() → None
```

Alias obsolète de :func:`weave.end_conversation`.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L1324" />

<h3 id="function-end_turn">
  <kbd>fonction</kbd> `end_turn`
</h3>

```python theme={"system"}
end_turn() → None
```

Termine le tour de conversation en cours (à partir de la contextvar).

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/api.py#L612" />

<h3 id="function-finish">
  <kbd>fonction</kbd> `finish`
</h3>

```python theme={"system"}
finish() → None
```

Arrête la journalisation vers Weave.

Après l’appel à finish, les appels des fonctions décorées avec weave.op ne sont plus journalisés. Pour reprendre la journalisation, vous devez exécuter à nouveau weave.init().

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/api.py#L436" />

<h3 id="function-get">
  <kbd>fonction</kbd> `get`
</h3>

```python theme={"system"}
get(uri: 'str | ObjectRef') → Any
```

Une fonction utilitaire permettant d’obtenir un objet à partir d’une URI.

De nombreux objets journalisés par Weave sont automatiquement enregistrés auprès du serveur Weave. Cette fonction vous permet de récupérer ces objets à partir de leur URI.

**Arguments :**

* <b>`uri`</b> : une URI de réf. Weave entièrement qualifiée.
  **Retourne :**
  L’objet.

**Exemple :**

```python theme={"system"}
weave.init("weave_get_example")
dataset = weave.Dataset(rows=[{"a": 1, "b": 2}])
ref = weave.publish(dataset)

dataset2 = weave.get(ref)  # identique à dataset !
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/api.py#L332" />

<h3 id="function-get_aliases">
  <kbd>fonction</kbd> `get_aliases`
</h3>

```python theme={"system"}
get_aliases(obj_ref: 'ObjectRef | str') → list[str]
```

Obtenir les alias d’une version d’objet.

**Arguments :**

* <b>`obj_ref`</b> : Référence à la version de l’objet, soit un ObjectRef, soit une chaîne URI weave ///.
  **Retourne :**
  Liste d’alias de type string.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/api.py#L184" />

<h3 id="function-get_client">
  <kbd>fonction</kbd> `get_client`
</h3>

```python theme={"system"}
get_client() → WeaveClient | None
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/context/call_context.py#L119" />

<h3 id="function-get_current_call">
  <kbd>fonction</kbd> `get_current_call`
</h3>

```python theme={"system"}
get_current_call() → Call | None
```

Obtenir l’objet Call de l’Op en cours d’exécution, à l’intérieur de cet Op.

**Retourne :**
L’objet Call de l’Op en cours d’exécution, ou  None si le suivi n’a pas été initialisé ou si cette méthode est  invoquée en dehors d’un Op.

**Remarque :**

> Le dictionnaire `attributes` du Call renvoyé devient immuable dès que l’appel démarre. Utilisez :func:`weave.attributes` pour définir les métadonnées de l’appel avant d’invoquer un Op. Le champ `summary` peut être mis à jour pendant l’exécution de l’Op et sera fusionné avec les informations de synthèse calculées lorsque l’appel se terminera.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L1338" />

<h3 id="function-get_current_conversation">
  <kbd>fonction</kbd> `get_current_conversation`
</h3>

```python theme={"system"}
get_current_conversation() → Conversation | None
```

Renvoie la conversation active à partir de la contextvar, ou None.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L1348" />

<h3 id="function-get_current_llm">
  <kbd>fonction</kbd> `get_current_llm`
</h3>

```python theme={"system"}
get_current_llm() → LLM | None
```

Renvoie l’appel LLM actif depuis la contextvar, ou None.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/_deprecated.py#L113" />

<h3 id="function-get_current_session">
  <kbd>fonction</kbd> `get_current_session`
</h3>

```python theme={"system"}
get_current_session() → Conversation | None
```

Alias obsolète de :func:`weave.get_current_conversation`.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L1343" />

<h3 id="function-get_current_turn">
  <kbd>fonction</kbd> `get_current_turn`
</h3>

```python theme={"system"}
get_current_turn() → Turn | None
```

Renvoie le tour de conversation actif à partir de la contextvar, ou None.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/api.py#L294" />

<h3 id="function-get_tags">
  <kbd>fonction</kbd> `get_tags`
</h3>

```python theme={"system"}
get_tags(obj_ref: 'ObjectRef | str') → list[str]
```

Obtenir les tags d’une version d’objet.

**Arguments :**

* <b>`obj_ref`</b> : Référence à la version de l’objet, sous la forme d’un ObjectRef ou d’une URI string weave ///.
  **Retourne :**
  Liste de tags sous forme de strings.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/api.py#L346" />

<h3 id="function-get_tags_and_aliases">
  <kbd>fonction</kbd> `get_tags_and_aliases`
</h3>

```python theme={"system"}
get_tags_and_aliases(obj_ref: 'ObjectRef | str') → tuple[list[str], list[str]]
```

Obtenir à la fois les tags et les alias d’une version d’objet en un appel unique.

**Arguments :**

* <b>`obj_ref`</b> : référence à la version de l’objet, sous la forme d’un ObjectRef ou d’une URI weave:/// de type string.
  **Retourne :**
  Un tuple (tags, alias). Chaque élément est une liste de string.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/api.py#L41" />

<h3 id="function-init">
  <kbd>fonction</kbd> `init`
</h3>

```python theme={"system"}
init(
    project_name: 'str',
    settings: 'UserSettings | dict[str, Any] | None' = None,
    autopatch_settings: 'AutopatchSettings | None' = None,
    postprocess_inputs: 'PostprocessInputsFunc | None' = None,
    postprocess_output: 'PostprocessOutputFunc | None' = None,
    attributes: 'dict[str, Any] | None' = None,
    global_postprocess_inputs: 'PostprocessInputsFunc | None' = None,
    global_postprocess_output: 'PostprocessOutputFunc | None' = None,
    global_attributes: 'dict[str, Any] | None' = None
) → WeaveClient
```

Initialise le suivi Weave, avec journalisation dans un projet wandb.

La journalisation est initialisée globalement : vous n’avez donc pas besoin de conserver une référence à la valeur de retour de init.

Une fois init appelé, les appels aux fonctions décorées avec weave.op sont journalisés dans le projet spécifié.

**Arguments :**

REMARQUE : le post-traitement au niveau du client s’exécute après le post-traitement propre à chaque op. L’ordre est toujours le suivant : 1. Post-traitement spécifique à l’op 2. Post-traitement au niveau du client

* <b>`project_name`</b> : le nom de l’équipe et du projet Weights & Biases dans lesquels journaliser les données. Si vous ne spécifiez pas d’équipe, votre entity par défaut est utilisé. Pour trouver ou modifier votre entity par défaut, référez-vous à la page [Paramètres utilisateur](/fr/products/wandb/platform/app/settings-page/user-settings#default-team) de la documentation W\&B Models.
* <b>`settings`</b> : configuration générale du client Weave. Peut être une instance de UserSettings ou un dict contenant l’une des clés suivantes (toutes facultatives). Tous les paramètres peuvent également être configurés par
  des variables d’environnement avec le préfixe WEAVE\_ (par exemple, WEAVE\_DISABLED=true). Paramètres disponibles : - `disabled` (bool) : désactive le traçage de toutes les fonctions. Par défaut : `False` - `print_call_link`
  (bool) : affiche dans le terminal des liens vers l’interface Weave pour les ops. Par défaut : `True` - `log_level` (str) : définit le type d’informations à journaliser (`DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL`). Par défaut : `INFO` -
  `display_viewer` (str) : détermine la façon dont Weave affiche les objets dans la console (`auto`, `rich`, `print`). Par défaut : `auto` - `capture_code` (bool) : capture le code des ops tracés dans votre projet Weave.
  Par défaut : `True` - `implicitly_patch_integrations` (bool) : patche automatiquement les bibliothèques prises en charge. Par défaut : `True` - `redact_pii` (bool) : analyse toutes les données de trace à la recherche d’informations sensibles, comme les adresses e-mail, les numéros
  de téléphone et les numéros de carte bancaire, et les remplace par des valeurs de substitution avant l’envoi au serveur. Nécessite les paquets presidio-analyzer et presidio-anonymizer.
* <b>`Default`</b> : `False` - `redact_pii_fields` (list\[str]) : indique les types d’entités PII à masquer lorsque `redact_pii` vaut True. Si la liste est vide, l’ensemble par défaut de Presidio est utilisé. Exemples :  \['EMAIL','PHONE\_NUMBER','CREDIT\_CARD','US\_SSN']. Voir la liste complète à l’adresse  [https://microsoft.github.io/presidio/supported\&#95;entities/](https://microsoft.github.io/presidio/supported\&#95;entities/)
* <b>`Default`</b> : `[]` - `redact_pii_exclude_fields` (list\[str]) : types d’entités PII à exclure. Par défaut : `[]` - `capture_client_info` (bool) : capture les informations de version de Python/du SDK. Par défaut : `True` -
  `capture_system_info` (bool) : capture les informations sur le système d’exploitation. Par défaut : `True` - `client_parallelism` (int) : nombre de workers pour les ops en arrière-plan. Par défaut : `auto` - `use_server_cache` (bool) : active la mise en cache locale
  sur disque des réponses du serveur. - `server_cache_size_limit` (int) : taille maximale du cache, en octets. Par défaut : `1_000_000_000` - `server_cache_dir` (str) : répertoire du cache du serveur. Par défaut : `temporary` -
  `scorers_dir` (str) : répertoire des points de contrôle des modèles d’évaluateurs. Par défaut : `~/.cache/wandb/weave-scorers` - `max_calls_queue_size` (int) : taille maximale de la file d’attente (0 = illimitée). Par défaut : `100_000` -
  `retry_max_interval` (float) : intervalle maximal entre les nouvelles tentatives, en secondes. Par défaut : `300` - `retry_max_attempts` (int) : nombre maximal de nouvelles tentatives. Par défaut : `3` - `enable_disk_fallback` (bool) : écrit sur le disque les éléments
  rejetés. Par défaut : `True` - `use_parallel_table_upload` (bool) : active le téléversement parallèle par fragments pour les tableaux volumineux. Si False, les tableaux sont téléversés séquentiellement, en fragments plus petits.
* <b>`Default`</b> : `True` - `http_timeout` (float) : délai maximal, en secondes, accordé aux requêtes HTTP pour se terminer. Ce délai inclut le temps de connexion, le transfert des données et le traitement côté serveur. Augmentez cette valeur si le réseau est lent ou si vous manipulez des charges utiles volumineuses.
* <b>`Default`</b> : `30.0` - `use_stainless_server` (bool) : utilise le client HTTP généré par Stainless, qui offre une meilleure sûreté de typage, de nouvelles tentatives automatiques et une gestion des erreurs améliorée. Cette fonctionnalité est expérimentale et pourrait devenir le comportement par défaut dans de futures versions.
* <b>`Default`</b> : `False` - `use_calls_complete` (bool) : utilise un chemin d’écriture optimisé qui regroupe les données complètes d’un appel (début et fin) dans une seule requête, plutôt que dans des requêtes de début et de fin distinctes. Cela réduit la charge du serveur et améliore les performances, en particulier pour les ops de courte durée.
* <b>`Default`</b> : `True` - `use_otel_v2` : (bool) : Achemine les intégrations compatibles OTel via leur variante OTel.
* <b>`Par défaut`</b> : `True`
* <b>`autopatch_settings`</b> : (Obsolète) Configuration des intégrations d’autopatch. Utilisez plutôt le patching explicite.
* <b>`postprocess_inputs`</b> : fonction appliquée aux entrées de chaque op tracé par ce client.
* <b>`postprocess_output`</b> : fonction appliquée à la sortie de chaque op tracé par ce client.
* <b>`attributes`</b> : un dictionnaire d’attributs appliqués à chaque trace produite par ce client.
  **Retourne :**
  Un client Weave.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/api.py#L409" />

<h3 id="function-link_prompt_to_registry">
  <kbd>fonction</kbd> `link_prompt_to_registry`
</h3>

```python theme={"system"}
link_prompt_to_registry(
    prompt: 'LinkablePrompt',
    target_path: 'str',
    aliases: 'Sequence[str] | None' = None
) → LinkAssetToRegistryRes
```

Lie une version de prompt publiée au registre.

**Arguments :**

* <b>`prompt`</b> : un prompt publié, un `ObjectRef` ou une string d’URI weave ///... entièrement qualifiée.

* <b>`target_path`</b> : chemin de destination dans le registre, au format  `<registry_project>/<portfolio_name>`, par exemple  `wandb-registry-prompts/my-prompt-collection`.

* <b>`aliases`</b> : alias facultatifs à joindre à la version créée dans le registre.
  **Retourne :**

* <b>`LinkAssetToRegistryRes`</b> :  réponse analysée renvoyée par le point de terminaison registry-link.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/api.py#L370" />

<h3 id="function-list_aliases">
  <kbd>fonction</kbd> `list_aliases`
</h3>

```python theme={"system"}
list_aliases() → list[str]
```

Liste tous les alias distincts du projet.

**Retourne :**
Liste triée de tous les alias (string) du projet.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/api.py#L360" />

<h3 id="function-list_tags">
  <kbd>fonction</kbd> `list_tags`
</h3>

```python theme={"system"}
list_tags() → list[str]
```

Lister tous les tags distincts du projet.

**Retourne :**
Liste triée de tous les tags (de type string) du projet.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/log_call.py#L18" />

<h3 id="function-log_call">
  <kbd>fonction</kbd> `log_call`
</h3>

```python theme={"system"}
log_call(
    op: 'str',
    inputs: 'dict[str, Any]',
    output: 'Any',
    parent: 'Call | None' = None,
    attributes: 'dict[str, Any] | None' = None,
    display_name: 'str | Callable[[Call], str] | None' = None,
    use_stack: 'bool' = True,
    exception: 'BaseException | None' = None
) → Call
```

Journalise un appel directement dans Weave sans utiliser le patron décorateur.

Cette fonction fournit une API impérative pour journaliser des opérations dans Weave. Elle est utile lorsque vous souhaitez journaliser des appels après leur exécution, ou lorsque le patron décorateur ne convient pas à votre cas d'usage.

**Arguments :**

* <b>`op`</b> (str) :  Le nom de l’opération à journaliser. Il sera utilisé comme op\_name  de l’appel. Les opérations anonymes (strings ne faisant pas référence à des ops  publiés) sont prises en charge.
* <b>`inputs`</b> (dict\[str, Any]) :  Un dictionnaire des paramètres d’entrée de l’opération.
* <b>`output`</b> (Any) :  La sortie/le résultat de l’opération.
* <b>`parent`</b> (Call | None) :  Appel parent facultatif dans lequel imbriquer cet appel.  S’il n’est pas fourni, l’appel sera un appel de niveau racine (ou imbriqué dans  le contexte d’appel actuel, s’il existe). Par défaut : None.
* <b>`attributes`</b> (dict\[str, Any] | None) :  Métadonnées facultatives à joindre à l’appel.  Elles sont figées une fois l’appel créé. Par défaut : None.
* <b>`display_name`</b> (str | Callable\[\[Call], str] | None) :  Nom d’affichage facultatif  de l’appel dans l’interface utilisateur. Peut être une string ou un callable qui prend  l’appel et renvoie une string. Par défaut : None.
* <b>`use_stack`</b> (bool) :  Indique s’il faut empiler l’appel sur la pile du runtime. Si True,  l’appel sera disponible dans le contexte d’appel et accessible via  weave.require\_current\_call(). Si False, l’appel est journalisé mais n’est pas  ajouté à la pile d’appels. Par défaut : True.
* <b>`exception`</b> (BaseException | None) :  Exception facultative à journaliser si l’opération  a échoué. Par défaut : None.

**Retourne :**

* <b>`Call`</b> :  L’objet Call créé et terminé, avec les informations de trace complètes.

**Exemples :**
Utilisation de base :

````python theme={"system"}
import weave
    >>> weave.init('my-project')
    >>> call = weave.log_call(
    ...     op="my_function",
    ...     inputs={"x": 5, "y": 10},
    ...     output=15
    ... )

    Logging with attributes and display name:
    >>> call = weave.log_call(
    ...     op="process_data",
    ...     inputs={"data": [1, 2, 3]},
    ...     output={"mean": 2.0},
    ...     attributes={"version": "1.0", "env": "prod"},
    ...     display_name="Data Processing"
    ... )

    Logging a failed operation:
    >>> try:
    ...     result = risky_operation()
    ... except Exception as e:
    ...     call = weave.log_call(
    ...         op="risky_operation",
    ...         inputs={},
    ...         output=None,
    ...         exception=e
    ...     )

    Nesting calls:
    >>> parent_call = weave.log_call("parent", {"input": 1}, 2)
    >>> child_call = weave.log_call(
    ...     "child",
    ...     {"input": 2},
    ...     4,
    ...     parent=parent_call
    ... )

    Logging without adding to call stack:
    >>> call = weave.log_call(
    ...     op="background_task",
    ...     inputs={"task_id": 123},
    ...     output="completed",
    ...     use_stack=False  # Ne pas ajouter à la pile d'appels
    ... )

---

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L1584" />

### <kbd>function</kbd> `log_conversation`

```python
log_conversation(
    turns: 'list[Turn]',
    conversation_id: 'str' = '',
    conversation_name: 'str' = '',
    agent_name: 'str' = '',
    model: 'str' = '',
    agent_id: 'str' = '',
    agent_description: 'str' = '',
    agent_version: 'str' = '',
    include_content: 'bool' = True,
    continue_parent_trace: 'bool' = False,
    attributes: 'Attributes' = None
) → LogResult
````

Émet de manière impérative une conversation complète.

L'attribut `.spans` de chaque Turn fournit ses enfants. Génère automatiquement `conversation_id` s'il est vide. Par défaut, chaque tour de conversation dispose de sa propre trace OTel. `agent_name` / `model` / `agent_id` / `agent_description` / `agent_version` sont des valeurs par défaut au niveau de la conversation — la valeur propre à un Turn est prioritaire ; la valeur de la conversation n'est utilisée que si le Turn ne la renseigne pas. Le paramètre `continue_parent_trace` de la conversation s'applique à chaque tour de conversation (tout `continue_parent_trace` défini au niveau d'un Turn est ici volontairement ignoré).

Les `attributes` sont apposés sur chaque span émis. Utilisez des clés personnalisées, hors conventions sémantiques (semconv) : une clé qui entre en conflit avec un attribut `gen_ai.*` / `weave.*` propre à un span n'est pas prise en charge (la valeur retenue dépend du chemin d'exécution).

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/_deprecated.py#L78" />

<h3 id="function-log_session">
  <kbd>fonction</kbd> `log_session`
</h3>

```python theme={"system"}
log_session(
    turns: 'list[Turn]',
    session_id: 'str' = '',
    session_name: 'str' = '',
    agent_name: 'str' = '',
    model: 'str' = '',
    include_content: 'bool' = True,
    continue_parent_trace: 'bool' = False,
    attributes: 'Attributes' = None
) → LogResult
```

Alias obsolète de :func:`weave.log_conversation`.

`session_id` / `session_name` correspondent respectivement à `conversation_id` / `conversation_name`.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L1518" />

<h3 id="function-log_turn">
  <kbd>fonction</kbd> `log_turn`
</h3>

```python theme={"system"}
log_turn(
    conversation_id: 'str',
    agent_name: 'str' = '',
    conversation_name: 'str' = '',
    model: 'str' = '',
    agent_id: 'str' = '',
    agent_description: 'str' = '',
    agent_version: 'str' = '',
    messages: 'list[Message] | None' = None,
    system_instructions: 'list[str] | None' = None,
    spans: 'list[LLM | Tool | SubAgent] | None' = None,
    started_at: 'datetime | None' = None,
    ended_at: 'datetime | None' = None,
    include_content: 'bool' = True,
    continue_parent_trace: 'bool' = False,
    attributes: 'Attributes' = None
) → LogResult
```

Émet de manière impérative un tour de conversation et ses spans enfants vers OTel.

À utiliser lorsque les gestionnaires de contexte ne sont pas envisageables (conteneurs sans état, callbacks, workers de file d'attente). Chaque span enfant transmis doit avoir `started_at` / `ended_at` définis ; les horodatages des spans OTel émis proviennent de ces champs. Si le tour de conversation ne fournit pas ses propres horodatages, l'horodatage le plus ancien/le plus récent des enfants est utilisé, puis `now()` à défaut. `agent_id` / `agent_description` / `agent_version` se comportent comme dans le chemin de streaming.

Les `attributes` sont appliqués à chaque span émis ; le chemin de streaming, lui, les lit à partir de la conversation active. Utilisez des clés personnalisées, hors conventions sémantiques : une clé qui entre en conflit avec un attribut `gen_ai.*` / `weave.*` propre à un span n'est pas prise en charge (la valeur retenue dépend du chemin).

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/op.py#L1240" />

<h3 id="function-op">
  <kbd>fonction</kbd> `op`
</h3>

```python theme={"system"}
op(
    func: 'Callable[P, R] | None' = None,
    name: 'str | None' = None,
    call_display_name: 'str | CallDisplayNameFunc | None' = None,
    postprocess_inputs: 'PostprocessInputsFunc | None' = None,
    postprocess_output: 'PostprocessOutputFunc | None' = None,
    tracing_sample_rate: 'float' = 1.0,
    enable_code_capture: 'bool' = True,
    accumulator: 'Callable[[Any | None, Any], Any] | None' = None,
    kind: 'OpKind | None' = None,
    color: 'OpColor | None' = None,
    attributes: 'dict[str, Any] | None' = None,
    eager_call_start: 'bool' = False
) → Callable[[Callable[P, R]], Op[P, R]] | Op[P, R]
```

Un décorateur permettant de transformer une fonction ou une méthode en op Weave. Fonctionne aussi bien en mode synchrone qu'asynchrone. Détecte automatiquement les fonctions itératrices et applique le comportement approprié.

**Arguments :**

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/urls.py#L14" />

<h3 id="function-otel_traces_endpoint">
  <kbd>fonction</kbd> `otel_traces_endpoint`
</h3>

```python theme={"system"}
otel_traces_endpoint(base_url: str | None = None) → str
```

Renvoie l’URL complète du point de terminaison HTTP OTLP pour l’ingestion des traces GenAI de Weave.

Les appelants externes (par exemple, les sondes de démarrage qui doivent vérifier que le point de terminaison d’ingestion est joignable avant de s’en remettre au BatchSpanProcessor, qui abandonne les exports sans avertissement) doivent appeler cette fonction plutôt que de construire l’URL eux-mêmes. Le chemin relève du SDK et est susceptible de changer.

* <b>`func`</b> : fonction à décorer.
* <b>`name`</b> : nom personnalisé de l’op. Par défaut, le nom de la fonction.
* <b>`call_display_name`</b> : nom d’affichage des appels ; peut être une string ou un callable.
* <b>`postprocess_inputs`</b> : fonction qui transforme les entrées avant la journalisation.
* <b>`postprocess_output`</b> : fonction qui transforme la sortie avant la journalisation.
* <b>`tracing_sample_rate`</b> : fraction des appels à tracer (de 0.0 à 1.0).
* <b>`enable_code_capture`</b> : indique s’il faut capturer le code source de cette op.
* <b>`accumulator`</b> : fonction qui accumule les résultats des ops en streaming.
* <b>`attributes`</b> : attributs par défaut fusionnés dans chaque appel créé par cette op,  avec la priorité la plus faible. Un contexte `weave.attributes()` et des  attributs par appel explicites les redéfinissent en cas de conflit de clé. La clé réservée  "weave" ne peut pas être définie ici.
* <b>`eager_call_start`</b> : si True, les débuts d’appel sont envoyés immédiatement plutôt que par lots.  Utile pour les opérations de longue durée, comme les évaluations, qui doivent  apparaître immédiatement dans l’interface utilisateur.
  **Arguments :**

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/api.py#L188" />

<h3 id="function-publish">
  <kbd>fonction</kbd> `publish`
</h3>

```python theme={"system"}
publish(
    obj: 'Any',
    name: 'str | None' = None,
    tags: 'list[str] | None' = None,
    aliases: 'list[str] | None' = None
) → ObjectRef
```

Enregistre un objet Python et en crée une version.

Weave crée une nouvelle version de l’objet si un objet portant ce nom existe déjà et que son hachage de contenu ne correspond pas à celui de la dernière version de cet objet.

* <b>`base_url`</b> : URL de base du trace server. Valeur par défaut : `weave_trace_server_url()`.
  **Arguments :**

* <b>`obj`</b> : l’objet à enregistrer et à versionner.

* <b>`name`</b> : le nom sous lequel enregistrer l’objet.

* <b>`tags`</b> : liste facultative de tags à ajouter à la version d’objet publiée.

* <b>`aliases`</b> : liste facultative d’alias à définir sur la version d’objet publiée.
  **Retourne :**
  Une réf. Weave vers l’objet enregistré.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/api.py#L380" />

<h3 id="function-ref">
  <kbd>fonction</kbd> `ref`
</h3>

```python theme={"system"}
ref(location: 'str') → ObjectRef
```

Crée une Ref vers un objet Weave existant. Cette fonction ne récupère pas directement l’objet, mais vous permet de le transmettre à d’autres fonctions de l’API Weave.

**Arguments :**

* <b>`location`</b> : URI de réf. Weave ou, si `weave.init()` a été appelé, `name:version` ou `name`. Si aucune version n’est fournie, `latest` est utilisé.
  **Retourne :**
  Une réf. Weave vers l’objet.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/api.py#L320" />

<h3 id="function-remove_aliases">
  <kbd>fonction</kbd> `remove_aliases`
</h3>

```python theme={"system"}
remove_aliases(obj_ref: 'ObjectRef | str', alias: 'str | list[str]') → None
```

Supprime un ou plusieurs alias d’un objet.

**Arguments :**

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/api.py#L282" />

<h3 id="function-remove_tags">
  <kbd>fonction</kbd> `remove_tags`
</h3>

```python theme={"system"}
remove_tags(obj_ref: 'ObjectRef | str', tags: 'list[str]') → None
```

Supprime des tags d’une version d’objet.

* <b>`obj_ref`</b> : Référence à l’objet, soit un ObjectRef, soit une string URI weave ///.
* <b>`alias`</b> : Nom d’alias ou liste de noms d’alias à supprimer.
  **Arguments :**

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/context/call_context.py#L70" />

<h3 id="function-require_current_call">
  <kbd>fonction</kbd> `require_current_call`
</h3>

```python theme={"system"}
require_current_call() → Call
```

Obtient l’objet Call de l’op en cours d’exécution, depuis cet op.

Cela vous permet d’accéder aux attributs de l’appel, tels que son id ou son feedback, pendant son exécution.

```python theme={"system"}
@weave.op
def hello(name: str) -> None:
     print(f"Hello {name}!")
     current_call = weave.require_current_call()
     print(current_call.id)
```

Il est également possible d'accéder à un appel une fois que l'op a renvoyé son résultat.

Si vous disposez de l'id de l'appel, obtenu par exemple depuis l'interface utilisateur, vous pouvez utiliser la méthode `get_call` du `WeaveClient` renvoyé par `weave.init` pour récupérer l'objet Call.

```python theme={"system"}
client = weave.init("<project>")
mycall = client.get_call("<call_id>")
```

Vous pouvez également utiliser la méthode `call` de votre op après l’avoir défini. Par exemple :

```python theme={"system"}
@weave.op
def add(a: int, b: int) -> int:
     return a + b

result, call = add.call(1, 2)
print(call.id)
```

* <b>`obj_ref`</b> : référence à la version de l’objet, soit un ObjectRef, soit une string d’URI weave ///.
* <b>`tags`</b> : liste des strings de tag à supprimer.
  **Retourne :**
  L’objet Call de l’op en cours d’exécution

**Exceptions levées :**

* <b>`NoCurrentCallError`</b> : si le suivi n’a pas été initialisé ou si cette méthode est appelée en dehors d’un op.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/api.py#L308" />

<h3 id="function-set_aliases">
  <kbd>fonction</kbd> `set_aliases`
</h3>

```python theme={"system"}
set_aliases(obj_ref: 'ObjectRef | str', alias: 'str | list[str]') → None
```

Définit un ou plusieurs alias pour une version d’objet.

**Arguments :**

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/trace/api.py#L482" />

<h3 id="function-set_view">
  <kbd>fonction</kbd> `set_view`
</h3>

```python theme={"system"}
set_view(
    name: 'str',
    content: 'Content | str',
    extension: 'str | None' = None,
    mimetype: 'str | None' = None,
    metadata: 'dict[str, Any] | None' = None,
    encoding: 'str' = 'utf-8'
) → None
```

Joindre une vue personnalisée à la synthèse de l’appel en cours, sous `_weave.views.<name>`.

* <b>`obj_ref`</b> : Référence à la version de l’objet, sous la forme d’un ObjectRef ou d’une URI string weave ///.

* <b>`alias`</b> : Nom d’alias ou liste de noms d’alias à définir (par exemple, « production »).
  **Arguments :**

* <b>`name`</b> : Nom de la vue (clé sous `summary._weave.views`).

* <b>`content`</b> : Instance `weave.Content` ou string brute. Les strings sont encapsulées via  `Content.from_text` à l’aide de l’extension ou du type MIME fourni.

* <b>`extension`</b> : Extension de fichier facultative à utiliser lorsque `content` est une string.

* <b>`mimetype`</b> : Type MIME facultatif à utiliser lorsque `content` est une string.

* <b>`metadata`</b> : Métadonnées facultatives à joindre lors de la création de `Content` à partir de texte.

* <b>`encoding`</b> : Encodage de texte à appliquer lors de la création de `Content` à partir de texte.
  **Retourne :**
  None

**Exemples :**
` import weave`

> > > weave.init("proj")
> > > @weave.op
> > > ... def foo():
> > > ...     weave.set\_view("readme", "# Hello", extension="md")
> > > ...     return 1
> > > foo()

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L1198" />

<h3 id="function-start_conversation">
  <kbd>fonction</kbd> `start_conversation`
</h3>

```python theme={"system"}
start_conversation(
    agent_name: 'str' = '',
    model: 'str' = '',
    conversation_id: 'str' = '',
    conversation_name: 'str' = '',
    include_content: 'bool' = True,
    continue_parent_trace: 'bool' = False,
    attributes: 'Attributes' = None
) → Conversation
```

Crée et active une conversation. Définit la contextvar pour permettre l’accès depuis d’autres modules.

Les `attributes` sont apposés sur chaque span émis par cette conversation (par exemple, une identité d’intégration comme `weave.integration.*`). Utilisez des clés personnalisées, hors conventions sémantiques (semconv) : pour les champs des conventions sémantiques, passez par les paramètres typés (`conversation_name`, `model`, ...). Une clé qui entre en conflit avec un attribut `gen_ai.*` / `weave.*` propre à un span n’est pas prise en charge ; la valeur retenue dépend du chemin d’exécution (streaming ou `log_turn`).

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L1262" />

<h3 id="function-start_llm">
  <kbd>fonction</kbd> `start_llm`
</h3>

```python theme={"system"}
start_llm(
    model: 'str' = '',
    provider_name: 'str' = '',
    system_instructions: 'list[str] | None' = None
) → LLM
```

Crée et active un appel LLM. Utilise le tour de conversation actuel s’il est disponible.

Si aucun tour de conversation n’est actif, renvoie un LLM déconnecté (aucune contextvar définie).

Transmettez explicitement `provider_name`. Le SDK ne le déduit pas de l’identifiant du modèle : une déduction fondée sur le préfixe attribue à tort les modèles issus d’un fine-tuning effectué par l’utilisateur (par exemple, un modèle nommé `text-...`) et inscrit dans la télémétrie des hypothèses sur les futurs noms de modèles, qu'il est coûteux de corriger a posteriori.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/_deprecated.py#L51" />

<h3 id="function-start_session">
  <kbd>fonction</kbd> `start_session`
</h3>

```python theme={"system"}
start_session(
    agent_name: 'str' = '',
    model: 'str' = '',
    session_id: 'str' = '',
    session_name: 'str' = '',
    include_content: 'bool' = True,
    continue_parent_trace: 'bool' = False,
    attributes: 'Attributes' = None
) → Conversation
```

Alias obsolète de :func:`weave.start_conversation`.

`session_id` / `session_name` correspondent respectivement à `conversation_id` / `conversation_name`.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L1302" />

<h3 id="function-start_subagent">
  <kbd>fonction</kbd> `start_subagent`
</h3>

```python theme={"system"}
start_subagent(
    name: 'str',
    model: 'str' = '',
    system_instructions: 'list[str] | None' = None
) → SubAgent
```

Crée un span d’appel de sous-agent.

Le span OTel du SubAgent devient automatiquement l'enfant du span courant dans le contexte OTel — généralement un span Turn, s'il y en a un actif. Même structure que `start_tool` : le contexte OTel gère la propagation parent-enfant, sans qu'aucune délégation explicite soit nécessaire.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L1291" />

<h3 id="function-start_tool">
  <kbd>fonction</kbd> `start_tool`
</h3>

```python theme={"system"}
start_tool(name: 'str', arguments: 'str' = '', tool_call_id: 'str' = '') → Tool
```

Crée un span d’exécution d’outil.

Le span OTel de l’outil devient automatiquement l’enfant du span courant dans le contexte OTel, généralement un span de Turn s’il y en a un actif. Aucune délégation explicite au tour de conversation n’est nécessaire : la propagation parent-enfant s’effectue via le contexte OTel, et non via les contextvars du SDK Conversation.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/conversation/conversation.py#L1230" />

<h3 id="function-start_turn">
  <kbd>fonction</kbd> `start_turn`
</h3>

```python theme={"system"}
start_turn(
    user_message: 'str' = '',
    model: 'str' = '',
    agent_name: 'str' = '',
    system_instructions: 'list[str] | None' = None
) → Turn
```

Crée et active un tour de conversation. Utilise la conversation en cours si elle est disponible.

Si aucune conversation n’est active, renvoie un Turn déconnecté qui n’est PAS défini dans la contextvar. Par conséquent, `get_current_turn()` renverra None. Utilisez plutôt `conversation.start_turn()` si vous avez besoin d’un accès entre modules reposant sur la contextvar.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/../../../../weave/trace/api/thread#L565" />

<h3 id="function-thread">
  <kbd>fonction</kbd> `thread`
</h3>

```python theme={"system"}
thread(
    thread_id: 'str | object | None' = <object object at 0x7f136d9f4bd0>
) → Iterator[ThreadContext]
```

Gestionnaire de contexte permettant de définir le thread\_id des appels effectués dans ce contexte.

**Exemples :**

```python theme={"system"}
# Génération automatique du thread_id
with weave.thread() as t:
     print(f"Thread ID: {t.thread_id}")
     result = my_function("input")  # Cet appel recevra le thread_id généré automatiquement
     print(f"Current turn: {t.turn_id}")

# thread_id explicite
with weave.thread("custom_thread") as t:
     result = my_function("input")  # Cet appel recevra thread_id="custom_thread"

# Désactivation du regroupement en threads
with weave.thread(None) as t:
     result = my_function("input")  # Cet appel recevra thread_id=None
```

**Arguments :**

* <b>`thread_id`</b> : identifiant du thread à associer aux appels dans ce contexte.  S’il n’est pas fourni, un UUID v7 est généré automatiquement.  S’il vaut None, le suivi des threads est désactivé.
  **Génère :**

* <b>`ThreadContext`</b> :  objet donnant accès à thread\_id et au turn\_id actuel.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.53.1/weave/integrations/wandb/wandb.py#L9" />

<h3 id="function-wandb_init_hook">
  <kbd>fonction</kbd> `wandb_init_hook`
</h3>

```python theme={"system"}
wandb_init_hook() → None
```


## Related topics

- [weave](/fr/products/wandb/weave/reference/typescript-sdk.md)
