L’IA est arrivé dans le décor il y a quelques années et Betula a offert, dans la foulée, 2 classes pour accéder au générateur de texte (LLM) d’OpenAI. Les outils et modèles sont multipliés, Betula avait besoin de se mettre à jour. Les classes sont à présent plus nombreuses et structurées. Elles donne toujours accès à OpenAI mais aussi aux LLM locaux de plus en plus populaires (notamment pour des questions de confidentialité).
Pour OpenAI, un compte pour accéder à leur API est nécessaire. Pour les modèles locaux comme LMStudio et Ollama, l’installation de ces applications doit être fait en local (sur votre ordinateur ou votre réseau) et certains paramétrages sont nécessaires. Nous prenons comme hypothèse, ici, que le provider est opérationnel/accessible.
La structure des classes est la suivante. L’ensemble est basé sur les classes existantes cHTTP et cHTTPAPI qui gère notamment l’authentification et le formatage des réponses. Les classes « cAIProvider_xxx » servent à initialiser la connexion au service choisi, notamment en passant l’URL et la clé API (pour OpenAI). Ces classes permettent aussi de lister les modèles qui sont disponibles.
L’instance de classe « provider » créé, elle doit ensuite être passée en paramètre dans les classes héritant de cAIModalityBase qui proposent les services accessibles. Il s’agie ici du « textChat » (conversation au format textuel), la génération d’image, la génération de vidéo, la synthèse et la reconnaissance vocale. Ces 4 derniers sont proposés par OpenAI, les modèles locaux étant souvent limités à la partie conversation. LMStudio étant « compatible » avec le fonctionnement d’OpenAI, certaines classes sont communes à ces deux services.
Attention, pour LMStudio, le modèle n’est pas passé en paramètre, comme Ollama, mais doit être chargé au préalable dans l’interface utilisateur de LMStudio.
cHTTP
└── cHTTPAPI
└── cAIProviderBase
├── cAIProvider_OpenAI
├── cAIProvider_Ollama
└── cAIProvider_LMStudio
cAIModalityBase
├── cAITextBase
│ └── cAITextChat
│ ├── cAITextChat_OpenAI_LM
│ └── cAITextChat_Ollama
├── cAIImageBase
│ └── cAIImage_OpenAI
├── cAIAudioSTT_OpenAI
├── cAIAudioTTS_OpenAI
├── cAIVideoBase
│ └── cAIVideo_OpenAI
└── cAIEmbeddingsBase
├── cAIEmbeddings_OpenAI
└── cAIEmbeddings_Ollama
Les classe Embeddings sont également proposées. Elles permettent de récupérer, sous forme de tableau de réels, une représentation vectorielle d’une entrée donnée, facilement exploitable par les modèles et algorithmes d’apprentissage automatique.
Exemples d’utilisation