For AI agents: the complete documentation index is available at https://docs.ovhcloud.com/fr/llms.txt, the full documentation bundle is available at https://docs.ovhcloud.com/fr/llms-full.txt, and this page is available as Markdown at https://docs.ovhcloud.com/fr/guides/public-cloud/ai-machine-learning/ai-tools-ovhai-sdk.md.

Produits IA - SDK ovhai

Voir en Markdown

Simplifiez la gestion de vos solutions IA en utilisant le SDK python ovhai

Objectif

L’objectif de ce document est de présenter la librairie Python ovhai.

La librairie ovhai est un client Python qui permet aux développeurs d’utiliser facilement l’API AI d’OVHcloud. Avec ce SDK, vous pouvez exécuter, gérer et automatiser vos notebooks, entraînements et déploiements dans le cloud à l’aide des produits IA d’OVHcloud (AI Notebooks, AI Training, AI Deploy).

Installation

Pour installer le SDK, exécutez la commande suivante :

pip install ovhai

Le SDK nécessite Python 3.8 ou une version supérieure. Pour savoir comment mettre à jour votre version de Python, consultez la documentation officielle de Python.

Prise en main - Exemple d’utilisation

Une fois le SDK AI installé, vous pouvez l’importer pour utiliser les produits IA d’OVHcloud via l’API.

Vous pouvez commencer par la création du client :

from ovhai import AuthenticatedClient

client = AuthenticatedClient(
    base_url="https://gra.training.ai.cloud.ovh.net", 
    token="YOUR_AI_TOKEN",
)

Le token utilisé pour créer le client peut être créé depuis l’, depuis l’AI Dashboard.

Une fois votre client défini, vous pouvez appeler un endpoint :

from ovhai.models import Me
from ovhai.api.me import me
from ovhai.ovhai_types import Response

with client as client:
    res: Me = me.sync(client=client)
    print(res)
    
    # or if you need more info (e.g. status_code)
    #response: Response[Me] = me.sync_detailed(client=client)
    #print(response)

Ou faites la même chose avec une version asynchrone :

import asyncio
from ovhai.models import Me
from ovhai.api.me import me
from ovhai.ovhai_types import Response

async def main(client):
    res: Me = await me.asyncio(client=client)
    print(res)
    
    # or if you need more info (e.g. status_code)
    #response: Response[Me] = await me.asyncio_detailed(client=client)
    #print(response)
    
# Run the main function asynchronously
asyncio.run(main(client=client))

Dans le dossier ovhai/api, vous trouverez tous les endpoints que vous pouvez appeler. Ils sont regroupés par dossier selon leur finalité (notebook, job, app, ...).

Par exemple, pour lancer un notebook, vous devez importer le fichier notebook_new, situé dans /ovhai/api/notebook. Vous devrez également importer les objets liés à cet endpoint (ceux mentionnés dans le fichier Python), puisque vous allez les manipuler (Notebook et NotebookSpec ici, en plus des classiques AuthenticatedClient et Response). Cela vous permettra de lancer votre premier notebook à l’aide de la librairie Python ovhai, en fonction de vos spécifications :

from ovhai import AuthenticatedClient
from ovhai.api.notebook import notebook_new
from ovhai.models import NotebookSpec, Notebook
from ovhai.ovhai_types import Response

client = AuthenticatedClient(
    base_url="https://gra.training.ai.cloud.ovh.net",
    token="YOUR_AI_TOKEN",
)

# Define notebook parameters
editor_id = "jupyterlab"
framework_id = "conda"
framework_version = "conda-py39-cudaDevel11.8-v22-4"
nb_cpu = 2

# Create the notebook creation request
notebook_specs = {
    "env": {"editorId": editor_id, "frameworkId": framework_id, "frameworkVersion": framework_version},
    "resources": {"cpu": nb_cpu},
}

with client as client:
    response: Response[Notebook] = notebook_new.sync_detailed(
        client=client, body=NotebookSpec.from_dict(notebook_specs)
    )
    print(response)

L’objet Response renvoyé contiendra plusieurs informations, dont l’UUID de votre notebook.

Choses à savoir

Chaque endpoint de l’API AI d’OVHcloud dispose de son propre module Python, qui propose quatre fonctions :

  1. sync : requête bloquante qui renvoie les données analysées (en cas de succès) ou None
  2. sync_detailed : requête bloquante qui renvoie toujours une Request, avec éventuellement parsed défini si la requête a réussi
  3. asyncio : identique à sync mais en asynchrone plutôt qu’en bloquant
  4. asyncio_detailed : identique à sync_detailed mais en asynchrone plutôt qu’en bloquant

Pour mettre en œuvre l’appel que vous souhaitez, trouvez le dossier puis le fichier correspondant à vos besoins dans le dossier api. Choisissez ensuite la méthode qui vous convient le mieux parmi les quatre mentionnées ci-dessus. Importez enfin les objets nécessaires à l’utilisation de cette méthode.

Personnalisations avancées

La classe AuthenticatedClient générée propose davantage de paramètres vous permettant de contrôler plus finement le comportement à l’exécution ; consultez la docstring de cette classe pour plus d’informations. Vous pouvez également personnaliser le httpx.Client ou httpx.AsyncClient sous-jacent (selon votre cas d’usage) :

from ovhai import AuthenticatedClient

def log_request(request):
    print(f"Request event hook: {request.method} {request.url} - Waiting for response")

def log_response(response):
    request = response.request
    print(f"Response event hook: {request.method} {request.url} - Status {response.status_code}")

client = AuthenticatedClient(
    base_url="https://gra.training.ai.cloud.ovh.net",
    token="YOUR_AI_TOKEN",
    httpx_args={"event_hooks": {"request": [log_request], "response": [log_response]}},
)

# Or get the underlying httpx client to modify directly with client.get_httpx_client() or client.get_async_httpx_client()

Par exemple, l’extrait de code précédent montre comment définir un hook personnalisé de requête et de réponse à l’aide du paramètre httpx_args de la classe AuthenticatedClient. Le paramètre httpx_args est utilisé pour transmettre des arguments supplémentaires au httpx.Client ou httpx.AsyncClient sous-jacent. Dans ce cas, l’argument event_hooks est utilisé pour spécifier des fonctions personnalisées qui seront appelées avant et après chaque requête et réponse HTTP.

Vous pouvez même définir directement le client httpx, mais attention, cela remplacera tous les paramètres existants (par exemple, base_url).

Votre avis nous intéresse !

N’hésitez pas à nous faire part de vos questions, retours et suggestions pour améliorer le service :

Cette page vous a-t-elle aidé ?