Recherche
Gwenlake est née de la recherche académique, et nous n’avons jamais arrêté : en parallèle des projets clients, l’équipe mène en permanence ses propres projets de recherche, et une partie d’entre elle enseigne et publie toujours. C’est ici que ce travail apparaît : des prototypes à essayer dans votre navigateur, et le code que nous publions en open source.
Petits modèles, transformers, apprentissage par renforcement… et jeux !
Une question que nous rencontrons sur chaque projet : quand une tâche est bien définie et va s’exécuter un million de fois, prend-on un grand modèle généraliste en lui posant la tâche dans ses termes, ou construit-on un petit modèle autour de la structure de la tâche elle-même ?
Nous l’avons posée à deux jeux dont le score ne laisse aucune place au débat, Tetris et les échecs.

- Application · TetrisRegarder le modèle jouerLe transformer par colonnes joue seul, placement après placement, et n’a perdu aucune partie dans nos évaluations.Ouvrir le joueur de Tetris
- Application · ÉchecsJouer contre le modèleAffrontez le modèle de 6,4M de paramètres à l’Elo de votre choix, du joueur de club au moteur, dans votre navigateur.Ouvrir le joueur d’échecs
Gwenflow, notre framework d’IA agentique
Gwenflow exécute des agents IA : donnez à un agent un objectif, des outils, une mémoire et un modèle, et il raisonne, agit, observe et recommence jusqu’à ce que l’objectif soit atteint. C’est le SDK derrière chaque système agentique que nous construisons, et nous l’avons écrit nous-mêmes pour maîtriser chaque ligne de code que nos agents exécutent.
- Python
- Licence MIT
- pip install gwenflow
from gwenflow import Agent, ChatMistralfrom gwenflow.tools import Tool def accounts_at_risk(period: str, min_drop: int = 10) -> list[dict]: """Accounts whose usage fell by at least `min_drop` percent.""" return crm.query(period=period, trend="down", min_drop=min_drop) agent = Agent( name="Account review", instructions="Rank the accounts at risk, with the figures.", llm=ChatMistral(), tools=[Tool(accounts_at_risk)],) response = agent.run("Which accounts are at risk this quarter?")Tous les modèles, une seule API
OpenAI, Anthropic, Mistral, Google, DeepSeek, un Ollama local ou notre propre API : on change de fournisseur avec un import, le code de l’agent reste le même. Raisonnement, streaming et images, audio ou PDF arrivent par le même chemin.
Agents, outils et équipes
Un agent exécute la boucle : appeler le modèle, lancer les outils, lire les résultats, recommencer jusqu’au bout. Toute fonction Python devient un outil. Donnez à un agent une équipe de spécialistes et il leur délègue ; les pipelines plus longs sont des DAG écrits en code ou en YAML.
La production incluse
Sortie structurée en modèles Pydantic, pipeline RAG avec lecteurs de documents et bases vectorielles, skills chargés à la demande, et traçage OpenTelemetry dès l’installation.
Bibliothèques de recherche
Plus petites et plus ciblées. Chacune est née d’un problème que nous avons dû résoudre pour nous-mêmes.
okflib
Stocker, interroger et générer de la connaissance au format Open Knowledge Format : des bundles markdown avec frontmatter YAML, signaux de confiance et ingestion par les LLM.
Voir sur GitHubnanoSAE
Une bibliothèque légère et rapide pour entraîner des autoencodeurs parcimonieux dédiés à l’analyse sémantique.
Voir sur GitHub