Aller au contenu principal

CWCloud AI

Objectif​

Cette fonctionalité a pour but d'exposer des modèle d'IA1 comme des LLM2 afin d'être exposé sous forme d'API.

Voici une rapide démo de ce que vous pouvez réaliser avec cette API :

demo_cwai

Activer cette API​

Dans la version SaaS, vous pouvez demander d'accéder à cette API en utilisant le système de support.

Si vous êtes administrateur de cette instance, vous pouvez autoriser les utilisateurs comme ceci :

cwai_enable

Chat​

Une fois que vous êtes activé, vous pouvez utiliser l'API au travers de cette interface de chat :

cwai_chat

Utiliser l'API​

Bien entendu, l'intérêt principal reste de pouvoir interagir avec ces modèles en utilisant un endpoint http très simple :

cwai_api

Voici comment lister tous les adaptateurs disponibles :

curl -X 'GET' 'https://api.cwcloud.tech/v1/ai/adapters' -H 'accept: application/json' -H 'X-Auth-Token: XXXXXX'

Résultat :

{
"adapters": [
"openmistral",
"mistral",
"claude3",
"deepseek",
"gpt4o",
"gpt4omini",
"gemini",
"log"
],
"status": "ok"
}

Vous pouvez ensuite envoyer des prompts sur les adaptateurs disponibles comme ceci :

curl -X 'POST' \
'https://api.cwcloud.tech/v1/ai/prompt' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'X-Auth-Token: XXXXXX' \
-d '{
"adapter": "gpt4o",
"message": "Hey",
"settings": {}
}'

La réponse devrait ressembler à :

{
"response": [
"Hello! How can I assist you today with cloud automation or deployment using CWCloud?"
],
"status": "ok"
}

Notes :

  • vous devez remplacer la valeur XXXXXX avec votre propre token généré via cette procédure.
  • vous pouvez remplacer l'URL https://api.cwcloud.tech avec celle que vous utilisez dans la variable d'environnement CWAI_API_URL. Pour la version tunisienne par exemple, la valeur serait https://api.cwcloud.tn.
  • Il est possible d'envoyer une série de prompt associés aux roles system et user de la façon suivante :
curl -X 'POST' \
'https://api.cwcloud.tech/v1/ai/prompt' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'X-Auth-Token: XXXXXX' \
-d '{
"adapter": "gpt4o",
"messages": [
{
"role": "system",
"message": "You're a tech assistant"
},
{
"role": "user",
"message": "I need help"
}
],
"settings": {}
}'

Utiliser la CLI​

Vous pouvez utiliser la CLI cwc qui propose une commande ai :

cwc ai
This command lets you call the CWAI endpoints

Usage:
cwc ai
cwc ai [command]

Available Commands:
adapters Get the available adapters
prompt Send a prompt

Flags:
-h, --help help for ai

Use "cwc ai [command] --help" for more information about a command.

Lister les adaptateurs disponibles​

cwc ai adapters
openmistral
mistral
claude3
deepseek
gpt4o
gpt4omini
log

Envoyer un prompt à un des adaptateurs​

$ cwc ai prompt
Error: required flag(s) "adapter", "message" not set
Usage:
cwc ai prompt [flags]
cwc ai prompt [command]

Available Commands:
details Get details about a prompt list
history Get prompt history

Flags:
-a, --adapter string The chosen adapter
-h, --help help for prompt
-m, --message string L'entrée du message
-a, --adapter string L'adaptateur choisi
-l, --list string L'identifiant de la liste (optionnel)
cwc ai prompt --adapter gpt4o --message "Hey"
Status Response ListId
ok Hello! How can I assist you today? d4248b8e-84d5-40cf-8ca8-b6375fc731ee

Afficher l'historique des prompts​

cwc ai prompt history
ID Title Updated At Created At
f81f6dc5-e023-4bc9-9f43-5283f0b6d749 hey 2025-03-18T10:33:07.030558 2025-03-18T10:33:07.030543

Vous pouvez le personnaliser davantage avec les options suivantes :

cwc ai prompt history --max 10 --start 0 --pretty
+--------------------------------------+-------+----------------------------+----------------------------+
| ID | TITLE | UPDATED AT | CREATED AT |
+--------------------------------------+-------+----------------------------+----------------------------+
| d4248b8e-84d5-40cf-8ca8-b6375fc731ee | Hey | 2025-03-18T14:40:33.439588 | 2025-03-18T14:40:33.439578 |
| 94693bdb-c4bf-48e2-bb6e-385cfe017197 | Hey | 2025-03-18T14:38:55.739063 | 2025-03-18T14:38:55.739054 |
| f81f6dc5-e023-4bc9-9f43-5283f0b6d749 | hi | 2025-03-18T10:33:07.030558 | 2025-03-18T10:33:07.030543 |
| 08e99e78-0fe3-45c5-ada7-94c0a3fd0a2c | hello | 2025-03-18T10:16:10.271032 | 2025-03-18T10:16:10.271018 |
+--------------------------------------+-------+----------------------------+----------------------------+

Afficher les détails de chaque prompt list​

go run main.go ai prompt details --list f81f6dc5-e023-4bc9-9f43-5283f0b6d749
7a1a0f48-50c9-4cda-b4fc-e06056e73c97 hi Hello! How can I assist you today?

Vous pouvez le rendre plus lisible avec l'option --pretty :

cwc ai prompt details --list f81f6dc5-e023-4bc9-9f43-5283f0b6d749 --pretty
Prompt List: hi
ID: f81f6dc5-e023-4bc9-9f43-5283f0b6d749
Created: 2025-03-18T10:33:07.030543
Updated: 2025-03-18T10:33:07.030558

Prompts (1):

--- Prompt 1 ---
ID: 7a1a0f48-50c9-4cda-b4fc-e06056e73c97
Adapter: gpt4o
Created: 2025-03-18T10:33:07.335824
Message: hi
Response: Hello! How can I assist you today?
Usage: 18 tokens (Prompt: 8, Completion: 10)

Utiliser le moteur FaaS​

Vous pouvez utiliser le moteur FaaS/low code pour exposer un assistant AI comme ceci :

cwai_faas_blockly

Et ensuite invoquer votre fonction serverless comme d'habitude :

cwai_faas_invoke_cli

Interface d'adapter externe​

Un adapater externe est un microservice qui va permettre d'interfacer vos propres LLM que vous pouvez déployer ou vous souhaitez avec CWCloud.

Ces LLMs seront ensuite utilisables via l'API, le chat ou encore le moteur serverless comme ceux qui sont présents par défaut tout en étant à votre charge côté infrastructure (vous pouvez par exemple les déployer sur des instances CWCloud ou ailleurs).

Votre adapter externe devra exposer un endpoint http POST et pouvoir recevoir ce type de payload json comme body :

{
"adapter": "test",
"settings": {
"max_tokens": 500
},
"message": "A prompt",
"regenerate": false,
"enable_history": true
}

Ou bien ce type de payload avec plusieurs prompts associés à des rôles :

{
"adapter": "test",
"settings": {
"max_tokens": 500
},
"messages": [
{
"role": "system",
"message": "You're a tech assistant"
},
{
"role": "user",
"message": "I need help"
}
],
"regenerate": false,
"enable_history": true
}

Il devra ensuite être exposé à CWCloud en étant associé avec cette interface :

add_external_adapter

Note : vous pouvez configurer une authentification basique http ou bien passer les headers que vous souhaitez incluant le header Authorization.

Footnotes​

  1. Intelligence artificielle ↩

  2. Large language model (traduit en grand modèle liguistique) ↩