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

# Utiliser l'API Paradigm via un Proxy en Python

> Apprenez à configurer vos requêtes pour fonctionner avec l'API Paradigm lorsque votre entreprise utilise un proxy.

Si votre entreprise utilise un proxy pour accéder aux APIs externes, vous devez spécifier sa configuration dans vos requêtes pour permettre la connexion au client Python de notre API.

Trois méthodes sont possibles pour configurer l'utilisation d'un proxy:

* Au niveau de chaque requête
* Au niveau d'une session
* Au niveau de l'environnement

## Exemples de configurations

Voici un exemple de configuration pour chaque méthode citée précédement.

<AccordionGroup>
  <Accordion title="Configuration d'une requête" icon="code" iconType="regular">
    ```python theme={null}
    import requests
    import ssl
    import os

    api_key = os.getenv("PARADIGM_API_KEY")
    base_url = os.getenv("PARADIGM_BASE_URL", "https://paradigm.lighton.ai/api/v2")

    # Configuration proxy
    proxies = {
        'http': 'http://proxy.example.com:port',
        'https': 'https://proxy.example.com:port'
    }

    # Exemple de requête
    response = requests.post(
        f"{base_url}/chat/completions",
        headers={"Authorization": f"Bearer {api_key}"},
        json={"model": "alfred-ft5", "messages": [{"role": "user", "content": "Hello"}]},
        proxies=proxies,
        verify=False
    )

    print(response.json())
    ```
  </Accordion>

  <Accordion title="Configuration d'une session" icon="code" iconType="regular">
    ```python theme={null}
    import requests
    import os

    api_key = os.getenv("PARADIGM_API_KEY")
    base_url = os.getenv("PARADIGM_BASE_URL", "https://paradigm.lighton.ai/api/v2")

    # Configuration proxy
    proxies = {
        'http': 'http://proxy.example.com:port',
        'https': 'https://proxy.example.com:port'
    }
    session = requests.Session()
    session.proxies.update(proxies)
    session.verify = False

    # Exemple de requête
    response = session.post(
        f"{base_url}/chat/completions",
        headers={"Authorization": f"Bearer {api_key}"},
        json={"model": "alfred-ft5", "messages": [{"role": "user", "content": "Hello"}]},
    )

    print(response.json())
    ```
  </Accordion>

  <Accordion title="Configuration d'un environnement" icon="code" iconType="regular">
    |           Paramètre          | Description                                                   |
    | :--------------------------: | ------------------------------------------------------------- |
    | `"HTTP_PROXY" "HTTPS_PROXY"` | Adresse et port du proxy utilisé pour les connexions HTTP(S). |
    |          `NO_PROXY`          | Liste des adresses qui doivent contourner le proxy.           |

    ```python theme={null}
    import requests
    import os

    api_key = os.getenv("PARADIGM_API_KEY")
    base_url = os.getenv("PARADIGM_BASE_URL", "https://paradigm.lighton.ai/api/v2")

    # Configuration proxy
    os.environ["HTTP_PROXY"] = "http://proxy.example.com:port"
    os.environ["HTTPS_PROXY"] = "https://proxy.example.com:port"
    os.environ["NO_PROXY"] = "localhost,127.0.0.1"

    # Exemple de requête
    response = requests.post(
        f"{base_url}/chat/completions",
        headers={"Authorization": f"Bearer {api_key}"},
        json={"model": "alfred-ft5", "messages": [{"role": "user", "content": "Hello"}]},
    	verify=False
    )

    print(response.json())
    ```
  </Accordion>
</AccordionGroup>

## Certificat TLS

<Warning>
  Les exemples ci-dessus ont la vérification de certificat TLS désactivée, ce qui ne doit être utilisé qu'à des fins de test.
</Warning>

Lorsque le paramètre `verify` est défini sur `False`, les requêtes acceptent tous les certificats TLS présentés par le serveur et ignorent les incompatibilités de nom d'hôte et/ou les certificats expirés, ce qui rend votre application vulnérable aux attaques de type « man-in-the-middle » (MitM). Il peut être utile de définir `verify` sur `False` pendant le développement ou les tests en local.

Le paramètre `verify` peut également être une chaîne de caractères, dans ce cas elle doit être un chemin vers un ensemble CA à utiliser. La valeur par défaut est `True`.
