Mots-clés : ai, llm, architecture, open source
Une chose étrange se produit autour du projet numéro quarante.
Vous cessez d’être enthousiasmé par le choix des modèles. Vous arrêtez de vous disputer sur le framework à utiliser. Vous arrêtez de penser que la partie la plus difficile est le LLM. Les modèles ennuyeux – ceux que vous recherchez pour savoir si le projet est un résumé de soins de santé, un analyseur de clauses juridiques ou une IA qui appelle un restaurant et commande du biryani – commencent à se cristalliser en un petit ensemble de choix que vous faites presque sans réfléchir. Tout le reste est décoration.
J'ai expédié 113 projets originaux d'IA appliquée sous l'identité GitHubkennedyraju55au cours des 18 derniers mois — tout le monde fonctionne sur une inférence LLM locale (Gemma 4 + Ollama), pas de cloud, pas de clés API. Le portefeuille couvre les soins de santé, le droit, l'éducation, la finance, la sécurité, les outils de développement, les agents vocaux et les assistants d'écriture créative. Dans chacun d’entre eux, les cinq mêmes décisions architecturales ont soit sauvé, soit fait couler le projet. Cet article est la rétrospective que j'aurais aimé que quelqu'un me remette lors du projet numéro un.
Les dix premiers projets ont tous importé une certaine saveur de « cadre d'agent ». LangChain, LlamaIndex, AutoGPT-likes, CrewAI. Chacun d’entre eux a été arraché au moment où le projet a été expédié.
La raison était à chaque fois la même. Le framework voulait gérer le LLM — chaînes, agents, mémoire, répartition des outils — et ce dont j'avais réellement besoin était le contraire. Je voulais que le LLM soit une petite fonction déterministe que j'appelais depuis mon flux de contrôle. L'entrée entre, le JSON structuré sort, mon code décide de ce qui se passe ensuite. C'est toute la forme.
Le modèle qui a survécu est presque embarrassant :
def Ask_llm(system, user, schema=None): resp = ollama.chat( model="gemma3:4b", messages=[{"role":"system","content":system}, {"role":"user","content":user}], options={"temperature": 0, "num_ctx": 8192}, format=schema, # mode de sortie stru...
[Courte citation de 8% de l'article original]