Comwork 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
-l, --list string Optional list ID
-m, --message string The message input
-p, --pretty Pretty print the output (optional)
Use "cwc ai prompt [command] --help" for more information about a command.
$ cwc ai prompt --adapter gpt4o --message "Hey"
AI response:
➤ Status: ok
➤ Response: Hello! How can I assist you today?
➤ ListId: 058a8d18-038c-4f09-9b98-20b93076dbe5
Vous pouvez passer ensuite la valeur de ListId
comme argument dans vos prochains prompts afin qu'ils restent dans la même conversation :
$ cwc ai prompt --adapter gpt4o --message "Hey" -l 058a8d18-038c-4f09-9b98-20b93076dbe5
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'adaptateur​
Cette section concerne les contributeurs qui souhaitent ajouter des nouveaux adaptateurs.
Vous pourrez implémenter vos propres adaptateurs pour vos propres adaptateurs et générer vos réponses en implémentant cette abstract1 :
class ModelAdapter(ABC):
@abstractmethod
def generate_response(self, prompt: Prompt):
pass
Ensuite il faut enrichir cette liste2 :
_default_adapters = [
'openmistral',
'mistral',
'claude3',
'gpt4o',
'gpt4omini',
'log'
]