<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>IA Archives | Clever Cloud</title>
	<atom:link href="https://www.clever.cloud/fr/blog/tag/ia/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.clever.cloud/fr/blog/tag/ia/</link>
	<description>From Code to Product</description>
	<lastBuildDate>Tue, 25 Nov 2025 13:14:53 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://cdn.clever-cloud.com/uploads/2023/03/cropped-cropped-favicon-32x32.png</url>
	<title>IA Archives | Clever Cloud</title>
	<link>https://www.clever.cloud/fr/blog/tag/ia/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>SpiNNcloud et Clever Cloud unissent leurs forces pour une plateforme européenne de calcul pour l’IA</title>
		<link>https://www.clever.cloud/fr/blog/presse/2025/11/25/spinncloud-et-clever-cloud-unissent-leurs-forces-pour-une-plateforme-europeenne-de-calcul-pour-lia/</link>
		
		<dc:creator><![CDATA[Carine Guillemet]]></dc:creator>
		<pubDate>Tue, 25 Nov 2025 12:40:17 +0000</pubDate>
				<category><![CDATA[Entreprise]]></category>
		<category><![CDATA[Événements]]></category>
		<category><![CDATA[Presse]]></category>
		<category><![CDATA[europe]]></category>
		<category><![CDATA[IA]]></category>
		<category><![CDATA[partenariat]]></category>
		<category><![CDATA[souveraineté numérique]]></category>
		<guid isPermaLink="false">https://www.clever.cloud/?p=22255</guid>

					<description><![CDATA[<p><img width="800" height="355" src="https://cdn.clever-cloud.com/uploads/2025/11/2025-11-25-partenariat-spinncloud-x-clever-cloud-fr.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="2025 11 25 partenariat spinncloud x clever cloud fr" decoding="async" fetchpriority="high" srcset="https://cdn.clever-cloud.com/uploads/2025/11/2025-11-25-partenariat-spinncloud-x-clever-cloud-fr.png 800w, https://cdn.clever-cloud.com/uploads/2025/11/2025-11-25-partenariat-spinncloud-x-clever-cloud-fr-300x133.png 300w, https://cdn.clever-cloud.com/uploads/2025/11/2025-11-25-partenariat-spinncloud-x-clever-cloud-fr-768x341.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></p><!-- wp:paragraph -->
<p>L’annonce a été faite dans le cadre du sommet franco-allemand « Summit on European Digital Sovereignty – Shaping Europe’s digital future. Together ». Les deux entreprises y voient un levier essentiel pour rendre l’intelligence artificielle plus accessible et réellement souveraine en Europe.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Elles rappellent que, malgré un intérêt croissant pour l’IA, l’adoption industrielle reste largement freinée par les coûts de calcul. Les systèmes actuels de <a href="https://spinncloud.com/" target="_blank" rel="noreferrer noopener">SpiNNcloud</a> permettent déjà de réduire certains coûts jusqu’à 17 fois. La prochaine architecture, <strong>SpiNNext</strong>, devrait pousser encore plus loin ces gains d’efficacité, avec des économies potentielles allant jusqu’à un facteur 80. Une avancée qui pourrait changer la dynamique d’industrialisation de l’IA sur le continent.</p>
<!-- /wp:paragraph -->

<!-- wp:spacer {"height":"13px"} -->
<div style="height:13px" aria-hidden="true" class="wp-block-spacer"></div>
<!-- /wp:spacer -->

<!-- wp:heading -->
<h2 class="wp-block-heading" id="cleverai">Une coopération franco-allemande pour une infrastructure IA souveraine</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Les deux partenaires considèrent leur collaboration comme un élément structurant d’un <strong>axe franco-allemand dédié aux infrastructures d’IA</strong>. Ils soulignent qu’une concurrence durable face aux géants internationaux ne sera possible qu’en renforçant la coopération entre acteurs européens. Leur ambition dépasse d’ailleurs leur seule collaboration : <strong>ils souhaitent associer d’autres PME innovantes du continent pour constituer un réseau d’expertise capable de fournir des briques essentielles du numérique, sans dépendance extérieure</strong>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>Clever Cloud </strong>exploite une plateforme cloud européenne pour l’hébergement, l’automatisation, les bases de données et l’orchestration. Toute la technologie est développée en interne et opérée en Europe. L’entreprise emploie une centaine de personnes et accompagne des clients dans plus de 120 pays.<br><strong>SpiNNcloud</strong>, de son côté, développe des architectures de calcul inspirées du fonctionnement du cerveau humain, destinées au calcul haute performance et aux applications d’intelligence artificielle. Ses systèmes reposent aujourd’hui sur l’architecture SpiNNaker2, tandis que SpiNNext est déjà en développement.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>La coopération est entrée dans une phase opérationnelle. Les premiers systèmes SpiNNcloud sont en cours d’intégration dans l’infrastructure de Clever Cloud, et des<strong> tests techniques sont en cours</strong>. Deux axes de travail sont en développement : l’exploitation directe de la performance des systèmes pour les calculs intensifs, et une couche commune de « Token as a Service », permettant aux entreprises d’utiliser des services d’IA – modèles de langage ou autres algorithmes – sur la base d’une consommation réelle, avec des coûts et une dépense énergétique nettement réduits. Les équipes ont aligné leur feuille de route sur l’intégration, la sécurité et l’exploitation.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>En s’appuyant sur des technologies européennes, tant matériel que logiciel, les deux entreprises souhaitent contribuer à l’<strong>émergence d’une infrastructure d’IA vraiment indépendante</strong>. À la suite du sommet, elles entendent poursuivre les échanges avec les autorités françaises, allemandes et européennes pour partager leur retour d’expérience sur les infrastructures, l’efficacité énergétique et la souveraineté numérique. L’événement entre le président Emmanuel Macron et le chancelier Friedrich Merz sert d’ailleurs de cadre à de nombreux échanges avec les délégations présentes.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>Quentin Adam</strong>, <strong>CEO de Clever Cloud</strong>, déclare : « <em>Nous voulons une Europe qui développe ses propres technologies et maîtrise son avenir numérique. Avec SpiNNcloud, nous démontrons que l’industrie européenne a non seulement le savoir-faire, mais aussi la volonté de répondre aux défis majeurs de l’IA : coûts, consommation énergétique, souveraineté. Cette collaboration montre qu’une Europe qui coopère peut concevoir des infrastructures performantes, efficaces et réellement indépendantes</em>. »</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>Hector Gonzalez</strong>, <strong>CEO de SpiNNcloud</strong>, ajoute : « <em>Avec Clever Cloud, nous avons trouvé un partenaire idéal pour mettre l’efficacité énergétique unique de nos systèmes inspirés du cerveau au service des usages industriels. Cette coopération franco-allemande prouve que l’Europe dispose des briques technologiques nécessaires pour bâtir des solutions compétitives et souveraines</em>. »</p>
<!-- /wp:paragraph -->

<!-- wp:spacer {"height":"13px"} -->
<div style="height:13px" aria-hidden="true" class="wp-block-spacer"></div>
<!-- /wp:spacer -->

<!-- wp:heading -->
<h2 class="wp-block-heading"><strong>À propos de SpiNNcloud</strong></h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>SpiNNcloud réinvente l’infrastructure IA grâce à une architecture de calcul inspirée du cerveau, pensée pour réduire drastiquement la consommation énergétique tout en maintenant un haut niveau de performance. Son approche événementielle, dans laquelle les calculs ne se déclenchent que lorsqu’ils sont réellement nécessaires, ouvre de nouvelles marges d’efficacité. L’entreprise fournit des systèmes complets à des centres de recherche et des entreprises dans le monde entier.</p>
<!-- /wp:paragraph -->

<!-- wp:buttons -->
<div class="wp-block-buttons"><!-- wp:button -->
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://spinncloud.com" target="_blank" rel="noreferrer noopener">Plus d’informations</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->

<!-- wp:spacer {"height":"140px"} -->
<div style="height:140px" aria-hidden="true" class="wp-block-spacer"></div>
<!-- /wp:spacer -->

<!-- wp:media-text {"mediaId":18375,"mediaLink":"https://www.clever.cloud/?attachment_id=18375","mediaType":"image","mediaWidth":30,"metadata":{"name":"Disponibilité et accès"}} -->
<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:30% auto"><figure class="wp-block-media-text__media"><img src="https://cdn.clever-cloud.com/uploads/2025/07/hexagone-lines.png" alt="déploiement automatisé cloud" class="wp-image-18375 size-full"/></figure><div class="wp-block-media-text__content"><!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Vous souhaitez en savoir plus sur ce projet ?</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>N'hésitez pas à nous contacter</p>
<!-- /wp:paragraph -->

<!-- wp:buttons -->
<div class="wp-block-buttons"><!-- wp:button -->
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://www.clever.cloud/fr/contact/" target="_blank" rel="noreferrer noopener">Contactez-nous</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons --></div></div>
<!-- /wp:media-text -->

<!-- wp:spacer {"height":"127px"} -->
<div style="height:127px" aria-hidden="true" class="wp-block-spacer"></div>
<!-- /wp:spacer -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="800" height="355" src="https://cdn.clever-cloud.com/uploads/2025/11/2025-11-25-partenariat-spinncloud-x-clever-cloud-fr.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="2025 11 25 partenariat spinncloud x clever cloud fr" decoding="async" srcset="https://cdn.clever-cloud.com/uploads/2025/11/2025-11-25-partenariat-spinncloud-x-clever-cloud-fr.png 800w, https://cdn.clever-cloud.com/uploads/2025/11/2025-11-25-partenariat-spinncloud-x-clever-cloud-fr-300x133.png 300w, https://cdn.clever-cloud.com/uploads/2025/11/2025-11-25-partenariat-spinncloud-x-clever-cloud-fr-768x341.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></p><!-- wp:paragraph -->
<p>L’annonce a été faite dans le cadre du sommet franco-allemand « Summit on European Digital Sovereignty – Shaping Europe’s digital future. Together ». Les deux entreprises y voient un levier essentiel pour rendre l’intelligence artificielle plus accessible et réellement souveraine en Europe.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Elles rappellent que, malgré un intérêt croissant pour l’IA, l’adoption industrielle reste largement freinée par les coûts de calcul. Les systèmes actuels de <a href="https://spinncloud.com/" target="_blank" rel="noreferrer noopener">SpiNNcloud</a> permettent déjà de réduire certains coûts jusqu’à 17 fois. La prochaine architecture, <strong>SpiNNext</strong>, devrait pousser encore plus loin ces gains d’efficacité, avec des économies potentielles allant jusqu’à un facteur 80. Une avancée qui pourrait changer la dynamique d’industrialisation de l’IA sur le continent.</p>
<!-- /wp:paragraph -->

<!-- wp:spacer {"height":"13px"} -->
<div style="height:13px" aria-hidden="true" class="wp-block-spacer"></div>
<!-- /wp:spacer -->

<!-- wp:heading -->
<h2 class="wp-block-heading" id="cleverai">Une coopération franco-allemande pour une infrastructure IA souveraine</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Les deux partenaires considèrent leur collaboration comme un élément structurant d’un <strong>axe franco-allemand dédié aux infrastructures d’IA</strong>. Ils soulignent qu’une concurrence durable face aux géants internationaux ne sera possible qu’en renforçant la coopération entre acteurs européens. Leur ambition dépasse d’ailleurs leur seule collaboration : <strong>ils souhaitent associer d’autres PME innovantes du continent pour constituer un réseau d’expertise capable de fournir des briques essentielles du numérique, sans dépendance extérieure</strong>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>Clever Cloud </strong>exploite une plateforme cloud européenne pour l’hébergement, l’automatisation, les bases de données et l’orchestration. Toute la technologie est développée en interne et opérée en Europe. L’entreprise emploie une centaine de personnes et accompagne des clients dans plus de 120 pays.<br><strong>SpiNNcloud</strong>, de son côté, développe des architectures de calcul inspirées du fonctionnement du cerveau humain, destinées au calcul haute performance et aux applications d’intelligence artificielle. Ses systèmes reposent aujourd’hui sur l’architecture SpiNNaker2, tandis que SpiNNext est déjà en développement.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>La coopération est entrée dans une phase opérationnelle. Les premiers systèmes SpiNNcloud sont en cours d’intégration dans l’infrastructure de Clever Cloud, et des<strong> tests techniques sont en cours</strong>. Deux axes de travail sont en développement : l’exploitation directe de la performance des systèmes pour les calculs intensifs, et une couche commune de « Token as a Service », permettant aux entreprises d’utiliser des services d’IA – modèles de langage ou autres algorithmes – sur la base d’une consommation réelle, avec des coûts et une dépense énergétique nettement réduits. Les équipes ont aligné leur feuille de route sur l’intégration, la sécurité et l’exploitation.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>En s’appuyant sur des technologies européennes, tant matériel que logiciel, les deux entreprises souhaitent contribuer à l’<strong>émergence d’une infrastructure d’IA vraiment indépendante</strong>. À la suite du sommet, elles entendent poursuivre les échanges avec les autorités françaises, allemandes et européennes pour partager leur retour d’expérience sur les infrastructures, l’efficacité énergétique et la souveraineté numérique. L’événement entre le président Emmanuel Macron et le chancelier Friedrich Merz sert d’ailleurs de cadre à de nombreux échanges avec les délégations présentes.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>Quentin Adam</strong>, <strong>CEO de Clever Cloud</strong>, déclare : « <em>Nous voulons une Europe qui développe ses propres technologies et maîtrise son avenir numérique. Avec SpiNNcloud, nous démontrons que l’industrie européenne a non seulement le savoir-faire, mais aussi la volonté de répondre aux défis majeurs de l’IA : coûts, consommation énergétique, souveraineté. Cette collaboration montre qu’une Europe qui coopère peut concevoir des infrastructures performantes, efficaces et réellement indépendantes</em>. »</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>Hector Gonzalez</strong>, <strong>CEO de SpiNNcloud</strong>, ajoute : « <em>Avec Clever Cloud, nous avons trouvé un partenaire idéal pour mettre l’efficacité énergétique unique de nos systèmes inspirés du cerveau au service des usages industriels. Cette coopération franco-allemande prouve que l’Europe dispose des briques technologiques nécessaires pour bâtir des solutions compétitives et souveraines</em>. »</p>
<!-- /wp:paragraph -->

<!-- wp:spacer {"height":"13px"} -->
<div style="height:13px" aria-hidden="true" class="wp-block-spacer"></div>
<!-- /wp:spacer -->

<!-- wp:heading -->
<h2 class="wp-block-heading"><strong>À propos de SpiNNcloud</strong></h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>SpiNNcloud réinvente l’infrastructure IA grâce à une architecture de calcul inspirée du cerveau, pensée pour réduire drastiquement la consommation énergétique tout en maintenant un haut niveau de performance. Son approche événementielle, dans laquelle les calculs ne se déclenchent que lorsqu’ils sont réellement nécessaires, ouvre de nouvelles marges d’efficacité. L’entreprise fournit des systèmes complets à des centres de recherche et des entreprises dans le monde entier.</p>
<!-- /wp:paragraph -->

<!-- wp:buttons -->
<div class="wp-block-buttons"><!-- wp:button -->
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://spinncloud.com" target="_blank" rel="noreferrer noopener">Plus d’informations</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->

<!-- wp:spacer {"height":"140px"} -->
<div style="height:140px" aria-hidden="true" class="wp-block-spacer"></div>
<!-- /wp:spacer -->

<!-- wp:media-text {"mediaId":18375,"mediaLink":"https://www.clever.cloud/?attachment_id=18375","mediaType":"image","mediaWidth":30,"metadata":{"name":"Disponibilité et accès"}} -->
<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:30% auto"><figure class="wp-block-media-text__media"><img src="https://cdn.clever-cloud.com/uploads/2025/07/hexagone-lines.png" alt="déploiement automatisé cloud" class="wp-image-18375 size-full"/></figure><div class="wp-block-media-text__content"><!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Vous souhaitez en savoir plus sur ce projet ?</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>N'hésitez pas à nous contacter</p>
<!-- /wp:paragraph -->

<!-- wp:buttons -->
<div class="wp-block-buttons"><!-- wp:button -->
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://www.clever.cloud/fr/contact/" target="_blank" rel="noreferrer noopener">Contactez-nous</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons --></div></div>
<!-- /wp:media-text -->

<!-- wp:spacer {"height":"127px"} -->
<div style="height:127px" aria-hidden="true" class="wp-block-spacer"></div>
<!-- /wp:spacer -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Créer votre serveur MCP ou client MCP : Otoroshi vous simplifie la vie</title>
		<link>https://www.clever.cloud/fr/blog/engineering-fr/2025/01/21/creer-votre-serveur-mcp-client-mcp/</link>
		
		<dc:creator><![CDATA[David Legrand]]></dc:creator>
		<pubDate>Tue, 21 Jan 2025 08:42:36 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[fonctionnalité]]></category>
		<category><![CDATA[IA]]></category>
		<guid isPermaLink="false">https://www.clever-cloud.com/?p=15654</guid>

					<description><![CDATA[<p><img width="2400" height="1065" src="https://cdn.clever-cloud.com/uploads/2025/01/2025-01-21-clever-cloud-banniere-blog-otoroshi-with-llm-mcp-fr.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="2025 01 21 clever cloud banniere blog otoroshi with llm mcp fr" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2025/01/2025-01-21-clever-cloud-banniere-blog-otoroshi-with-llm-mcp-fr.png 2400w, https://cdn.clever-cloud.com/uploads/2025/01/2025-01-21-clever-cloud-banniere-blog-otoroshi-with-llm-mcp-fr-300x133.png 300w, https://cdn.clever-cloud.com/uploads/2025/01/2025-01-21-clever-cloud-banniere-blog-otoroshi-with-llm-mcp-fr-1024x454.png 1024w, https://cdn.clever-cloud.com/uploads/2025/01/2025-01-21-clever-cloud-banniere-blog-otoroshi-with-llm-mcp-fr-768x341.png 768w, https://cdn.clever-cloud.com/uploads/2025/01/2025-01-21-clever-cloud-banniere-blog-otoroshi-with-llm-mcp-fr-1536x682.png 1536w, https://cdn.clever-cloud.com/uploads/2025/01/2025-01-21-clever-cloud-banniere-blog-otoroshi-with-llm-mcp-fr-2048x909.png 2048w, https://cdn.clever-cloud.com/uploads/2025/01/2025-01-21-clever-cloud-banniere-blog-otoroshi-with-llm-mcp-fr-1368x607.png 1368w" sizes="auto, (max-width: 2400px) 100vw, 2400px" /></p><!-- wp:paragraph -->
<p>Les fournisseurs de services IA se multiplient. Chacun y va de son nouveau modèle, plus rapide, plus convaincant pour créer des applications, capable de "réflexion". Mais de plus en plus, les utilisateurs cherchent non pas à obtenir de réponses génériques plus ou moins efficaces et pertinentes. <strong>Ils veulent disposer d'assistants qui peuvent aller récupérer du contexte</strong> depuis différents services afin de les faire travailler ensemble.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">MCP: le Function Calling et au-delà</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Depuis quelque temps déjà, les modèles se sont dotés d'une capacité dite de Function Calling. Lorsqu'un type de phrase particulier est repéré, il peut être utilisé pour appeler une fonction et lui fournir des paramètres afin de récupérer une réponse issue d'un service tiers. Mais comme souvent, cela s'est fait dans les premiers temps avec une approche différente d'un fournisseur à l'autre, d'un outil de déploiement à l'autre. Ainsi est né <strong>MCP : Model Context Protocol.</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Présenté par Anthropic <a href="https://www.anthropic.com/news/model-context-protocol" target="_blank" rel="noreferrer noopener">fin novembre</a>, MCP se donne pour but de standardiser la manière de fournir du contexte aux grands modèles de langage (LLMs). <strong>Il prend la forme d'un serveur, dit serveur MCP, et un client qui peut exposer des fonctions, des prompts, mais également des ressources</strong> telles que du texte, des logs, des images, etc. Et d'un serveur qui peut lister tous ces éléments afin de les utiliser. Le protocole, ouvert et actuellement en pleine évolution, repose sur <a href="https://www.jsonrpc.org/specification">JSON-RPC 2.0</a> et deux modes de "transport" : <a href="https://en.wikipedia.org/wiki/Standard_streams#Standard_input_(stdin)" target="_blank" rel="noreferrer noopener">stdio</a> et <a href="https://en.wikipedia.org/wiki/Server-sent_events" target="_blank" rel="noreferrer noopener">SSE</a> (Server-Sent Events), mais d'autres peuvent être exploités. Si vous voulez en savoir plus, les spécifications techniques sont détaillées <a href="https://spec.modelcontextprotocol.io/latest" target="_blank" rel="noreferrer noopener">par ici</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"lightbox":{"enabled":true},"id":15664,"sizeSlug":"large","linkDestination":"none","align":"wide"} -->
<figure class="wp-block-image alignwide size-large"><img src="https://cdn.clever-cloud.com/uploads/2025/01/image-1024x642.png" alt="Redémarrage d'une application Clever Cloud grâce à l'IA" class="wp-image-15664"/><figcaption class="wp-element-caption">Une IA qui redémarre une application Clever Cloud ? C'est possible avec MCP !</figcaption></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Il existe différentes implémentations officielles, pour Kotlin, Python, TypeScript, puis une myriade des solutions officieuses. On trouve d'ailleurs déjà <a href="https://github.com/search?q=awesome%20mcp&amp;type=repositories" target="_blank" rel="noreferrer noopener">de nombreuses listes</a> de clients/serveurs qui vont de la capacité à lire des fichiers locaux à la lecture de bases de données ou la récupération d'information depuis un compte GitHub par exemple. Outre <a href="https://modelcontextprotocol.io/quickstart/user">l'intégration aux clients Desktop de Claude</a> (le service de chat d'Anthropic), plusieurs IDE et extensions se mettent à MCP: <a href="https://github.com/cline/cline/releases/tag/v2.2.0">Cline</a>, <a href="https://docs.continue.dev/customize/context-providers#model-context-protocol">Continue</a>, <a href="https://zed.dev/docs/assistant/model-context-protocol" target="_blank" rel="noreferrer noopener">Zed</a>, etc.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>En pratique, il n'est pas très complexe de créer un serveur MCP, d'autant que les SDK peuvent vous y aider et que les guides se multiplient. Mais comment les exposer à une multitude de modèles, les intégrer à vos outils ensuite ? C'est là que les choses peuvent se compliquer.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Otoroshi simplifie l'accès au Function calling et à MCP</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Ainsi, dès décembre nous avons commencé à travailler avec l'équipe de Cloud APIM afin de simplifier l'usage de ce protocole au sein d'Otoroshi with LLM, que <a href="https://www.clever.cloud/developers/doc/addons/otoroshi/">nous proposons sous la forme d'un add-on</a> qui se déploie en quelques clics. Il supportait déjà nativement le Function Calling, permettant à n'importe quel modèle d'être enrichi par des fonctions écrites en <a href="https://webassembly.org/" target="_blank" rel="noreferrer noopener">Web Assembly</a> (WASM, via <a href="https://extism.org/" target="_blank" rel="noreferrer noopener">Extism</a>) ou en JavaScript. C'était l'occasion d'aller plus loin.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"lightbox":{"enabled":true},"id":15666,"sizeSlug":"full","linkDestination":"none","align":"wide"} -->
<figure class="wp-block-image alignwide size-full"><img src="https://cdn.clever-cloud.com/uploads/2025/01/image-1.png" alt="Ajout d'une fonction WASM" class="wp-image-15666"/><figcaption class="wp-element-caption">Ajouter une fonction WASM à vos modèles ? C'est simple comme un bout de JS.</figcaption></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Ainsi, la nouvelle version déployée sur Clever Cloud gère désormais:</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul class="wp-block-list"><!-- wp:list-item -->
<li>MCP Endpoint : pour exposer des fonctions aux clients MCP</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>MCP Connectors : pour ajouter des fonctions depuis un serveur MCP</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Les serveurs MCP créés par Otoroshi peuvent communiquer avec des clients directement via SSE, mais également des requêtes HTTP ou des WebSocket. Leur création ne prend que quelques minutes. Si votre client ne supporte que stdio, vous pouvez utiliser <a href="https://github.com/cloud-apim/otoroshi-mcp-proxy" target="_blank" rel="noreferrer noopener">le proxy développé par l'équipe de Cloud APIM</a> qui assurera de communication avec le serveur.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Nous en avons profité pour ajouter le support de <a href="https://www.deepseek.com/" target="_blank" rel="noreferrer noopener">DeepSeek</a> comme fournisseur et le support des fonctions sous la forme d'appel HTTP. Ainsi, <strong>Otoroshi peut exploiter notre FaaS, actuellement en alpha privée</strong>, avec différents modèles d'IA.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Et en pratique ?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Envie d'en savoir plus ? <strong>Rendez-vous à 13h <a href="https://www.twitch.tv/clevercloud">sur notre chaîne Twitch</a> !</strong> Nous organisons une <strong>démonstration en direct</strong>. Vous pourrez ainsi découvrir comment configurer et utiliser Otoroshi with LLM pour créer vos propres clients/serveurs MCP en quelques minutes !</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>N'hésitez pas également à venir à notre rencontre <a href="https://opensourceaisummit.eu">au Paris Open Source AI Summit</a> ce mercredi 22 janvier, plusieurs membres de notre équipe seront sur place.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"lightbox":{"enabled":false},"id":15669,"sizeSlug":"large","linkDestination":"custom"} -->
<figure class="wp-block-image size-large"><a href="https://www.twitch.tv/clevercloud"><img src="https://cdn.clever-cloud.com/uploads/2025/01/image-3-1024x576.png" alt="Bannière de la démo Twitch ainsi que de l'événement POSAIS" class="wp-image-15669"/></a></figure>
<!-- /wp:image -->]]></description>
										<content:encoded><![CDATA[<p><img width="2400" height="1065" src="https://cdn.clever-cloud.com/uploads/2025/01/2025-01-21-clever-cloud-banniere-blog-otoroshi-with-llm-mcp-fr.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="2025 01 21 clever cloud banniere blog otoroshi with llm mcp fr" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2025/01/2025-01-21-clever-cloud-banniere-blog-otoroshi-with-llm-mcp-fr.png 2400w, https://cdn.clever-cloud.com/uploads/2025/01/2025-01-21-clever-cloud-banniere-blog-otoroshi-with-llm-mcp-fr-300x133.png 300w, https://cdn.clever-cloud.com/uploads/2025/01/2025-01-21-clever-cloud-banniere-blog-otoroshi-with-llm-mcp-fr-1024x454.png 1024w, https://cdn.clever-cloud.com/uploads/2025/01/2025-01-21-clever-cloud-banniere-blog-otoroshi-with-llm-mcp-fr-768x341.png 768w, https://cdn.clever-cloud.com/uploads/2025/01/2025-01-21-clever-cloud-banniere-blog-otoroshi-with-llm-mcp-fr-1536x682.png 1536w, https://cdn.clever-cloud.com/uploads/2025/01/2025-01-21-clever-cloud-banniere-blog-otoroshi-with-llm-mcp-fr-2048x909.png 2048w, https://cdn.clever-cloud.com/uploads/2025/01/2025-01-21-clever-cloud-banniere-blog-otoroshi-with-llm-mcp-fr-1368x607.png 1368w" sizes="auto, (max-width: 2400px) 100vw, 2400px" /></p><!-- wp:paragraph -->
<p>Les fournisseurs de services IA se multiplient. Chacun y va de son nouveau modèle, plus rapide, plus convaincant pour créer des applications, capable de "réflexion". Mais de plus en plus, les utilisateurs cherchent non pas à obtenir de réponses génériques plus ou moins efficaces et pertinentes. <strong>Ils veulent disposer d'assistants qui peuvent aller récupérer du contexte</strong> depuis différents services afin de les faire travailler ensemble.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">MCP: le Function Calling et au-delà</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Depuis quelque temps déjà, les modèles se sont dotés d'une capacité dite de Function Calling. Lorsqu'un type de phrase particulier est repéré, il peut être utilisé pour appeler une fonction et lui fournir des paramètres afin de récupérer une réponse issue d'un service tiers. Mais comme souvent, cela s'est fait dans les premiers temps avec une approche différente d'un fournisseur à l'autre, d'un outil de déploiement à l'autre. Ainsi est né <strong>MCP : Model Context Protocol.</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Présenté par Anthropic <a href="https://www.anthropic.com/news/model-context-protocol" target="_blank" rel="noreferrer noopener">fin novembre</a>, MCP se donne pour but de standardiser la manière de fournir du contexte aux grands modèles de langage (LLMs). <strong>Il prend la forme d'un serveur, dit serveur MCP, et un client qui peut exposer des fonctions, des prompts, mais également des ressources</strong> telles que du texte, des logs, des images, etc. Et d'un serveur qui peut lister tous ces éléments afin de les utiliser. Le protocole, ouvert et actuellement en pleine évolution, repose sur <a href="https://www.jsonrpc.org/specification">JSON-RPC 2.0</a> et deux modes de "transport" : <a href="https://en.wikipedia.org/wiki/Standard_streams#Standard_input_(stdin)" target="_blank" rel="noreferrer noopener">stdio</a> et <a href="https://en.wikipedia.org/wiki/Server-sent_events" target="_blank" rel="noreferrer noopener">SSE</a> (Server-Sent Events), mais d'autres peuvent être exploités. Si vous voulez en savoir plus, les spécifications techniques sont détaillées <a href="https://spec.modelcontextprotocol.io/latest" target="_blank" rel="noreferrer noopener">par ici</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"lightbox":{"enabled":true},"id":15664,"sizeSlug":"large","linkDestination":"none","align":"wide"} -->
<figure class="wp-block-image alignwide size-large"><img src="https://cdn.clever-cloud.com/uploads/2025/01/image-1024x642.png" alt="Redémarrage d'une application Clever Cloud grâce à l'IA" class="wp-image-15664"/><figcaption class="wp-element-caption">Une IA qui redémarre une application Clever Cloud ? C'est possible avec MCP !</figcaption></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Il existe différentes implémentations officielles, pour Kotlin, Python, TypeScript, puis une myriade des solutions officieuses. On trouve d'ailleurs déjà <a href="https://github.com/search?q=awesome%20mcp&amp;type=repositories" target="_blank" rel="noreferrer noopener">de nombreuses listes</a> de clients/serveurs qui vont de la capacité à lire des fichiers locaux à la lecture de bases de données ou la récupération d'information depuis un compte GitHub par exemple. Outre <a href="https://modelcontextprotocol.io/quickstart/user">l'intégration aux clients Desktop de Claude</a> (le service de chat d'Anthropic), plusieurs IDE et extensions se mettent à MCP: <a href="https://github.com/cline/cline/releases/tag/v2.2.0">Cline</a>, <a href="https://docs.continue.dev/customize/context-providers#model-context-protocol">Continue</a>, <a href="https://zed.dev/docs/assistant/model-context-protocol" target="_blank" rel="noreferrer noopener">Zed</a>, etc.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>En pratique, il n'est pas très complexe de créer un serveur MCP, d'autant que les SDK peuvent vous y aider et que les guides se multiplient. Mais comment les exposer à une multitude de modèles, les intégrer à vos outils ensuite ? C'est là que les choses peuvent se compliquer.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Otoroshi simplifie l'accès au Function calling et à MCP</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Ainsi, dès décembre nous avons commencé à travailler avec l'équipe de Cloud APIM afin de simplifier l'usage de ce protocole au sein d'Otoroshi with LLM, que <a href="https://www.clever.cloud/developers/doc/addons/otoroshi/">nous proposons sous la forme d'un add-on</a> qui se déploie en quelques clics. Il supportait déjà nativement le Function Calling, permettant à n'importe quel modèle d'être enrichi par des fonctions écrites en <a href="https://webassembly.org/" target="_blank" rel="noreferrer noopener">Web Assembly</a> (WASM, via <a href="https://extism.org/" target="_blank" rel="noreferrer noopener">Extism</a>) ou en JavaScript. C'était l'occasion d'aller plus loin.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"lightbox":{"enabled":true},"id":15666,"sizeSlug":"full","linkDestination":"none","align":"wide"} -->
<figure class="wp-block-image alignwide size-full"><img src="https://cdn.clever-cloud.com/uploads/2025/01/image-1.png" alt="Ajout d'une fonction WASM" class="wp-image-15666"/><figcaption class="wp-element-caption">Ajouter une fonction WASM à vos modèles ? C'est simple comme un bout de JS.</figcaption></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Ainsi, la nouvelle version déployée sur Clever Cloud gère désormais:</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul class="wp-block-list"><!-- wp:list-item -->
<li>MCP Endpoint : pour exposer des fonctions aux clients MCP</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>MCP Connectors : pour ajouter des fonctions depuis un serveur MCP</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Les serveurs MCP créés par Otoroshi peuvent communiquer avec des clients directement via SSE, mais également des requêtes HTTP ou des WebSocket. Leur création ne prend que quelques minutes. Si votre client ne supporte que stdio, vous pouvez utiliser <a href="https://github.com/cloud-apim/otoroshi-mcp-proxy" target="_blank" rel="noreferrer noopener">le proxy développé par l'équipe de Cloud APIM</a> qui assurera de communication avec le serveur.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Nous en avons profité pour ajouter le support de <a href="https://www.deepseek.com/" target="_blank" rel="noreferrer noopener">DeepSeek</a> comme fournisseur et le support des fonctions sous la forme d'appel HTTP. Ainsi, <strong>Otoroshi peut exploiter notre FaaS, actuellement en alpha privée</strong>, avec différents modèles d'IA.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Et en pratique ?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Envie d'en savoir plus ? <strong>Rendez-vous à 13h <a href="https://www.twitch.tv/clevercloud">sur notre chaîne Twitch</a> !</strong> Nous organisons une <strong>démonstration en direct</strong>. Vous pourrez ainsi découvrir comment configurer et utiliser Otoroshi with LLM pour créer vos propres clients/serveurs MCP en quelques minutes !</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>N'hésitez pas également à venir à notre rencontre <a href="https://opensourceaisummit.eu">au Paris Open Source AI Summit</a> ce mercredi 22 janvier, plusieurs membres de notre équipe seront sur place.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"lightbox":{"enabled":false},"id":15669,"sizeSlug":"large","linkDestination":"custom"} -->
<figure class="wp-block-image size-large"><a href="https://www.twitch.tv/clevercloud"><img src="https://cdn.clever-cloud.com/uploads/2025/01/image-3-1024x576.png" alt="Bannière de la démo Twitch ainsi que de l'événement POSAIS" class="wp-image-15669"/></a></figure>
<!-- /wp:image -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Déployez llama, mistral, openchat ou votre propre modèle sur Clever Cloud</title>
		<link>https://www.clever.cloud/fr/blog/engineering-fr/2023/11/27/deployez-llama-mistral-openchat-ou-votre-propre-modele-sur-clever-cloud/</link>
		
		<dc:creator><![CDATA[David Legrand]]></dc:creator>
		<pubDate>Mon, 27 Nov 2023 09:22:00 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[IA]]></category>
		<guid isPermaLink="false">https://www.clever-cloud.com/?p=11187</guid>

					<description><![CDATA[<p><img width="900" height="355" src="https://cdn.clever-cloud.com/uploads/2023/11/deploiementiasurcc.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="deploiementiasurcc" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2023/11/deploiementiasurcc.png 900w, https://cdn.clever-cloud.com/uploads/2023/11/deploiementiasurcc-300x118.png 300w, https://cdn.clever-cloud.com/uploads/2023/11/deploiementiasurcc-768x303.png 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></p><!-- wp:paragraph -->
<p><strong>Si l'IA fait parler d'elle ces derniers temps, c'est notamment au travers des larges modèles de langages (LLMs)  qui nécessitent une puissance de calcul conséquente pour leur entrainement ou leur exécution. Ainsi, il est courant de voir les développeurs y recourir à travers des API clés en main, comme nous l'avions fait <a href="https://www.clever.cloud/fr/blog/fonctionnalites/2023/10/11/deployez-un-chatgpt-personnalise-base-sur-php/">dans un précédent article</a>. Mais cela change grâce à des modèles et outils plus ouverts et efficaces, que vous pouvez très facilement déployer sur Clever Cloud.</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>En effet, si notre plateforme a été pensée pour certains usages, nous avons toujours accordé une grande importance à sa flexibilité et à la liberté laissée à nos clients. Ils peuvent ainsi aisément l'exploiter pour attaquer de nouveaux marchés, avec très peu de travail d'adaptation.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Pour le vérifier, nous avons récemment tenté de déployer des modèles d'IA open source tels que ceux dérivés de LLaMA et Mistral. Ils ont pour particularité d'exister dans des versions allégées, ne nécessitant pas forcément de GPU pour fonctionner. Ainsi, il est possible de les héberger comme de simples applications Clever Cloud, tant qu'assez de mémoire leur est attribuée.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Let's ollama (avec une interface web) !</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Pour cela, nous avons choisi d'utiliser <a href="https://github.com/jmorganca/ollama" target="_blank" rel="noreferrer noopener">ollama</a>, un projet sous licence MIT qui permet de télécharger des modèles disponibles depuis <a href="https://ollama.ai/library">un registre</a> ou même <a href="https://github.com/jmorganca/ollama/blob/main/docs/modelfile.md" target="_blank" rel="noreferrer noopener">les vôtres</a>. Il prend la forme d'un serveur qui communique via une API, très simple à héberger sur nos infrastructures.</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><a href="https://api.clever-cloud.com/v2/session/signup">Créer un compte Clever Cloud</a>&nbsp;(et obtenir 20 euros de crédits)</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Pour commencer, vous devrez disposer d'un compte Clever Cloud. Vous pouvez créer l'application et suivre les étapes suivantes en utilisant notre interface web,<a href="https://console.clever-cloud.com"> la Console</a>, mais aussi à travers notre CLI open source : <a href="https://github.com/CleverCloud/clever-tools" target="_blank" rel="noreferrer noopener">Clever Tools</a>. C'est ce que nous ferons ci-dessous. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Nous partirons ainsi du principe que vous disposez d’une machine avec&nbsp;<a href="https://git-scm.com/book/fr/v2/D%C3%A9marrage-rapide-Installation-de-Git" target="_blank" rel="noreferrer noopener">git</a>&nbsp;et&nbsp;<a href="https://nodejs.org/en/learn/getting-started/how-to-install-nodejs" target="_blank" rel="noreferrer noopener">Node.js</a>&nbsp;dans une version récente. Si vous n’avez pas encore installé les Clever Tools sur votre système, tapez (avec les droits administrateur de votre système ou&nbsp;<code>sudo</code>&nbsp;si nécessaire) :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">npm i -g clever-tools
clever login</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Une fois connecté, vous pourrez vérifier que tout s’est bien passé avec la commande suivante :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever profile</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ensuite, nous créons une application Clever Cloud avec Node.js. Elle installera ollama pour télécharger et exécuter nos modèles, en lui ajoutant avec une interface web (<a href="https://github.com/ivanfioravanti/chatbot-ollama" target="_blank" rel="noreferrer noopener">chatbot-ollama</a>, également sous licence MIT) qui nous permettra d'interroger le serveur depuis n'importe quel navigateur, exécuté depuis un ordinateur ou même un simple smartphone.  </p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"wide","id":11239,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image alignwide size-full"><a href="https://cdn.clever-cloud.com/uploads/2023/11/sans-titre-1-scaled.webp" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/11/sans-titre-1-scaled.webp" alt="Chatbot Ollama" class="wp-image-11239" title="Chatbot Ollama"/></a></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Cette solution a également l'intérêt de stocker les conversations localement, dans le navigateur. Elle ne nécessite donc pas de base de données, mais propose une fonction d'import/export. On peut également choisir entre différents modèles, régler certains de leurs paramètres, configurer des instructions système, différents prompts, etc.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">mkdir myollama && cd myollama
git init
curl -L https://github.com/ivanfioravanti/chatbot-ollama/archive/refs/heads/main.tar.gz | tar -xz --strip-components=1

clever create -t node myollama && clever scale --flavor L
clever env set CC_POST_BUILD_HOOK "npx next telemetry disable && npm run build"
clever env set CC_PRE_BUILD_HOOK "./ollama_setup.sh"
clever env set CC_PRE_RUN_HOOK "./ollama_start.sh"

echo "orca-mini" > models.list
echo "mistral" >> models.list
echo "codellama" >> models.list</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Le code ci-dessus créé l'application. Nous y ajoutons un fichier qui contiendra la liste des modèles à récupérer lors de son initialisation. Nous optons pour une instance L, la taille minimale pour charger de tels modèles en mémoire. On déclare ensuite plusieurs variables d'environnement pour lancer des scripts afin d'installer ollama, démarrer le serveur et désactiver la télémétrie du framework Next.js, utilisé pour construire l'interface web après l'installation des dépendances.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Ajoutons quelques scripts</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Notre application est presque prête. Il nous reste en effet à créer deux fichiers, exécutables :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">touch ollama_setup.sh && chmod +x ollama_setup.sh
touch ollama_start.sh && chmod +x ollama_start.sh</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p><code>ollama_setup.sh</code> télécharge le binaire d'ollama puis les modèles de notre liste. Ouvrez-le avec l'éditeur de votre choix et placez-y le contenu suivant :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">#!/bin/bash

# We define the folder (in $PATH), where the ollama binary will be placed
BIN_DIR=${HOME}/.local/bin
mkdir -p ${BIN_DIR} 

ollama_start() {
    echo "Downloading and launching ollama..."
    curl -Ls https://ollama.ai/download/ollama-linux-amd64 -o ${BIN_DIR}/ollama
    chmod +x ${BIN_DIR}/ollama
    ollama serve &> /dev/null &
    echo -e "Finished: \033[32m✔\033[0m\n"
}

get_models() {
    MODELS_FILE="models.list"
    MODELS_DEFAULT="orca-mini"

    # We check if the models file exists
    if [ ! -f ${MODELS_FILE} ]; then
        echo "File ${MODELS_FILE} not found, ${MODELS_DEFAULT} used by default."
        echo ${MODELS_DEFAULT} > ${MODELS_FILE}
    fi

    # Loop through each line and pull model
    while IFS= read -r line; do
        echo "Pulling ${line} model..."
        ollama pull "${line}" > /dev/null 2>&1
        echo -e "Finished: \033[32m✔\033[0m\n"

    done < ${MODELS_FILE}
}

# We start ollama, and wait for it to respond
ollama_start
if [ $? -ne 0 ]; then
    echo -e "\nError during ollama setup."
    exit 1
fi

count=0
MAX_TIME=10

while ! pgrep -x "ollama" > /dev/null; do
    if [ ${count} -lt ${MAX_TIME} ]; then
        sleep 1
        count=$((count+1))
    else
        echo "Application 'ollama' did not launch within 10 seconds."
        exit 1
    fi
done

get_models
if [ $? -ne 0 ]; then
    echo -e "\nError during models downloading."
    exit 1
fi
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ce code peut paraître un peu long, mais c'est notamment parce que nous l'avons rendu modulaire, en n'écrivant dans les logs que les étapes réussies ou les éventuelles erreurs.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><code>ollama_start.sh</code> détecte si le serveur ollama est déjà présent avant de démarrer l'interface web. Si ce n'est pas le cas, on le lance en tâche de fond (nous verrons plus bas pourquoi). </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ouvrez-le avec l'éditeur de votre choix et placez-y le contenu suivant :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">if ! pgrep -f "ollama" > /dev/null; then
    # If 'ollama' is not running, start it in the background
    ollama serve &
    echo "Application 'ollama' started."
else
    # If 'ollama' is already running
    echo "'ollama' application is already running."
fi
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Une fois ces deux fichiers créés, on peut déployer notre application : </p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">git add . && git commit -m "Init application"
clever deploy
clever domain</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous verrez alors le domaine pour accéder à votre application (que vous pouvez personnaliser).</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Cache et (re)démarrage rapide</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Utiliser Clever Cloud, ce n'est pas simplement déployer facilement une telle application, disposer de logs et de monitoring, pouvoir changer instantanément son scaling horizontal et/ou vertical. C'est aussi pouvoir en faire une image prête à redéployer très rapidement.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>En effet, toute application que nous hébergeons est stockée sous la forme d'une archive constituée juste avant l'installation des dépendances. Elle peut ainsi être arrêtée et de rédémarrée sous cette forme, ce qui nous permet de ne pas retélécharger les modèles à chaque fois. Pour cela, il suffit d'indiquer les dossiers à ajouter à l'archive :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever env set CC_OVERRIDE_BUILDCACHE "/:../.ollama/:../.local/bin/"
clever restart --without-cache --follow</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>L'application redémarrera, mais prendra cette fois les l'interface web construite, ollama et les modèles dans son cache, les étapes <code>CC_PRE_BUILD_HOOK</code> et <code>CC_PRE_BUILD_HOOK</code> n'étant pas exécutées. C'est notamment pour cela que nous devons nous assurer que l'on démarre bien le serveur ollama avec <code>CC_PRE_RUN_HOOK</code>, mais que l'on vérifie que cela n'a pas déjà été fait lors d'un démarrage classique; où il est utilisé pour télécharger les modèles avant de les exécuter.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Dès que cette étape est terminée, vous pouvez arrêter l'application et la redémarrer lorsque vous voulez, cela sera désormais bien plus rapide. Et vous ne serez facturé que le temps de son usage, à la seconde. Si vous voulez modifier la liste des modèles à utiliser, faites le dans le fichier prévu à cet effet, un <em>git push</em> suffira à reconstituer le nouveau cache.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash"># Stop/Restart the application
clever stop
clever restart

# After a modification in models.list, git push to recreate the cache
git add models.list && git commit -m "New models" 
clever deploy</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous retrouverez le fichiers nécessaires à ce projet dans <a href="https://github.com/CleverCloud/ollama-chat-deploy" target="_blank" rel="noreferrer noopener">ce dépôt GitHub</a>, avec les variables d'environnement prêtes à importer (<code>clever env import &lt; .env</code>). </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Et si jamais vous voulez aller plus loin en déployant d'autres modèles et outils pour vos applications, qui nécessitent plus de puissance et/ou du GPU, <a href="https://www.clever.cloud/fr/contact/">faites-le nous savoir</a> !</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="900" height="355" src="https://cdn.clever-cloud.com/uploads/2023/11/deploiementiasurcc.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="deploiementiasurcc" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2023/11/deploiementiasurcc.png 900w, https://cdn.clever-cloud.com/uploads/2023/11/deploiementiasurcc-300x118.png 300w, https://cdn.clever-cloud.com/uploads/2023/11/deploiementiasurcc-768x303.png 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></p><!-- wp:paragraph -->
<p><strong>Si l'IA fait parler d'elle ces derniers temps, c'est notamment au travers des larges modèles de langages (LLMs)  qui nécessitent une puissance de calcul conséquente pour leur entrainement ou leur exécution. Ainsi, il est courant de voir les développeurs y recourir à travers des API clés en main, comme nous l'avions fait <a href="https://www.clever.cloud/fr/blog/fonctionnalites/2023/10/11/deployez-un-chatgpt-personnalise-base-sur-php/">dans un précédent article</a>. Mais cela change grâce à des modèles et outils plus ouverts et efficaces, que vous pouvez très facilement déployer sur Clever Cloud.</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>En effet, si notre plateforme a été pensée pour certains usages, nous avons toujours accordé une grande importance à sa flexibilité et à la liberté laissée à nos clients. Ils peuvent ainsi aisément l'exploiter pour attaquer de nouveaux marchés, avec très peu de travail d'adaptation.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Pour le vérifier, nous avons récemment tenté de déployer des modèles d'IA open source tels que ceux dérivés de LLaMA et Mistral. Ils ont pour particularité d'exister dans des versions allégées, ne nécessitant pas forcément de GPU pour fonctionner. Ainsi, il est possible de les héberger comme de simples applications Clever Cloud, tant qu'assez de mémoire leur est attribuée.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Let's ollama (avec une interface web) !</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Pour cela, nous avons choisi d'utiliser <a href="https://github.com/jmorganca/ollama" target="_blank" rel="noreferrer noopener">ollama</a>, un projet sous licence MIT qui permet de télécharger des modèles disponibles depuis <a href="https://ollama.ai/library">un registre</a> ou même <a href="https://github.com/jmorganca/ollama/blob/main/docs/modelfile.md" target="_blank" rel="noreferrer noopener">les vôtres</a>. Il prend la forme d'un serveur qui communique via une API, très simple à héberger sur nos infrastructures.</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><a href="https://api.clever-cloud.com/v2/session/signup">Créer un compte Clever Cloud</a>&nbsp;(et obtenir 20 euros de crédits)</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Pour commencer, vous devrez disposer d'un compte Clever Cloud. Vous pouvez créer l'application et suivre les étapes suivantes en utilisant notre interface web,<a href="https://console.clever-cloud.com"> la Console</a>, mais aussi à travers notre CLI open source : <a href="https://github.com/CleverCloud/clever-tools" target="_blank" rel="noreferrer noopener">Clever Tools</a>. C'est ce que nous ferons ci-dessous. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Nous partirons ainsi du principe que vous disposez d’une machine avec&nbsp;<a href="https://git-scm.com/book/fr/v2/D%C3%A9marrage-rapide-Installation-de-Git" target="_blank" rel="noreferrer noopener">git</a>&nbsp;et&nbsp;<a href="https://nodejs.org/en/learn/getting-started/how-to-install-nodejs" target="_blank" rel="noreferrer noopener">Node.js</a>&nbsp;dans une version récente. Si vous n’avez pas encore installé les Clever Tools sur votre système, tapez (avec les droits administrateur de votre système ou&nbsp;<code>sudo</code>&nbsp;si nécessaire) :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">npm i -g clever-tools
clever login</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Une fois connecté, vous pourrez vérifier que tout s’est bien passé avec la commande suivante :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever profile</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ensuite, nous créons une application Clever Cloud avec Node.js. Elle installera ollama pour télécharger et exécuter nos modèles, en lui ajoutant avec une interface web (<a href="https://github.com/ivanfioravanti/chatbot-ollama" target="_blank" rel="noreferrer noopener">chatbot-ollama</a>, également sous licence MIT) qui nous permettra d'interroger le serveur depuis n'importe quel navigateur, exécuté depuis un ordinateur ou même un simple smartphone.  </p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"wide","id":11239,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image alignwide size-full"><a href="https://cdn.clever-cloud.com/uploads/2023/11/sans-titre-1-scaled.webp" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/11/sans-titre-1-scaled.webp" alt="Chatbot Ollama" class="wp-image-11239" title="Chatbot Ollama"/></a></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Cette solution a également l'intérêt de stocker les conversations localement, dans le navigateur. Elle ne nécessite donc pas de base de données, mais propose une fonction d'import/export. On peut également choisir entre différents modèles, régler certains de leurs paramètres, configurer des instructions système, différents prompts, etc.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">mkdir myollama && cd myollama
git init
curl -L https://github.com/ivanfioravanti/chatbot-ollama/archive/refs/heads/main.tar.gz | tar -xz --strip-components=1

clever create -t node myollama && clever scale --flavor L
clever env set CC_POST_BUILD_HOOK "npx next telemetry disable && npm run build"
clever env set CC_PRE_BUILD_HOOK "./ollama_setup.sh"
clever env set CC_PRE_RUN_HOOK "./ollama_start.sh"

echo "orca-mini" > models.list
echo "mistral" >> models.list
echo "codellama" >> models.list</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Le code ci-dessus créé l'application. Nous y ajoutons un fichier qui contiendra la liste des modèles à récupérer lors de son initialisation. Nous optons pour une instance L, la taille minimale pour charger de tels modèles en mémoire. On déclare ensuite plusieurs variables d'environnement pour lancer des scripts afin d'installer ollama, démarrer le serveur et désactiver la télémétrie du framework Next.js, utilisé pour construire l'interface web après l'installation des dépendances.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Ajoutons quelques scripts</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Notre application est presque prête. Il nous reste en effet à créer deux fichiers, exécutables :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">touch ollama_setup.sh && chmod +x ollama_setup.sh
touch ollama_start.sh && chmod +x ollama_start.sh</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p><code>ollama_setup.sh</code> télécharge le binaire d'ollama puis les modèles de notre liste. Ouvrez-le avec l'éditeur de votre choix et placez-y le contenu suivant :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">#!/bin/bash

# We define the folder (in $PATH), where the ollama binary will be placed
BIN_DIR=${HOME}/.local/bin
mkdir -p ${BIN_DIR} 

ollama_start() {
    echo "Downloading and launching ollama..."
    curl -Ls https://ollama.ai/download/ollama-linux-amd64 -o ${BIN_DIR}/ollama
    chmod +x ${BIN_DIR}/ollama
    ollama serve &> /dev/null &
    echo -e "Finished: \033[32m✔\033[0m\n"
}

get_models() {
    MODELS_FILE="models.list"
    MODELS_DEFAULT="orca-mini"

    # We check if the models file exists
    if [ ! -f ${MODELS_FILE} ]; then
        echo "File ${MODELS_FILE} not found, ${MODELS_DEFAULT} used by default."
        echo ${MODELS_DEFAULT} > ${MODELS_FILE}
    fi

    # Loop through each line and pull model
    while IFS= read -r line; do
        echo "Pulling ${line} model..."
        ollama pull "${line}" > /dev/null 2>&1
        echo -e "Finished: \033[32m✔\033[0m\n"

    done < ${MODELS_FILE}
}

# We start ollama, and wait for it to respond
ollama_start
if [ $? -ne 0 ]; then
    echo -e "\nError during ollama setup."
    exit 1
fi

count=0
MAX_TIME=10

while ! pgrep -x "ollama" > /dev/null; do
    if [ ${count} -lt ${MAX_TIME} ]; then
        sleep 1
        count=$((count+1))
    else
        echo "Application 'ollama' did not launch within 10 seconds."
        exit 1
    fi
done

get_models
if [ $? -ne 0 ]; then
    echo -e "\nError during models downloading."
    exit 1
fi
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ce code peut paraître un peu long, mais c'est notamment parce que nous l'avons rendu modulaire, en n'écrivant dans les logs que les étapes réussies ou les éventuelles erreurs.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><code>ollama_start.sh</code> détecte si le serveur ollama est déjà présent avant de démarrer l'interface web. Si ce n'est pas le cas, on le lance en tâche de fond (nous verrons plus bas pourquoi). </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ouvrez-le avec l'éditeur de votre choix et placez-y le contenu suivant :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">if ! pgrep -f "ollama" > /dev/null; then
    # If 'ollama' is not running, start it in the background
    ollama serve &
    echo "Application 'ollama' started."
else
    # If 'ollama' is already running
    echo "'ollama' application is already running."
fi
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Une fois ces deux fichiers créés, on peut déployer notre application : </p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">git add . && git commit -m "Init application"
clever deploy
clever domain</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous verrez alors le domaine pour accéder à votre application (que vous pouvez personnaliser).</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Cache et (re)démarrage rapide</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Utiliser Clever Cloud, ce n'est pas simplement déployer facilement une telle application, disposer de logs et de monitoring, pouvoir changer instantanément son scaling horizontal et/ou vertical. C'est aussi pouvoir en faire une image prête à redéployer très rapidement.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>En effet, toute application que nous hébergeons est stockée sous la forme d'une archive constituée juste avant l'installation des dépendances. Elle peut ainsi être arrêtée et de rédémarrée sous cette forme, ce qui nous permet de ne pas retélécharger les modèles à chaque fois. Pour cela, il suffit d'indiquer les dossiers à ajouter à l'archive :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever env set CC_OVERRIDE_BUILDCACHE "/:../.ollama/:../.local/bin/"
clever restart --without-cache --follow</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>L'application redémarrera, mais prendra cette fois les l'interface web construite, ollama et les modèles dans son cache, les étapes <code>CC_PRE_BUILD_HOOK</code> et <code>CC_PRE_BUILD_HOOK</code> n'étant pas exécutées. C'est notamment pour cela que nous devons nous assurer que l'on démarre bien le serveur ollama avec <code>CC_PRE_RUN_HOOK</code>, mais que l'on vérifie que cela n'a pas déjà été fait lors d'un démarrage classique; où il est utilisé pour télécharger les modèles avant de les exécuter.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Dès que cette étape est terminée, vous pouvez arrêter l'application et la redémarrer lorsque vous voulez, cela sera désormais bien plus rapide. Et vous ne serez facturé que le temps de son usage, à la seconde. Si vous voulez modifier la liste des modèles à utiliser, faites le dans le fichier prévu à cet effet, un <em>git push</em> suffira à reconstituer le nouveau cache.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash"># Stop/Restart the application
clever stop
clever restart

# After a modification in models.list, git push to recreate the cache
git add models.list && git commit -m "New models" 
clever deploy</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous retrouverez le fichiers nécessaires à ce projet dans <a href="https://github.com/CleverCloud/ollama-chat-deploy" target="_blank" rel="noreferrer noopener">ce dépôt GitHub</a>, avec les variables d'environnement prêtes à importer (<code>clever env import &lt; .env</code>). </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Et si jamais vous voulez aller plus loin en déployant d'autres modèles et outils pour vos applications, qui nécessitent plus de puissance et/ou du GPU, <a href="https://www.clever.cloud/fr/contact/">faites-le nous savoir</a> !</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Déployez un ChatGPT personnalisé basé sur PHP</title>
		<link>https://www.clever.cloud/fr/blog/fonctionnalites/2023/10/11/deployez-un-chatgpt-personnalise-base-sur-php/</link>
		
		<dc:creator><![CDATA[David Legrand]]></dc:creator>
		<pubDate>Wed, 11 Oct 2023 07:21:04 +0000</pubDate>
				<category><![CDATA[Fonctionnalités]]></category>
		<category><![CDATA[IA]]></category>
		<category><![CDATA[PHP]]></category>
		<guid isPermaLink="false">https://www.clever-cloud.com/?p=10554</guid>

					<description><![CDATA[<p><img width="573" height="266" src="https://cdn.clever-cloud.com/uploads/2023/10/1.svg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="1" decoding="async" loading="lazy" /></p><!-- wp:paragraph -->
<p><strong>Depuis l'année dernière, OpenAI est sur le devant de la scène avec ses larges modèles de langage (LLM), notamment GPT-3.5 et GPT-4, accessibles via son service ChatGPT. Mais ils sont également proposés sous la forme d'une API, que vous pouvez utiliser dans vos applications. Voici un exemple de la manière d'en profiter sur Clever Cloud.</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Nous nous baserons sur le projet open source <a href="https://github.com/unconv/chat-wtf" target="_blank" rel="noreferrer noopener">chat-wtf</a>, créé par Unconventional Coding qui a détaillé les différentes étapes de sa conception dans <a href="https://www.youtube.com/watch?v=0FUz4CtalhY" target="_blank" rel="noreferrer noopener">une série de vidéos</a>. Il se repose principalement <a href="https://www.clever.cloud/fr/product/applications-php/">sur le langage PHP</a> et un stockage des données via des sessions, SQLite ou <a href="https://www.clever.cloud/fr/product/mysql-a-traduire-en-fr/">MySQL</a>, au choix de l'utilisateur. </p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Un ChatGPT open source, utilisable à la demande</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Il nécessite d'utiliser  <a href="https://platform.openai.com/overview" target="_blank" rel="noreferrer noopener">l'API d'OpenAI</a>, mais vous pouvez lui préférer des modèles compatibles si vous êtes plus aventureux. Le fichier de paramètres permet également de préciser un «&nbsp;message système&nbsp;». Ainsi, vous pouvez fournir à l'IA des informations sur vous ou vos attentes, qu'elle devra prendre en compte dans ses réponses.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Cette application PHP n'a pas été développée d'une manière spécifique pour Clever Cloud, mais vous pouvez l'héberger dans nos infrastructures en quelques minutes, la configurer selon vos besoins, l'arrêter et le démarrer à la demande. On vous explique comment faire.</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><a href="https://api.clever-cloud.com/v2/session/signup">Créer un compte Clever Cloud</a>&nbsp;(et obtenir 20 euros de crédits)</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Pour commencer, vous devrez disposer d'un compte Clever Cloud, ainsi que d'une clé d'API OpenAI. Vous pouvez créer l'application et suivre ce guide en utilisant notre interface web,<a href="https://console.clever-cloud.com"> la Console</a>, mais aussi à travers notre CLI open source : <a href="https://github.com/CleverCloud/clever-tools" target="_blank" rel="noreferrer noopener">Clever Tools</a>. C'est ce que nous ferons ci-dessous. </p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Récupération du code et configuration</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Nous partirons ainsi du principe que vous disposez d’une machine avec&nbsp;<a href="https://git-scm.com/book/fr/v2/D%C3%A9marrage-rapide-Installation-de-Git" target="_blank" rel="noreferrer noopener">git</a>&nbsp;et&nbsp;<a href="https://nodejs.dev/fr/learn/how-to-install-nodejs/" target="_blank" rel="noreferrer noopener">Node.js</a>&nbsp;dans une version récente. Si vous n’avez pas encore installé les Clever Tools sur votre système, tapez (avec les droits administrateur de votre système ou&nbsp;<code>sudo</code>&nbsp;si nécessaire) :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">npm i -g clever-tools
clever login</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Une fois connecté, vous pourrez vérifier que tout s’est bien passé avec la commande suivante :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever profile</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ensuite, vous pourrez créer un <em>fork</em> de chat-wtf pouvant être déployé sur Clever Cloud depuis votre compte GitHub. Dans cet exemple, nous allons cloner le dépôt localement et y créer une application Clever Cloud. Un remote nécessaire à son déploiement sera automatiquement ajouté :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">git clone https://github.com/unconv/chat-wtf.git && cd chat-wtf
clever create -t php chat-wtf</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ainsi, vous disposez d'une copie locale de la dernière version de l'application chat-wtf, que vous pouvez configurer selon votre besoin. Renommez le fichier <code>settings.sample.php</code> en <code>settings.php</code>. Nous allons opérer des modifications mineures pour commencer. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Placez-y le contenu suivant afin d'utiliser des variables d'environnement :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-php">&#x3C;?php
return [
    &#x22;api_key&#x22; =&#x3E; getenv("OPENAI_API_KEY"),
    &#x22;system_message&#x22; =&#x3E; getenv("SYSTEM_MESSAGE"),
    &#x22;model&#x22; =&#x3E; &#x22;gpt-3.5-turbo&#x22;,
    &#x22;base_uri&#x22; =&#x3E; &#x22;&#x22;,
    &#x22;storage_type&#x22; =&#x3E; &#x22;session&#x22;,
];</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Éditez le fichier <code>.gitignore</code> afin d'en retirer <code>settings.php</code> pour qu'il puisse être déployé avec votre application. Celle-ci étant configurée, il ne reste plus qu'à indiquer les variables d'environnement nécessaires à son bon fonctionnement, puis à la déployer. Notez que PHP 8.x est requis. Nous utiliserons la branche 8.2 :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever env set CC_PHP_VERSION "8.2"
clever env set OPENAI_API_KEY "Votre clé d'API OpenAI"
clever env set SYSTEM_MESSAGE "Votre message système"
git add . && git commit -m "First deploy"
clever deploy && clever open</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Une fois les variables d'environnement ajoutées, nous effectuons un simple <em>Git Push</em>. L'application est alors déployée sur Clever Cloud, une archive est créée afin de faciliter son redéploiement, puis elle est ouverte dans votre navigateur si tout s'est bien passé :</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":10576,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image aligncenter size-full"><a href="https://cdn.clever-cloud.com/uploads/2023/10/image-2.png" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/10/image-2.png" alt="Chat WTF on Clever Cloud" class="wp-image-10576"/></a></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Comme pour toute application hébergée au sein de notre service, vous pouvez lui attribuer simplement un domaine qui bénéficiera de notre load balancer <a href="https://www.sozu.io/" target="_blank" rel="noreferrer noopener">Sōzu</a> et d'un certificat Let's Encrypt, connaître son statut et son activité, l'arrêter ou la redémarrer. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Vous disposez dans <a href="https://console.clever-cloud.com">la Console</a> de métriques et d'un accès à un dashboard Grafana afin de suivre son état. Vous pouvez également adapter la taille de l' instance ou activer l'auto-scalabiilté pour répondre à différents niveaux de charge :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever console

clever domain
clever domain add domain.tld

clever status
clever activity

clever scale --min-instances 1 --max-instances 4 --min-flavor pico --max-flavor M
clever scale --instances 1 --flavor pico

clever restart
clever stop</code></pre>
<!-- /wp:html -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Ajoutons une base de données à notre instance chat-wtf</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Comme indiqué précédemment, ce projet peut stocker ses données au sein de sessions PHP, mais également via SQLite ou MySQL. Dans cet exemple, nous opterons pour la dernière solution afin de vous montrer comment procéder, là aussi de manière très simple.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Tout d'abord créons une base de données (BDD) MySQL au sein de votre compte Clever Cloud en la liant directement à votre application. Par défaut il s'agit d'une instance DEV, partagée et gratuite, mais vous pouvez demander <a href="https://www.clever.cloud/fr/tarification/">un plan</a> de taille supérieure si vous le désirez :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever addon create mysql-addon chat-wtf-mysql --link chat-wtf</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ce « lien » permet d'injecter directement les paramètres de connexion dans l'application via des variables d'environnement. Elles sont visibles dans la Console ou via les Clever Tools :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever env</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ainsi, il suffit de modifier le fichier <code>settings.php</code> comme suit pour l'utiliser :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-php">    &#x22;storage_type&#x22; =&#x3E; &#x22;sql&#x22;,
    &#x22;db&#x22; =&#x3E; [
        &#x22;dsn&#x22; =&#x3E; &#x22;mysql:host=&#x22; . getenv(&#x27;MYSQL_ADDON_HOST&#x27;) . &#x22;;
                    port=&#x22; . getenv(&#x27;MYSQL_ADDON_PORT&#x27;) . &#x22;;
                    dbname=&#x22; . getenv(&#x27;MYSQL_ADDON_DB&#x27;),
        &#x22;username&#x22; =&#x3E; getenv(&#x27;MYSQL_ADDON_USER&#x27;),
        &#x22;password&#x22; =&#x3E; getenv(&#x27;MYSQL_ADDON_PASSWORD&#x27;),
    ],</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Rendez-vous ensuite dans le <em>dashboard</em> de cette base MySQL, accessible via la Console. Vous y trouverez un lien vers son interface PHPMyAdmin. En cliquant sur le nom de la base de données dans le menu de gauche vous trouverez la fonction d'import. Elle vous permettra d'initier la structure de la BDD en y important le fichier <code>mysql.sql</code> qui se trouve dans le dossier <code>db</code> du dépôt. Indiquez son emplacement, cliquez sur « Importer ». Ce sera fait :</p>
<!-- /wp:paragraph -->

<!-- wp:image {"id":10570,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image size-full"><a href="https://cdn.clever-cloud.com/uploads/2023/10/image.png" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/10/image.png" alt="MySQL Import" class="wp-image-10570"/></a></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Vous pouvez également le faire via un script Shell qui vérifie si la base de données est vide, et importe les données par défaut si nécessaire. Créez un fichier nommé <code>init.sh</code> contenant ce code :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">SSE="SELECT COUNT(*) FROM information_schema.tables WHERE table_schema='$MYSQL_ADDON_DB';"
PARAMS="-u $MYSQL_ADDON_USER -h $MYSQL_ADDON_HOST -P $MYSQL_ADDON_PORT -D $MYSQL_ADDON_DB"

TABLE_COUNT=$(MYSQL_PWD=$MYSQL_ADDON_PASSWORD mysql $PARAMS -sse"$SSE")

if [ "$TABLE_COUNT" -eq 0 ]; then
  echo "Database is empty, we fill it with the default data."
  MYSQL_PWD=$MYSQL_ADDON_PASSWORD mysql $PARAMS < db/mysql.sql 
  
else
  echo "Database contains $TABLE_COUNT tables."
fi

rm init.sh</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous devrez le lancer lors du déploiement de l'application :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever env set CC_PRE_BUILD_HOOK "bash init.sh"</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous n'avez alors plus qu'à redéployer votre application qui utilisera désormais la base de données MySQL pour stocker ses données plutôt que les sessions PHP :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">git add settings.php && git commit -m "Add MySQL support"
clever deploy && clever open</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Si jamais cela ne fonctionne pas, regardez les erreurs dans les logs de votre instance dans la Console ou via :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever logs</code></pre>
<!-- /wp:html -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Envie d'en savoir plus ?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Pour découvrir plus en détails l'hébergement d'applications PHP sur Clever Cloud ou nos services de <a href="https://www.clever.cloud/fr/product/">bases de données managées</a> ? Venez nous rencontrer au PHP Forum qui se tient du 12 au 13 octobre à Disneyland Paris. Nous serons également présents à Devoxx Maroc et à Volcamp :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><a href="https://www.clever.cloud/fr/blog/entreprise/2023/09/26/cest-la-rentree-des-evenements-pour-clever-cloud/">C'est la rentrée des évènements pour Clever Cloud</a></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->]]></description>
										<content:encoded><![CDATA[<p><img width="573" height="266" src="https://cdn.clever-cloud.com/uploads/2023/10/1.svg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="1" decoding="async" loading="lazy" /></p><!-- wp:paragraph -->
<p><strong>Depuis l'année dernière, OpenAI est sur le devant de la scène avec ses larges modèles de langage (LLM), notamment GPT-3.5 et GPT-4, accessibles via son service ChatGPT. Mais ils sont également proposés sous la forme d'une API, que vous pouvez utiliser dans vos applications. Voici un exemple de la manière d'en profiter sur Clever Cloud.</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Nous nous baserons sur le projet open source <a href="https://github.com/unconv/chat-wtf" target="_blank" rel="noreferrer noopener">chat-wtf</a>, créé par Unconventional Coding qui a détaillé les différentes étapes de sa conception dans <a href="https://www.youtube.com/watch?v=0FUz4CtalhY" target="_blank" rel="noreferrer noopener">une série de vidéos</a>. Il se repose principalement <a href="https://www.clever.cloud/fr/product/applications-php/">sur le langage PHP</a> et un stockage des données via des sessions, SQLite ou <a href="https://www.clever.cloud/fr/product/mysql-a-traduire-en-fr/">MySQL</a>, au choix de l'utilisateur. </p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Un ChatGPT open source, utilisable à la demande</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Il nécessite d'utiliser  <a href="https://platform.openai.com/overview" target="_blank" rel="noreferrer noopener">l'API d'OpenAI</a>, mais vous pouvez lui préférer des modèles compatibles si vous êtes plus aventureux. Le fichier de paramètres permet également de préciser un «&nbsp;message système&nbsp;». Ainsi, vous pouvez fournir à l'IA des informations sur vous ou vos attentes, qu'elle devra prendre en compte dans ses réponses.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Cette application PHP n'a pas été développée d'une manière spécifique pour Clever Cloud, mais vous pouvez l'héberger dans nos infrastructures en quelques minutes, la configurer selon vos besoins, l'arrêter et le démarrer à la demande. On vous explique comment faire.</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><a href="https://api.clever-cloud.com/v2/session/signup">Créer un compte Clever Cloud</a>&nbsp;(et obtenir 20 euros de crédits)</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Pour commencer, vous devrez disposer d'un compte Clever Cloud, ainsi que d'une clé d'API OpenAI. Vous pouvez créer l'application et suivre ce guide en utilisant notre interface web,<a href="https://console.clever-cloud.com"> la Console</a>, mais aussi à travers notre CLI open source : <a href="https://github.com/CleverCloud/clever-tools" target="_blank" rel="noreferrer noopener">Clever Tools</a>. C'est ce que nous ferons ci-dessous. </p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Récupération du code et configuration</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Nous partirons ainsi du principe que vous disposez d’une machine avec&nbsp;<a href="https://git-scm.com/book/fr/v2/D%C3%A9marrage-rapide-Installation-de-Git" target="_blank" rel="noreferrer noopener">git</a>&nbsp;et&nbsp;<a href="https://nodejs.dev/fr/learn/how-to-install-nodejs/" target="_blank" rel="noreferrer noopener">Node.js</a>&nbsp;dans une version récente. Si vous n’avez pas encore installé les Clever Tools sur votre système, tapez (avec les droits administrateur de votre système ou&nbsp;<code>sudo</code>&nbsp;si nécessaire) :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">npm i -g clever-tools
clever login</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Une fois connecté, vous pourrez vérifier que tout s’est bien passé avec la commande suivante :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever profile</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ensuite, vous pourrez créer un <em>fork</em> de chat-wtf pouvant être déployé sur Clever Cloud depuis votre compte GitHub. Dans cet exemple, nous allons cloner le dépôt localement et y créer une application Clever Cloud. Un remote nécessaire à son déploiement sera automatiquement ajouté :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">git clone https://github.com/unconv/chat-wtf.git && cd chat-wtf
clever create -t php chat-wtf</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ainsi, vous disposez d'une copie locale de la dernière version de l'application chat-wtf, que vous pouvez configurer selon votre besoin. Renommez le fichier <code>settings.sample.php</code> en <code>settings.php</code>. Nous allons opérer des modifications mineures pour commencer. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Placez-y le contenu suivant afin d'utiliser des variables d'environnement :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-php">&#x3C;?php
return [
    &#x22;api_key&#x22; =&#x3E; getenv("OPENAI_API_KEY"),
    &#x22;system_message&#x22; =&#x3E; getenv("SYSTEM_MESSAGE"),
    &#x22;model&#x22; =&#x3E; &#x22;gpt-3.5-turbo&#x22;,
    &#x22;base_uri&#x22; =&#x3E; &#x22;&#x22;,
    &#x22;storage_type&#x22; =&#x3E; &#x22;session&#x22;,
];</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Éditez le fichier <code>.gitignore</code> afin d'en retirer <code>settings.php</code> pour qu'il puisse être déployé avec votre application. Celle-ci étant configurée, il ne reste plus qu'à indiquer les variables d'environnement nécessaires à son bon fonctionnement, puis à la déployer. Notez que PHP 8.x est requis. Nous utiliserons la branche 8.2 :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever env set CC_PHP_VERSION "8.2"
clever env set OPENAI_API_KEY "Votre clé d'API OpenAI"
clever env set SYSTEM_MESSAGE "Votre message système"
git add . && git commit -m "First deploy"
clever deploy && clever open</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Une fois les variables d'environnement ajoutées, nous effectuons un simple <em>Git Push</em>. L'application est alors déployée sur Clever Cloud, une archive est créée afin de faciliter son redéploiement, puis elle est ouverte dans votre navigateur si tout s'est bien passé :</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":10576,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image aligncenter size-full"><a href="https://cdn.clever-cloud.com/uploads/2023/10/image-2.png" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/10/image-2.png" alt="Chat WTF on Clever Cloud" class="wp-image-10576"/></a></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Comme pour toute application hébergée au sein de notre service, vous pouvez lui attribuer simplement un domaine qui bénéficiera de notre load balancer <a href="https://www.sozu.io/" target="_blank" rel="noreferrer noopener">Sōzu</a> et d'un certificat Let's Encrypt, connaître son statut et son activité, l'arrêter ou la redémarrer. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Vous disposez dans <a href="https://console.clever-cloud.com">la Console</a> de métriques et d'un accès à un dashboard Grafana afin de suivre son état. Vous pouvez également adapter la taille de l' instance ou activer l'auto-scalabiilté pour répondre à différents niveaux de charge :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever console

clever domain
clever domain add domain.tld

clever status
clever activity

clever scale --min-instances 1 --max-instances 4 --min-flavor pico --max-flavor M
clever scale --instances 1 --flavor pico

clever restart
clever stop</code></pre>
<!-- /wp:html -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Ajoutons une base de données à notre instance chat-wtf</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Comme indiqué précédemment, ce projet peut stocker ses données au sein de sessions PHP, mais également via SQLite ou MySQL. Dans cet exemple, nous opterons pour la dernière solution afin de vous montrer comment procéder, là aussi de manière très simple.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Tout d'abord créons une base de données (BDD) MySQL au sein de votre compte Clever Cloud en la liant directement à votre application. Par défaut il s'agit d'une instance DEV, partagée et gratuite, mais vous pouvez demander <a href="https://www.clever.cloud/fr/tarification/">un plan</a> de taille supérieure si vous le désirez :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever addon create mysql-addon chat-wtf-mysql --link chat-wtf</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ce « lien » permet d'injecter directement les paramètres de connexion dans l'application via des variables d'environnement. Elles sont visibles dans la Console ou via les Clever Tools :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever env</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ainsi, il suffit de modifier le fichier <code>settings.php</code> comme suit pour l'utiliser :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-php">    &#x22;storage_type&#x22; =&#x3E; &#x22;sql&#x22;,
    &#x22;db&#x22; =&#x3E; [
        &#x22;dsn&#x22; =&#x3E; &#x22;mysql:host=&#x22; . getenv(&#x27;MYSQL_ADDON_HOST&#x27;) . &#x22;;
                    port=&#x22; . getenv(&#x27;MYSQL_ADDON_PORT&#x27;) . &#x22;;
                    dbname=&#x22; . getenv(&#x27;MYSQL_ADDON_DB&#x27;),
        &#x22;username&#x22; =&#x3E; getenv(&#x27;MYSQL_ADDON_USER&#x27;),
        &#x22;password&#x22; =&#x3E; getenv(&#x27;MYSQL_ADDON_PASSWORD&#x27;),
    ],</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Rendez-vous ensuite dans le <em>dashboard</em> de cette base MySQL, accessible via la Console. Vous y trouverez un lien vers son interface PHPMyAdmin. En cliquant sur le nom de la base de données dans le menu de gauche vous trouverez la fonction d'import. Elle vous permettra d'initier la structure de la BDD en y important le fichier <code>mysql.sql</code> qui se trouve dans le dossier <code>db</code> du dépôt. Indiquez son emplacement, cliquez sur « Importer ». Ce sera fait :</p>
<!-- /wp:paragraph -->

<!-- wp:image {"id":10570,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image size-full"><a href="https://cdn.clever-cloud.com/uploads/2023/10/image.png" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/10/image.png" alt="MySQL Import" class="wp-image-10570"/></a></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Vous pouvez également le faire via un script Shell qui vérifie si la base de données est vide, et importe les données par défaut si nécessaire. Créez un fichier nommé <code>init.sh</code> contenant ce code :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">SSE="SELECT COUNT(*) FROM information_schema.tables WHERE table_schema='$MYSQL_ADDON_DB';"
PARAMS="-u $MYSQL_ADDON_USER -h $MYSQL_ADDON_HOST -P $MYSQL_ADDON_PORT -D $MYSQL_ADDON_DB"

TABLE_COUNT=$(MYSQL_PWD=$MYSQL_ADDON_PASSWORD mysql $PARAMS -sse"$SSE")

if [ "$TABLE_COUNT" -eq 0 ]; then
  echo "Database is empty, we fill it with the default data."
  MYSQL_PWD=$MYSQL_ADDON_PASSWORD mysql $PARAMS < db/mysql.sql 
  
else
  echo "Database contains $TABLE_COUNT tables."
fi

rm init.sh</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous devrez le lancer lors du déploiement de l'application :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever env set CC_PRE_BUILD_HOOK "bash init.sh"</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous n'avez alors plus qu'à redéployer votre application qui utilisera désormais la base de données MySQL pour stocker ses données plutôt que les sessions PHP :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">git add settings.php && git commit -m "Add MySQL support"
clever deploy && clever open</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Si jamais cela ne fonctionne pas, regardez les erreurs dans les logs de votre instance dans la Console ou via :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever logs</code></pre>
<!-- /wp:html -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Envie d'en savoir plus ?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Pour découvrir plus en détails l'hébergement d'applications PHP sur Clever Cloud ou nos services de <a href="https://www.clever.cloud/fr/product/">bases de données managées</a> ? Venez nous rencontrer au PHP Forum qui se tient du 12 au 13 octobre à Disneyland Paris. Nous serons également présents à Devoxx Maroc et à Volcamp :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><a href="https://www.clever.cloud/fr/blog/entreprise/2023/09/26/cest-la-rentree-des-evenements-pour-clever-cloud/">C'est la rentrée des évènements pour Clever Cloud</a></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
