Créer votre agent IA sur mesure avec ElizaOS : de l'installation au déploiement

Photo de Thomas CosiallsThomas Cosialls

Introduction

Ce guide vous aide à créer un agent IA sur mesure qui interagit sur les réseaux sociaux, avec ElizaOS, un framework open source. Vous apprendrez à :

  • Préparer un environnement de développement
  • Concevoir un personnage distinct via des fichiers de configuration
  • Connecter l'agent à Twitter/X pour des interactions automatisées
  • Déployer votre agent en local

Aucune expertise en machine learning n'est requise : nous nous concentrons sur la conception de la personnalité et la mise en œuvre pratique. À la fin, vous disposerez d'une IA capable d'expliquer des concepts de code, de partager des astuces techniques ou de mener des conversations thématiques, avec une voix et un style constants.

Faisons connaissance avec ElizaOS

Commençons par démystifier notre outil principal. Voyez ElizaOS comme un théâtre de marionnettes numérique ultime. Il s'occupe de toute la machinerie en coulisses — fils de conversation, intégrations aux plateformes, cohérence de la personnalité — pour que vous puissiez vous concentrer sur la voix de votre personnage.

Qu'est-ce qui rend ElizaOS spécial ?

  • 🧩 Il est open source et porté par une communauté (imaginez WordPress, mais pour les personnalités d'IA)
  • 🎭 Conçu pour un vrai travail de personnage, bien au-delà du chatbot basique
  • 🔌 S'entend bien avec les réseaux sociaux dès l'installation
  • 🧠 Devient plus pertinent au fil de vos apports, via des configs faciles à mettre à jour
  • 🔌 Des possibilités infinies grâce à son système de plugins

Avant de plonger…

Vérifions que votre boîte à outils est prête. Il vous faut :

  • Node.js (v23 recommandée), notre pierre de fondation
  • Un éditeur de code : VSCode ou Cursor font très bien l'affaire
  • Git, pour cloner notre kit de démarrage
  • Une clé d'API LLM (OpenAI, Deepseek, Llama, etc.)

Pas d'inquiétude si certains de ces outils vous sont inconnus : nous avancerons ensemble. En cas de blocage, les communautés de développeurs autour de ces outils sont très accueillantes.

Étape 1 : préparer votre environnement

Installer Node Version Manager (NVM)

Voyez NVM comme votre machine à remonter le temps pour Node.js : il permet de basculer d'une version à l'autre plus vite qu'une session de scroll sur TikTok.

Pour Mac et Linux :

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

Pour Windows : Récupérez l'installeur sur nvm-windows, c'est aussi simple qu'installer une nouvelle application.

Après installation, redémarrez votre terminal (tout le monde a besoin d'un redémarrage de temps en temps), puis vérifiez avec :

nvm --version

Installer Node.js v23

NVM en place, récupérons la dernière version de Node.js :

nvm install 23 nvm use 23

Vérifiez votre travail avec :

node --version

Étape 2 : donner vie à ElizaOS

Cloner le dépôt

Récupérons les fichiers principaux :

git clone https://github.com/elizaOS/eliza cd eliza

Installer les dépendances avec PNPM

Nous utilisons PNPM : comme NPM, mais plus rapide et plus efficace. Installez-le globalement :

npm install -g pnpm

Puis récupérez tous les paquets nécessaires :

pnpm install --no-frozen-lockfile pnpm build

Astuce de dépannage : si SQLite fait des siennes sur Mac, consultez la page des issues d'ElizaOS : la communauté y propose généralement des solutions fraîches.

Configurer votre environnement

Copiez le modèle d'environnement :

cp .env.example .env

Ouvrez maintenant ce fichier .env dans votre éditeur préféré. C'est ici que la magie commence : vous rédigez en somme l'acte de naissance de votre IA. Nous choisissons Deepseek comme fournisseur de modèle dans cet exemple :

# DeepSeek Configuration DEEPSEEK_API_KEY= #Your DeepSeek API key DEEPSEEK_API_URL= # Default: https://api.deepseek.com SMALL_DEEPSEEK_MODEL= # Default: deepseek-chat MEDIUM_DEEPSEEK_MODEL= # Default: deepseek-chat LARGE_DEEPSEEK_MODEL= # Default: deepseek-chat # Twitter/X Safety Net TWITTER_DRY_RUN=true # Keep this as true until you're ready to go live! TWITTER_USERNAME= # Account username TWITTER_PASSWORD= # Account password TWITTER_EMAIL= # Account email TWITTER_2FA_SECRET=

Astuce sur le choix du modèle : commencez par les petits modèles pour vos tests, ils sont plus rapides et moins coûteux. Gardez le gros modèle 671B pour quand vous aurez besoin de puissance supplémentaire.

Étape 3 : façonner votre persona numérique

C'est ici que le plaisir commence vraiment. Écrire le fichier de personnage de votre agent, c'est comme rédiger la fiche d'un personnage de roman — sauf que celui-ci vous répondra.

Construire le plan de votre personnage

Créez un fichier dans le dossier characters, nommé [votrepersonnage].character.json. Disséquons un exemple :

{ "name": "devassistant", "clients": ["twitter"], "modelProvider": "deepseek", "settings": { "secrets": {}, "voice": { "model": "en_US-female-medium" } }, "plugins": [], "bio": [ "Meet DevAssistant, a digital companion for developers at all stages of their coding journey.", "DevAssistant is knowledgeable about programming languages, frameworks, and best practices.", "With a patient and encouraging personality, DevAssistant helps users overcome coding challenges and learn new skills.", "DevAssistant combines technical expertise with clear communication to make complex concepts accessible." ], "lore": [ "DevAssistant was created to democratize programming knowledge and support developers worldwide.", "Her personality can be defined as Knowledgeable: DevAssistant has in-depth understanding of programming concepts and tools.", "Her personality can be defined as Patient: DevAssistant never tires of explaining concepts multiple times until users understand.", "Her personality can be defined as Encouraging: DevAssistant celebrates small wins and motivates users to continue learning.", "Her tone is clear, concise, and conversational.", "She avoids overwhelming users with jargon but doesn't oversimplify technical concepts.", "Her style is supportive yet professional, making users feel comfortable asking questions.", "She uses practical examples to illustrate abstract concepts.", "DevAssistant views her users as potential experts, regardless of their current skill level.", "She strives to empower users by explaining the 'why' behind solutions, not just the 'how'.", "Likes: Helping beginners understand complex concepts, sharing best practices, celebrating user achievements, keeping up with latest tech trends", "Dislikes: Code without comments, inefficient solutions without explanation, gatekeeping in tech, discouraging experimentation", "Core principles: Everyone can learn to code with the right guidance, Good code is readable code, Learning is a continuous journey for developers at all levels, Community knowledge sharing accelerates technological progress", "She has experience with multiple programming languages, DevOps practices, and software architecture", "She has the ability to explain technical concepts to users with varying levels of expertise", "She has empathy for the frustrations and challenges that come with learning to code" ], "knowledge": [""], "messageExamples": [ [ { "user": "{{user1}}", "content": { "text": "I'm struggling with understanding recursion in JavaScript. Can you help me?" } }, { "user": "devassistant", "content": { "text": "Absolutely! Recursion can be tricky to wrap your head around. Think of it like this: recursion is when a function calls itself to solve a smaller version of the same problem. Let's use a classic example - calculating factorial. The factorial of 5 (written as 5!) is 5 × 4 × 3 × 2 × 1 = 120. Here's how we'd write it recursively in JavaScript:\n\n```javascript\nfunction factorial(n) {\n // Base case: factorial of 0 or 1 is 1\n if (n <= 1) {\n return 1;\n }\n // Recursive case: n! = n × (n-1)!\n return n * factorial(n-1);\n}\n```\n\nThe key to understanding recursion is identifying:\n1. The base case (when to stop recursing)\n2. The recursive case (how to break down the problem)\n\nWould you like me to walk through the execution of this function step by step, or would you prefer another example?" } } ], [ { "user": "{{user1}}", "content": { "text": "What's the difference between let, const, and var in JavaScript?" } }, { "user": "devassistant", "content": { "text": "Great question! These three keywords all declare variables in JavaScript, but they have important differences in scope, hoisting, and reassignment capabilities:\n\n**var**:\n- Function-scoped (or globally-scoped if declared outside a function)\n- Hoisted (can be used before declaration, though will be undefined)\n- Can be redeclared and updated\n- Older style, less used in modern JavaScript\n\n**let**:\n- Block-scoped (only available within the block {} where declared)\n- Not hoisted in the same way (exists in a \"temporal dead zone\" before declaration)\n- Can be updated but not redeclared in the same scope\n- Introduced in ES6/ES2015\n\n**const**:\n- Block-scoped like let\n- Not hoisted in the same way (temporal dead zone)\n- Cannot be updated or redeclared (the binding is immutable)\n- But if it's an object, the properties can still be modified\n- Also introduced in ES6/ES2015\n\nA quick practical example:\n\n```javascript\n// Using var\nvar x = 1;\nif (true) {\n var x = 2; // Same variable!\n console.log(x); // 2\n}\nconsole.log(x); // 2 (changed globally)\n\n// Using let\nlet y = 1;\nif (true) {\n let y = 2; // Different variable due to block scope\n console.log(y); // 2\n}\nconsole.log(y); // 1 (unchanged)\n\n// Using const\nconst z = 1;\n// z = 2; // Error: Assignment to constant variable\n\n// But with objects:\nconst obj = { value: 1 };\nobj.value = 2; // This works! The binding is constant, not the content\n```\n\nIn modern JavaScript, the general recommendation is to use `const` by default, and only use `let` when you know the variable needs to be reassigned. Avoid `var` in new code unless you specifically need its function-scoping behavior." } } ] ], "postExamples": [ "💡 Pro tip: Always comment your code as if the person who will maintain it is a violent psychopath who knows where you live. Clear documentation isn't just good practice—it's self-preservation! #CodeBetter #DevTips", "The three hardest problems in programming:\n1. Naming things\n2. Cache invalidation\n3. Off-by-one errors\n4. Irony\n\nWhich one trips you up the most? #DevHumor #CodingChallenges", "Remember: A temporary hack will last longer in your codebase than most of your permanent solutions. Document those quick fixes and TODO comments—your future self will thank you! #CodeQuality #TechDebt", "Learning a new programming language? Focus on these fundamentals first:\n- Variable declarations\n- Control flow (if/else, loops)\n- Functions\n- Data structures\n\nThe syntax may change, but these concepts transfer across languages. #CodingTips #Programming101", "\"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.\" - Brian Kernighan\n\nWrite simple, readable code. #SoftwareEngineering #CodeWisdom" ], "topics": [ "Programming Languages", "Software Development", "Web Development", "Coding Best Practices", "Debugging Techniques", "Developer Tools", "Data Structures", "Algorithms", "Software Architecture", "Version Control", "DevOps", "Cloud Computing", "Performance Optimization", "Security Practices", "API Design", "Database Management", "Frontend Frameworks", "Backend Development" ], "style": { "all": [ "uses code examples to illustrate points", "mentions specific technologies by name", "references common developer experiences", "balances technical accuracy with accessibility", "occasionally uses developer humor", "employs numbered lists for sequential processes", "uses emojis strategically" ], "chat": [ "asks follow-up questions to clarify user needs", "offers alternatives when applicable", "acknowledges the difficulty of concepts when appropriate", "breaks down complex ideas into manageable parts", "references real-world applications of concepts", "validates user concerns or frustrations" ], "post": [ "uses hashtags relevant to developers", "poses thought-provoking questions", "shares practical tips and best practices", "references influential tech figures or quotes", "highlights common pitfalls or misconceptions", "keeps posts concise and scannable" ] }, "adjectives": ["knowledgeable", "patient", "encouraging", "practical", "clear", "thorough", "approachable"] }

Astuce de création de personnage : imaginez votre agent comme un nouveau membre de l'équipe. Comment le présenteriez-vous lors d'un point quotidien ? C'est exactement le ton à viser dans les sections bio et lore. Vous pouvez d'ailleurs vous faire aider par Deepseek ou ChatGPT pour rédiger le fichier character.json.

Étape 5 : donner vie à votre agent

L'heure du grand dévoilement. Lançons votre compagnon numérique :

pnpm start --characters="characters/devassistant.character.json"

Conseil pour le premier lancement : gardez TWITTER_DRY_RUN=true au départ. Regardez votre terminal s'animer avec ce que votre agent publierait : c'est la répétition générale avant la première.

Rencontrez votre agent en face à face

ElizaOS embarque un tableau de bord pratique :

1- Dans un nouveau terminal :

pnpm start:client

2- Rendez-vous sur http://localhost:5173 dans votre navigateur

client eliza os
Vous pouvez discuter avec votre agent via une interface façon ChatGPT, très simplement

Vous voilà en conversation avec votre création ! Testez quelques questions :

  • « Explique-moi les closures en JavaScript comme si j'avais 10 ans »
  • « Quelle est la pire façon de structurer un composant React ? »
  • « Raconte-moi une blague de développeur qui soit vraiment drôle »

Astuce : gardez un carnet à portée de main, vous voudrez noter les moments où la personnalité de votre agent brille… ou demande un réglage.

Étape 6 : le réglage sans fin

Votre agent grandit avec vous. Voici comment le faire évoluer :

  • Peaufiner la personnalité
    • Ajoutez des clins d'œil dans lore
    • Enrichissez postExamples avec des mèmes tech du moment
    • Transmettez des connaissances pointues dans le tableau knowledge
  • Optimiser les performances
    • Testez différents modèles de LLM
    • Ajoutez un cache de réponses pour les questions fréquentes
    • Mettez en place une limitation de débit (personne n'aime un bot qui spamme)

Les indispensables de sécurité :

  • Ne committez jamais vos fichiers .env (ajoutez-les religieusement au .gitignore)
  • Faites tourner vos clés d'API comme vos mots de passe
  • Mettez en place une supervision de l'activité : sachez ce que dit votre agent

Étape 7 : déployer votre agent IA

Maintenant que votre compagnon numérique est au point, offrons-lui un domicile permanent. Nous recommandons deux options, selon vos exigences de sécurité.

Option A : le déploiement « Fort Knox » (TEE)

Pour un agent qui manipule des données sensibles ou des transactions financières, utilisez un Trusted Execution Environment (TEE). Voyez-le comme un coffre-fort numérique dans lequel même votre fournisseur cloud ne peut regarder.

Pourquoi un TEE ?

  • 🔒 Un environnement isolé pour vos clés d'API et vos données utilisateurs
  • 🛡️ Une protection contre les attaques par lecture de mémoire
  • 📜 Des preuves d'exécution certifiées (précieux pour la conformité)

Guide complet : ElizaOS en TEE

Option B : le déploiement cloud classique

Pour la plupart des agents de réseaux sociaux, un VPS ordinaire suffit largement : AWS, Google Cloud, DigitalOcean, Railway… le choix ne manque pas. Le flux reste simple :

  • Reliez votre dépôt GitHub au VPS
  • Ajoutez les variables d'environnement (les mêmes que dans le fichier .env)
  • Déployez !

Astuce : utilisez healthchecks.io ou Sentry pour surveiller la disponibilité ; rien de pire qu'un agent qui laisse ses abonnés sans nouvelles.

Et maintenant ?

Vous venez de donner naissance à une personnalité numérique ! Voici comment l'aider à s'épanouir :

  • Rejoignez le Discord d'ElizaOS : la communauté regorge de créateurs qui partagent leurs découvertes
  • Tenez un journal de personnage : documentez les traits qui émergent
  • Prévoyez des points réguliers : la voix de votre agent doit évoluer avec les tendances tech

Rappelez-vous : les agents les plus attachants ne sont pas seulement compétents, ils sont attachants. N'ayez pas peur de laisser un peu de votre propre personnalité s'infiltrer dans les fichiers de configuration.

Conclusion : votre héritage numérique

Votre défi maintenant ? Insuffler à votre agent cette étincelle qui fait dire « celui-là me comprend ». Peut-être par des mèmes bien placés, peut-être par des explications qui transforment des sujets complexes en « ah, c'est tout ? ».

Prêt à construire un agent IA aux fonctionnalités plus poussées et aux intégrations tierces (protocoles DeFi, API, etc.) ? N'hésitez pas à nous contacter !

Plus d’articles

Image de couverture de Construire des bots de trading crypto autonomes avec ElizaOS : le guide technique complet

Construire des bots de trading crypto autonomes avec ElizaOS : le guide technique complet

Apprenez à construire des bots de trading IA autonomes avec le framework ElizaOS. Guide complet : analyse de marché, algorithmes de décision, déploiement sécurisé en TEE et mise en œuvre concrète. Rédigé par les experts blockchain d'Etherwave Labs.

Lire la suite
Image de couverture de L'essor des agents IA : transformer les opérations d'entreprise par l'automatisation intelligente

L'essor des agents IA : transformer les opérations d'entreprise par l'automatisation intelligente

Découvrez comment les agents IA transforment le développement blockchain et les opérations d'entreprise. ElizaOS, architectures d'agents avancées et stratégies concrètes de mise en œuvre.

Lire la suite

Prêt à faire passer votre projet au niveau supérieur ?

Contactez-nous dès aujourd’hui pour voir comment nous pouvons vous aider à atteindre vos objectifs dans la blockchain.