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 :
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 :
Chat​
Une fois que vous êtes activé, vous pouvez utiliser l'API au travers de cette interface de 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 :
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'environnementCWAI_API_URL
. Pour la version tunisienne par exemple, la valeur seraithttps://api.cwcloud.tn
. - Il est possible d'envoyer une série de prompt associés aux roles
system
etuser
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 :
Et ensuite invoquer votre fonction serverless comme d'habitude :
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 :
Note : vous pouvez configurer une authentification basique http ou bien passer les headers que vous souhaitez incluant le header Authorization
.