{"id":917,"date":"2024-03-10T16:31:51","date_gmt":"2024-03-10T15:31:51","guid":{"rendered":"https:\/\/ai.reboot-conseil.com\/?p=917"},"modified":"2024-03-11T09:40:24","modified_gmt":"2024-03-11T08:40:24","slug":"langserve-prise-en-main-et-mise-en-prod","status":"publish","type":"post","link":"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/","title":{"rendered":"LangServe &#8211; Prise en main et mise en prod"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>LangServe<\/strong> est une biblioth\u00e8que open-source d\u00e9velopp\u00e9e pour simplifier consid\u00e9rablement le d\u00e9ploiement et la mise en production d&rsquo;applications construites avec le framework <a href=\"https:\/\/python.langchain.com\/docs\/get_started\/introduction\">LangChain<\/a>. Son objectif principal est de permettre aux d\u00e9veloppeurs d&rsquo;exposer rapidement et facilement leurs agents, cha\u00eenes et mod\u00e8les LangChain sous forme d&rsquo;API REST, rendant ainsi leur utilisation et leur int\u00e9gration dans d&rsquo;autres syst\u00e8mes beaucoup plus ais\u00e9es.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bas\u00e9e sur le framework web Python <a href=\"https:\/\/fastapi.tiangolo.com\/\">FastAPI<\/a>, reconnu pour ses performances et sa facilit\u00e9 d&rsquo;utilisation, LangServe offre de nombreuses fonctionnalit\u00e9s cl\u00e9s pour acc\u00e9l\u00e9rer la mise en production. Elle g\u00e9n\u00e8re automatiquement une documentation <a href=\"https:\/\/www.openapis.org\/\">OpenAPI<\/a> compl\u00e8te et des sch\u00e9mas d&rsquo;input\/output pour chaque endpoint, permettant une compr\u00e9hension et une utilisation rapide de l&rsquo;API par les d\u00e9veloppeurs et les clients.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En plus de la g\u00e9n\u00e9ration d&rsquo;API, LangServe inclut \u00e9galement un <strong>playground interactif<\/strong> tr\u00e8s pratique pour tester et d\u00e9bugger les diff\u00e9rents endpoints et cha\u00eenes, ainsi que des fonctionnalit\u00e9s de partage de configurations via des liens uniques. La biblioth\u00e8que fournit aussi un <strong>client Python<\/strong> pour appeler facilement les API d\u00e9ploy\u00e9es depuis d&rsquo;autres applications.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Que vous soyez un data scientist cherchant \u00e0 rendre ses mod\u00e8les accessibles ou un d\u00e9veloppeur souhaitant int\u00e9grer des capacit\u00e9s de <strong>traitement du langage naturel<\/strong> dans ses applications, LangServe vous fera gagner un temps pr\u00e9cieux en vous permettant de passer en un clin d&rsquo;\u0153il de l&rsquo;exp\u00e9rimentation avec LangChain au d\u00e9ploiement en production dans le cloud (<a href=\"https:\/\/aws.amazon.com\/\">AWS<\/a>, <a href=\"https:\/\/azure.microsoft.com\/\">Azure<\/a>, <a href=\"https:\/\/cloud.google.com\/\">GCP<\/a>, etc).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans cet article, nous verrons comment prendre en main LangServe pour d\u00e9ployer vos premiers endpoints, comment utiliser le client et le playground, et surtout comment mettre en production vos applications LangChain en quelques lignes de code sur les principaux <strong>cloud providers<\/strong> du march\u00e9.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pr\u00e9requis<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Avant de vous lancer dans l&rsquo;utilisation de <strong>LangServe<\/strong>, assurez-vous de disposer d&rsquo;un environnement de d\u00e9veloppement <strong>Python<\/strong> fonctionnel sur votre machine. LangServe n\u00e9cessite une version de <strong>Python 3.7 ou sup\u00e9rieure<\/strong>. Vous pouvez v\u00e9rifier votre version de Python en ex\u00e9cutant la commande <code>python --version<\/code> dans votre terminal.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le gestionnaire de paquets <strong>pip<\/strong> est \u00e9galement requis pour installer facilement LangServe et ses d\u00e9pendances. Pip est g\u00e9n\u00e9ralement install\u00e9 par d\u00e9faut avec les versions r\u00e9centes de Python. Pour vous en assurer, ex\u00e9cutez <code>pip --version<\/code>. Si pip n&rsquo;est pas pr\u00e9sent, r\u00e9f\u00e9rez-vous \u00e0 la <a href=\"https:\/\/docs.python.org\/fr\/3\/installing\/index.html\">documentation officielle Python<\/a> pour les instructions d&rsquo;installation sp\u00e9cifiques \u00e0 votre syst\u00e8me d&rsquo;exploitation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Une connaissance de base du framework <strong><a href=\"https:\/\/python.langchain.com\/\">LangChain<\/a><\/strong> est fortement recommand\u00e9e pour tirer pleinement parti de LangServe. Vous devriez \u00eatre \u00e0 l&rsquo;aise avec les concepts cl\u00e9s tels que les <strong>agents<\/strong>, les <strong>cha\u00eenes<\/strong>, les <strong>mod\u00e8les de langage<\/strong> et les <strong>prompts<\/strong>. Si vous d\u00e9butez avec LangChain, il est conseill\u00e9 de vous familiariser avec la <a href=\"https:\/\/python.langchain.com\/en\/latest\/\">documentation officielle<\/a> et de parcourir quelques exemples avant de passer \u00e0 LangServe.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">De m\u00eame, une compr\u00e9hension des principes de base de <strong><a href=\"https:\/\/fastapi.tiangolo.com\/\">FastAPI<\/a><\/strong>, le framework web sur lequel s&rsquo;appuie LangServe, sera utile pour personnaliser et d\u00e9boguer vos applications si n\u00e9cessaire. FastAPI \u00e9tant un framework tr\u00e8s populaire et bien document\u00e9, vous trouverez facilement de nombreuses ressources en ligne pour vous aider \u00e0 prendre en main ses concepts fondamentaux, tels que le <strong>routing<\/strong>, les <strong>d\u00e9pendances<\/strong> et la gestion des <strong>requ\u00eates<\/strong> et des <strong>r\u00e9ponses<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Enfin, bien que cela ne soit pas strictement n\u00e9cessaire pour commencer, avoir des notions sur les <strong>API REST<\/strong>, les <strong>sch\u00e9mas JSON<\/strong> et la documentation <strong>OpenAPI<\/strong> vous permettra de comprendre plus en profondeur le fonctionnement interne de LangServe et d&rsquo;exploiter au mieux ses capacit\u00e9s de g\u00e9n\u00e9ration automatique.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En r\u00e9sum\u00e9, assurez-vous d&rsquo;avoir :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Python 3.7+<\/strong>&nbsp;et&nbsp;<strong>pip<\/strong>&nbsp;install\u00e9s<\/li>\n\n\n\n<li>Des connaissances de base de&nbsp;<strong>LangChain<\/strong>&nbsp;(agents, cha\u00eenes, mod\u00e8les)<\/li>\n\n\n\n<li>Des notions de&nbsp;<strong>FastAPI<\/strong>&nbsp;(routing, d\u00e9pendances, requ\u00eates\/r\u00e9ponses)<\/li>\n\n\n\n<li>Optionnel : une compr\u00e9hension des&nbsp;<strong>API REST<\/strong>,&nbsp;<strong>JSON<\/strong>&nbsp;et&nbsp;<strong>OpenAPI<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Une fois ces pr\u00e9requis valid\u00e9s, vous serez pr\u00eat \u00e0 installer LangServe et \u00e0 cr\u00e9er votre premi\u00e8re application !<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Installation de LangServe<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;installation de LangServe s&rsquo;effectue tr\u00e8s simplement \u00e0 l&rsquo;aide du gestionnaire de paquets <strong>pip<\/strong>. Avant de proc\u00e9der \u00e0 l&rsquo;installation, il est recommand\u00e9 de cr\u00e9er et d&rsquo;activer un nouvel <strong>environnement virtuel<\/strong> Python, afin d&rsquo;\u00e9viter tout conflit avec les paquets syst\u00e8mes ou d&rsquo;autres projets. Vous pouvez utiliser <a href=\"https:\/\/docs.python.org\/fr\/3\/library\/venv.html\">venv<\/a>, <a href=\"https:\/\/docs.conda.io\/en\/latest\/\">conda<\/a> ou tout autre outil de gestion d&rsquo;environnements virtuels de votre choix.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Une fois votre environnement virtuel activ\u00e9, ex\u00e9cutez la commande suivante dans votre terminal pour installer LangServe avec toutes ses d\u00e9pendances :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install \"langserve&#91;all]\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Cette commande installera \u00e0 la fois les composants serveur et client de <strong>LangServe<\/strong>, ainsi que les d\u00e9pendances n\u00e9cessaires telles que <a href=\"https:\/\/fastapi.tiangolo.com\/\">FastAPI<\/a>, <a href=\"https:\/\/www.uvicorn.org\/\">Uvicorn<\/a> (un serveur ASGI rapide) et <a href=\"https:\/\/docs.pydantic.dev\/\">Pydantic<\/a> (pour la validation des donn\u00e9es).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pip t\u00e9l\u00e9chargera et installera tous les paquets requis dans votre environnement virtuel. Une fois l&rsquo;installation termin\u00e9e, vous pourrez importer et utiliser LangServe dans votre code Python.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il est important de noter que LangServe n\u00e9cessite \u00e9galement une version r\u00e9cente du framework <a href=\"https:\/\/python.langchain.com\/\">LangChain<\/a> pour fonctionner correctement. Si vous n&rsquo;avez pas encore install\u00e9 LangChain, pip s&rsquo;en chargera automatiquement lors de l&rsquo;installation de LangServe. Cependant, si vous disposez d\u00e9j\u00e0 d&rsquo;une installation de LangChain, assurez-vous qu&rsquo;elle est \u00e0 jour pour garantir une compatibilit\u00e9 optimale avec LangServe.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Maintenant que <strong>LangServe<\/strong> est install\u00e9 dans votre environnement Python, vous \u00eates pr\u00eat \u00e0 cr\u00e9er votre premi\u00e8re application ! Dans la section suivante, nous verrons comment mettre en place un serveur <strong>FastAPI<\/strong> avec LangServe pour exposer des mod\u00e8les de langage sous forme d&rsquo;API.Premi\u00e8re application LangServe<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour d\u00e9couvrir le fonctionnement de base de <strong>LangServe<\/strong>, nous allons cr\u00e9er une application simple qui expose deux mod\u00e8les de chat, l&rsquo;un utilisant l&rsquo;API d&rsquo;<em>OpenAI<\/em> et l&rsquo;autre celle d&rsquo;<em>Anthropic<\/em>. Cette application permettra \u00e9galement d&rsquo;invoquer une cha\u00eene combinant un template de prompt et le mod\u00e8le d&rsquo;Anthropic pour g\u00e9n\u00e9rer des blagues sur un sujet donn\u00e9.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voici le code complet de notre application :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from fastapi import FastAPI\nfrom langchain.prompts import ChatPromptTemplate\nfrom langchain.chat_models import ChatAnthropic, ChatOpenAI \nfrom langserve import add_routes\n\napp = FastAPI(\n    title=\"LangChain Server\",\n    version=\"1.0\",\n    description=\"Un serveur API simple utilisant les interfaces Runnable de LangChain\",\n)\n\n# Expose le mod\u00e8le ChatOpenAI sous le chemin \/openai\nadd_routes(\n    app,\n    ChatOpenAI(), \n    path=\"\/openai\",\n)\n\n# Expose le mod\u00e8le ChatAnthropic sous le chemin \/anthropic\nadd_routes(\n    app,\n    ChatAnthropic(),\n    path=\"\/anthropic\",\n)\n\nmodel = ChatAnthropic()\nprompt = ChatPromptTemplate.from_template(\"Raconte-moi une blague \u00e0 propos de {topic}\")\n# Expose la cha\u00eene prompt | model sous le chemin \/blague\nadd_routes(\n    app, \n    prompt | model,\n    path=\"\/blague\",\n)\n\nif __name__ == \"__main__\":\n    import uvicorn\n    uvicorn.run(app, host=\"localhost\", port=8000)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">D\u00e9cortiquons ce code \u00e9tape par \u00e9tape :<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Nous commen\u00e7ons par importer les d\u00e9pendances n\u00e9cessaires : <code>FastAPI<\/code> pour cr\u00e9er notre application web, <code>ChatPromptTemplate<\/code> pour d\u00e9finir notre template de prompt, <code>ChatAnthropic<\/code> et <code>ChatOpenAI<\/code> pour les mod\u00e8les de chat, et enfin <code>add_routes<\/code> de <strong>LangServe<\/strong> pour exposer nos composants en tant qu&rsquo;API.<\/li>\n\n\n\n<li>Nous cr\u00e9ons une instance de l&rsquo;application <strong>FastAPI<\/strong>, en sp\u00e9cifiant un titre, une version et une description. Ces informations seront utilis\u00e9es pour g\u00e9n\u00e9rer la documentation <a href=\"https:\/\/www.openapis.org\/\">OpenAPI<\/a> de notre API.<\/li>\n\n\n\n<li>Nous utilisons la fonction <code>add_routes<\/code> de <strong>LangServe<\/strong> pour exposer notre premier mod\u00e8le, une instance de <code>ChatOpenAI<\/code>, sous le chemin <code>\/openai<\/code>. Cela g\u00e9n\u00e9rera automatiquement tous les endpoints n\u00e9cessaires pour interagir avec le mod\u00e8le (invoke, astream, batch, etc.).<\/li>\n\n\n\n<li>De la m\u00eame mani\u00e8re, nous exposons une instance de <code>ChatAnthropic<\/code> sous le chemin <code>\/anthropic<\/code>.<\/li>\n\n\n\n<li>Nous cr\u00e9ons ensuite une cha\u00eene combinant un template de prompt (demandant une blague sur un sujet donn\u00e9) et le mod\u00e8le d&rsquo;<em>Anthropic<\/em>, en utilisant l&rsquo;op\u00e9rateur <code>|<\/code> de <a href=\"https:\/\/docs.langchain.com\/docs\/\">LangChain<\/a>. Cette cha\u00eene est expos\u00e9e sous le chemin <code>\/blague<\/code> gr\u00e2ce \u00e0 <code>add_routes<\/code>.<\/li>\n\n\n\n<li>Enfin, nous ajoutons une condition <code>if __name__ == \"__main__\"<\/code> pour lancer notre serveur avec <a href=\"https:\/\/www.uvicorn.org\/\">Uvicorn<\/a> lorsque le script est ex\u00e9cut\u00e9 directement. Le serveur \u00e9coutera sur <code>localhost<\/code> au port 8000.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Pour lancer l&rsquo;application, ex\u00e9cutez simplement le script Python. <em>Uvicorn<\/em> d\u00e9marrera alors le serveur, et vous pourrez acc\u00e9der \u00e0 votre API \u00e0 l&rsquo;adresse <code>http:\/\/localhost:8000<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Gr\u00e2ce \u00e0 la magie de <strong>LangServe<\/strong> et de <strong>FastAPI<\/strong>, une documentation <em>OpenAPI<\/em> compl\u00e8te est automatiquement g\u00e9n\u00e9r\u00e9e pour votre API. Vous pouvez y acc\u00e9der en naviguant vers <code>http:\/\/localhost:8000\/docs<\/code> dans votre navigateur web. Cette documentation interactive vous permet de visualiser tous les endpoints disponibles, leurs sch\u00e9mas d&rsquo;entr\u00e9e et de sortie, et m\u00eame de les tester directement depuis l&rsquo;interface web.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vous pouvez \u00e9galement acc\u00e9der au playground de <strong>LangServe<\/strong> pour chaque composant en ajoutant <code>\/playground<\/code> \u00e0 son chemin (par exemple, <code>http:\/\/localhost:8000\/openai\/playground<\/code>). Le playground fournit une interface utilisateur conviviale pour tester les diff\u00e9rentes fonctionnalit\u00e9s de votre API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Et voil\u00e0 ! Avec seulement quelques lignes de code, vous avez cr\u00e9\u00e9 une API compl\u00e8te capable d&rsquo;ex\u00e9cuter des mod\u00e8les de chat et des cha\u00eenes personnalis\u00e9es. <strong>LangServe<\/strong> s&rsquo;occupe de tous les d\u00e9tails techniques, vous permettant de vous concentrer sur la logique m\u00e9tier de votre application.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans la section suivante, nous verrons comment utiliser le client Python fourni par <strong>LangServe<\/strong> pour interagir avec notre nouvelle API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Client Python pour appeler l&rsquo;API<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Maintenant que notre API est op\u00e9rationnelle, voyons comment interagir avec elle en utilisant le <strong>SDK client Python<\/strong> fourni par <strong>LangServe<\/strong>. Ce SDK permet d&rsquo;appeler facilement les diff\u00e9rents endpoints de l&rsquo;API comme si les composants \u00e9taient ex\u00e9cut\u00e9s localement, tout en g\u00e9rant de mani\u00e8re transparente les communications r\u00e9seau et la s\u00e9rialisation des donn\u00e9es.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voici un exemple de code client utilisant le SDK LangServe pour appeler notre API :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from langchain.schema import SystemMessage, HumanMessage\nfrom langchain.prompts import ChatPromptTemplate\nfrom langchain.schema.runnable import RunnableMap\nfrom langserve import RemoteRunnable\n\n# Cr\u00e9ation d'instances de RemoteRunnable pour chaque mod\u00e8le\nopenai = RemoteRunnable(\"http:\/\/localhost:8000\/openai\/\")\nanthropic = RemoteRunnable(\"http:\/\/localhost:8000\/anthropic\/\")\njoke_chain = RemoteRunnable(\"http:\/\/localhost:8000\/blague\/\")\n\n# Appel de la cha\u00eene de blagues de mani\u00e8re synchrone\nresponse = joke_chain.invoke({\"topic\": \"les chats\"})\nprint(response)\n\n# D\u00e9finition d'un prompt sous forme de messages\nprompt = &#91;\n    SystemMessage(content=\"Agis comme un assistant nomm\u00e9 Claude.\"),\n    HumanMessage(content=\"Bonjour Claude ! Comment vas-tu ?\"),\n]\n\n# Streaming de la r\u00e9ponse du mod\u00e8le Anthropic de mani\u00e8re asynchrone\nasync for token in anthropic.astream(prompt):\n    print(token, end=\"\", flush=True)\n\n# D\u00e9finition d'un nouveau prompt avec un template\nprompt = ChatPromptTemplate.from_messages(&#91;\n    (\"system\", \"Tu es un assistant qui \u00e9crit de longues histoires sur un sujet donn\u00e9.\"),\n])\n\n# Construction d'une cha\u00eene personnalis\u00e9e combinant les deux mod\u00e8les\nchain = prompt | RunnableMap({\n    \"openai\": openai,\n    \"anthropic\": anthropic,\n})\n\n# Appel de la cha\u00eene personnalis\u00e9e en mode batch\nresponses = chain.batch(&#91;{\"topic\": \"les perroquets\"}, {\"topic\": \"les chats\"}])\nprint(responses)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Le SDK expose une classe <strong><code>RemoteRunnable<\/code><\/strong> qui encapsule la logique d&rsquo;appel aux diff\u00e9rents endpoints de l&rsquo;API. Pour chaque composant que nous souhaitons utiliser, nous cr\u00e9ons une instance de <code>RemoteRunnable<\/code> en sp\u00e9cifiant son URL.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous pouvons alors appeler les m\u00e9thodes <strong><code>invoke<\/code><\/strong> et <strong><code>astream<\/code><\/strong> sur ces instances pour ex\u00e9cuter les composants de mani\u00e8re synchrone ou asynchrone, comme s&rsquo;ils \u00e9taient de simples objets Python.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La m\u00e9thode <code>invoke<\/code> envoie une requ\u00eate unique \u00e0 l&rsquo;endpoint <strong>\/invoke<\/strong> de l&rsquo;API et renvoie la r\u00e9ponse compl\u00e8te. C&rsquo;est le mode d&rsquo;appel le plus simple, id\u00e9al pour les t\u00e2ches ne n\u00e9cessitant pas de streaming.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La m\u00e9thode <code>astream<\/code>, quant \u00e0 elle, envoie une requ\u00eate \u00e0 l&rsquo;endpoint <strong>\/astream<\/strong> et renvoie un g\u00e9n\u00e9rateur asynchrone qui yield les tokens de la r\u00e9ponse au fur et \u00e0 mesure de leur g\u00e9n\u00e9ration par le serveur. Ce mode est parfait pour obtenir des r\u00e9sultats en temps r\u00e9el et afficher une r\u00e9ponse progressive \u00e0 l&rsquo;utilisateur.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le SDK permet \u00e9galement de construire facilement des cha\u00eenes personnalis\u00e9es en combinant plusieurs composants distants \u00e0 l&rsquo;aide de l&rsquo;op\u00e9rateur <code>|<\/code>, de la m\u00eame mani\u00e8re qu&rsquo;avec des composants locaux. On peut ainsi tirer parti de la flexibilit\u00e9 de <a href=\"https:\/\/docs.langchain.com\/\">LangChain<\/a> pour cr\u00e9er des pipelines de traitement complexes qui s&rsquo;ex\u00e9cutent de mani\u00e8re transparente via des appels API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En r\u00e9sum\u00e9, le <strong>SDK LangServe<\/strong> simplifie grandement l&rsquo;utilisation d&rsquo;APIs LangChain depuis des applications Python. Gr\u00e2ce \u00e0 une interface intuitive calqu\u00e9e sur celles des composants locaux, il devient un jeu d&rsquo;enfant d&rsquo;int\u00e9grer des mod\u00e8les et des cha\u00eenes distantes dans votre code. Le SDK g\u00e8re pour vous tous les aspects bas niveau comme la s\u00e9rialisation JSON et les requ\u00eates HTTP, vous permettant de vous concentrer sur la logique de votre application.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans la prochaine section, nous explorerons d&rsquo;autres moyens d&rsquo;appeler notre API LangServe, en utilisant divers langages et outils tels que <strong>TypeScript<\/strong>, <strong>Python avec <a href=\"https:\/\/requests.readthedocs.io\/\">requests<\/a><\/strong> et <strong><a href=\"https:\/\/curl.se\/\">curl<\/a><\/strong> en ligne de commande.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Autres clients<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En plus du SDK Python officiel, LangServe permet d&rsquo;interagir avec les APIs d\u00e9ploy\u00e9es depuis une multitude d&rsquo;autres langages et outils. Que vous pr\u00e9f\u00e9riez travailler avec <strong>TypeScript<\/strong>, <strong>Python<\/strong> sans d\u00e9pendances suppl\u00e9mentaires ou m\u00eame directement en ligne de commande avec <strong>curl<\/strong>, LangServe offre une grande flexibilit\u00e9 pour s&rsquo;adapter \u00e0 votre environnement de d\u00e9veloppement.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Client TypeScript avec LangChain.js<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Pour les d\u00e9veloppeurs travaillant dans l&rsquo;\u00e9cosyst\u00e8me <strong>JavaScript\/TypeScript<\/strong>, <a href=\"https:\/\/js.langchain.com\/\">LangChain.js<\/a> propose un client compatible avec LangServe \u00e0 partir de sa version 0.0.166. Ce client vous permet d&rsquo;appeler les APIs LangServe de mani\u00e8re intuitive et fortement typ\u00e9e.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voici un exemple d&rsquo;utilisation du client TypeScript pour invoquer la cha\u00eene de blagues que nous avons d\u00e9ploy\u00e9e pr\u00e9c\u00e9demment :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import { RemoteRunnable } from \"@langchain\/core\/runnables\/remote\";\n\nconst chain = new RemoteRunnable({\n  url: \"http:\/\/localhost:8000\/blague\/\", \/\/ URL de l'API LangServe\n});\n\nconst result = await chain.invoke({ topic: \"les chats\" });\nconsole.log(result); \/\/ Affiche le r\u00e9sultat de l'API<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Le client expose une classe <code>RemoteRunnable<\/code> similaire \u00e0 celle du SDK Python, rendant l&rsquo;utilisation de LangServe coh\u00e9rente et famili\u00e8re quelle que soit la plateforme.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Appels API en Python avec requests<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Si vous souhaitez interagir avec une API LangServe depuis un script Python sans installer de d\u00e9pendances suppl\u00e9mentaires, vous pouvez utiliser directement la biblioth\u00e8que standard <a href=\"https:\/\/requests.readthedocs.io\/\">requests<\/a>. Cette approche est un peu plus verbeuse que l&rsquo;utilisation du SDK officiel, mais offre une grande flexibilit\u00e9 et peut \u00eatre utile dans certains sc\u00e9narios.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voici comment appeler l&rsquo;endpoint <code>\/blague\/invoke<\/code> en utilisant <code>requests<\/code> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import requests\n\nresponse = requests.post(\n    \"http:\/\/localhost:8000\/blague\/invoke\", # URL de l'endpoint d'invocation\n    json={\"input\": {\"topic\": \"les chats\"}} # Param\u00e8tres d'entr\u00e9e au format JSON\n)\nresult = response.json() # D\u00e9code la r\u00e9ponse JSON\nprint(result) # Affiche le r\u00e9sultat<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Il suffit de sp\u00e9cifier l&rsquo;URL compl\u00e8te de l&rsquo;endpoint, de fournir les param\u00e8tres d&rsquo;entr\u00e9e au format JSON dans le corps de la requ\u00eate, et de r\u00e9cup\u00e9rer le r\u00e9sultat en d\u00e9codant la r\u00e9ponse JSON.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Utilisation de curl en ligne de commande<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Enfin, pour les amateurs de ligne de commande ou pour les situations o\u00f9 l&rsquo;installation d&rsquo;un SDK n&rsquo;est pas pratique, LangServe peut \u00eatre utilis\u00e9 directement avec l&rsquo;outil <a href=\"https:\/\/curl.se\/\">curl<\/a>. Cette approche est id\u00e9ale pour tester rapidement une API ou pour l&rsquo;int\u00e9grer dans des scripts shell.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voici un exemple d&rsquo;appel \u00e0 l&rsquo;endpoint <code>\/blague\/invoke<\/code> avec curl :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl --location --request POST 'http:\/\/localhost:8000\/blague\/invoke' \\\n--header 'Content-Type: application\/json' \\\n--data-raw '{\n    \"input\": {\n        \"topic\": \"les chats\"\n    }\n}'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">On sp\u00e9cifie la m\u00e9thode HTTP (<code>POST<\/code>), l&rsquo;URL de l&rsquo;endpoint, le type de contenu (<code>application\/json<\/code>) et les param\u00e8tres d&rsquo;entr\u00e9e au format JSON. curl se charge d&rsquo;envoyer la requ\u00eate et affiche la r\u00e9ponse directement dans le terminal.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En r\u00e9sum\u00e9, <strong>LangServe<\/strong> se distingue par son excellente interop\u00e9rabilit\u00e9 et sa facilit\u00e9 d&rsquo;int\u00e9gration. Gr\u00e2ce \u00e0 une API REST standard et bien document\u00e9e, il est possible d&rsquo;interagir avec les endpoints LangServe depuis pratiquement n&rsquo;importe quel langage ou outil capable d&rsquo;envoyer des requ\u00eates HTTP. Que vous soyez un adepte de <strong>TypeScript<\/strong>, de <strong>Python<\/strong> ou m\u00eame de <strong>curl<\/strong>, LangServe s&rsquo;adapte \u00e0 votre environnement et \u00e0 vos pr\u00e9f\u00e9rences, vous permettant de tirer parti de ses fonctionnalit\u00e9s avanc\u00e9es en toute simplicit\u00e9.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Playground LangServe<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Le playground est une fonctionnalit\u00e9 tr\u00e8s pratique propos\u00e9e par <strong>LangServe<\/strong> pour tester et d\u00e9boguer facilement les diff\u00e9rents endpoints et cha\u00eenes d\u00e9ploy\u00e9s. Il s&rsquo;agit d&rsquo;une interface web interactive, accessible directement depuis l&rsquo;API, qui permet d&rsquo;ex\u00e9cuter des requ\u00eates sur les composants sans avoir \u00e0 \u00e9crire de code.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"741\" height=\"328\" src=\"https:\/\/ai.reboot-conseil.com\/wp-content\/uploads\/2024\/03\/image.png\" alt=\"\" class=\"wp-image-920\" srcset=\"https:\/\/beta.reboot-conseil.com\/wp-content\/uploads\/2024\/03\/image.png 741w, https:\/\/beta.reboot-conseil.com\/wp-content\/uploads\/2024\/03\/image-300x133.png 300w\" sizes=\"(max-width: 741px) 100vw, 741px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Pour acc\u00e9der au playground d&rsquo;un composant, il suffit d&rsquo;ajouter <code>\/playground<\/code> \u00e0 la fin de son URL de base. Par exemple, si nous avons d\u00e9ploy\u00e9 une cha\u00eene sous le chemin <code>\/ma_chaine<\/code>, son playground sera accessible \u00e0 l&rsquo;adresse <code>http:\/\/mon-serveur.com\/ma_chaine\/playground<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le playground propose une interface utilisateur intuitive, divis\u00e9e en plusieurs sections :<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Saisie des param\u00e8tres d&rsquo;entr\u00e9e&nbsp;: Un \u00e9diteur JSON permet de saisir les param\u00e8tres d&rsquo;entr\u00e9e attendus par l&rsquo;endpoint s\u00e9lectionn\u00e9. Le&nbsp;sch\u00e9ma JSON&nbsp;du composant est affich\u00e9 \u00e0 titre indicatif pour conna\u00eetre le format attendu.<\/li>\n\n\n\n<li><strong>Ex\u00e9cution de la requ\u00eate<\/strong>&nbsp;: Un bouton \u00ab\u00a0<strong>Ex\u00e9cuter<\/strong>\u00a0\u00bb permet de lancer la requ\u00eate vers l&rsquo;endpoint s\u00e9lectionn\u00e9 avec les param\u00e8tres saisis.<\/li>\n\n\n\n<li><strong>Affichage du r\u00e9sultat<\/strong>&nbsp;: La r\u00e9ponse renvoy\u00e9e par l&rsquo;API est affich\u00e9e dans un volet d\u00e9di\u00e9, avec coloration syntaxique pour faciliter la lecture. En cas d&rsquo;erreur (param\u00e8tres manquants, format invalide, etc.), le message d&rsquo;erreur est affich\u00e9 pour aider au d\u00e9bogage.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"741\" height=\"546\" src=\"https:\/\/ai.reboot-conseil.com\/wp-content\/uploads\/2024\/03\/image-1.png\" alt=\"\" class=\"wp-image-921\" srcset=\"https:\/\/beta.reboot-conseil.com\/wp-content\/uploads\/2024\/03\/image-1.png 741w, https:\/\/beta.reboot-conseil.com\/wp-content\/uploads\/2024\/03\/image-1-300x221.png 300w\" sizes=\"(max-width: 741px) 100vw, 741px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" width=\"725\" height=\"1024\" src=\"https:\/\/ai.reboot-conseil.com\/wp-content\/uploads\/2024\/03\/image-3-725x1024.png\" alt=\"\" class=\"wp-image-923\" srcset=\"https:\/\/beta.reboot-conseil.com\/wp-content\/uploads\/2024\/03\/image-3-725x1024.png 725w, https:\/\/beta.reboot-conseil.com\/wp-content\/uploads\/2024\/03\/image-3-212x300.png 212w, https:\/\/beta.reboot-conseil.com\/wp-content\/uploads\/2024\/03\/image-3.png 741w\" sizes=\"(max-width: 725px) 100vw, 725px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Le playground supporte \u00e9galement le test des endpoints en streaming (comme <code>\/astream<\/code>). Dans ce cas, la r\u00e9ponse est affich\u00e9e en temps r\u00e9el, au fur et \u00e0 mesure de la r\u00e9ception des donn\u00e9es depuis le serveur.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;un des principaux avantages du playground est qu&rsquo;il est enti\u00e8rement <strong>auto-document\u00e9<\/strong>. Chaque endpoint est d\u00e9crit de mani\u00e8re d\u00e9taill\u00e9e, avec des explications sur son comportement, ses param\u00e8tres d&rsquo;entr\u00e9e et son format de sortie. Les sch\u00e9mas JSON des types d&rsquo;entr\u00e9e et de sortie sont \u00e9galement affich\u00e9s, servant de r\u00e9f\u00e9rence pour construire des requ\u00eates valides.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">De plus, le playground est directement li\u00e9 \u00e0 la <a href=\"https:\/\/www.openapis.org\/\">documentation OpenAPI<\/a> de l&rsquo;API. Il est possible de naviguer de mani\u00e8re fluide entre les deux interfaces pour consulter les sp\u00e9cifications d\u00e9taill\u00e9es de chaque endpoint tout en les testant de mani\u00e8re interactive.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le playground de LangServe offre \u00e9galement des fonctionnalit\u00e9s avanc\u00e9es pour certains types de composants. Par exemple, pour les cha\u00eenes de conversation (chat), il propose une interface sp\u00e9cialis\u00e9e permettant de visualiser l&rsquo;historique des \u00e9changes et de saisir de nouveaux messages de mani\u00e8re naturelle.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En r\u00e9sum\u00e9, le playground est un outil essentiel propos\u00e9 par <strong>LangServe<\/strong> pour faciliter le test et le d\u00e9bogage des APIs d\u00e9ploy\u00e9es. Gr\u00e2ce \u00e0 son interface web intuitive, auto-document\u00e9e et li\u00e9e \u00e0 la sp\u00e9cification <strong>OpenAPI<\/strong>, il permet aux d\u00e9veloppeurs d&rsquo;explorer et de valider le comportement des composants de mani\u00e8re interactive, sans avoir \u00e0 \u00e9crire de code. Le support des requ\u00eates en streaming et les interfaces sp\u00e9cialis\u00e9es pour certains types de composants en font un v\u00e9ritable atout pour la productivit\u00e9 et la qualit\u00e9 des APIs cr\u00e9\u00e9es avec <strong>LangServe<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Partage et liens<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Une fois votre API <strong>LangServe<\/strong> d\u00e9ploy\u00e9e et test\u00e9e, vous souhaiterez probablement la partager avec d&rsquo;autres d\u00e9veloppeurs ou l&rsquo;int\u00e9grer dans d&rsquo;autres applications. LangServe propose des fonctionnalit\u00e9s avanc\u00e9es de partage et de g\u00e9n\u00e9ration de liens pour faciliter ces t\u00e2ches.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"436\" height=\"375\" src=\"https:\/\/ai.reboot-conseil.com\/wp-content\/uploads\/2024\/03\/image-4.png\" alt=\"\" class=\"wp-image-924\" srcset=\"https:\/\/beta.reboot-conseil.com\/wp-content\/uploads\/2024\/03\/image-4.png 436w, https:\/\/beta.reboot-conseil.com\/wp-content\/uploads\/2024\/03\/image-4-300x258.png 300w\" sizes=\"(max-width: 436px) 100vw, 436px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Chaque composant d\u00e9ploy\u00e9 via LangServe est associ\u00e9 \u00e0 un lien unique, qui peut \u00eatre partag\u00e9 pour permettre \u00e0 d&rsquo;autres personnes d&rsquo;acc\u00e9der directement \u00e0 son <em>playground<\/em>. Ce lien a la forme suivante : <code>https:\/\/votre-api.com\/chemin\/du\/composant\/playground<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il suffit de copier-coller ce lien et de l&rsquo;envoyer aux d\u00e9veloppeurs concern\u00e9s. En l&rsquo;ouvrant dans leur navigateur, ils acc\u00e9deront \u00e0 une interface interactive leur permettant de tester le composant avec diff\u00e9rentes entr\u00e9es, de visualiser les r\u00e9sultats et de consulter la documentation associ\u00e9e. C&rsquo;est un excellent moyen de pr\u00e9senter les fonctionnalit\u00e9s de votre API et de permettre \u00e0 d&rsquo;autres de l&rsquo;essayer sans avoir \u00e0 configurer un environnement de d\u00e9veloppement.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">De plus, pour les composants param\u00e9trables (<em>configurable runnables<\/em>), le playground de LangServe offre la possibilit\u00e9 de g\u00e9n\u00e9rer des liens sp\u00e9cifiques \u00e0 une configuration donn\u00e9e. Imaginons par exemple que vous avez d\u00e9ploy\u00e9 une <strong>cha\u00eene de requ\u00eatage<\/strong> (<em>retrieval chain<\/em>) dans laquelle l&rsquo;utilisateur peut s\u00e9lectionner la base de connaissances \u00e0 interroger via un param\u00e8tre nomm\u00e9 <code>knowledge_base<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Depuis le playground, vous pouvez choisir une base de connaissances sp\u00e9cifique, disons <code>knowledge_base_42<\/code>, remplir \u00e9ventuellement d&rsquo;autres param\u00e8tres, puis cliquer sur le bouton \u00ab\u00a0Copier le lien\u00a0\u00bb qui appara\u00eet. Vous obtiendrez alors un lien de la forme <code>https:\/\/votre-api.com\/chemin\/du\/composant\/playground?params=...<\/code> qui encode la configuration choisie.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En partageant ce lien, vous permettez \u00e0 quiconque de tester votre composant avec la configuration pr\u00e9-remplie, sans avoir \u00e0 s\u00e9lectionner manuellement la base de connaissances ou \u00e0 ajuster d&rsquo;autres param\u00e8tres. C&rsquo;est particuli\u00e8rement utile pour pr\u00e9senter un cas d&rsquo;usage pr\u00e9cis, partager un r\u00e9sultat int\u00e9ressant ou faciliter le d\u00e9bogage d&rsquo;une configuration particuli\u00e8re.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il est important de noter que ces liens donnent un acc\u00e8s en lecture seule \u00e0 votre API. Les personnes qui les utilisent peuvent ex\u00e9cuter le composant avec les param\u00e8tres fournis, mais ne peuvent pas modifier le code ou la configuration sous-jacente. Les liens de playground g\u00e9n\u00e9r\u00e9s sont donc un moyen s\u00fbr et pratique de partager et de promouvoir votre travail.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En r\u00e9sum\u00e9, les fonctionnalit\u00e9s de partage et de g\u00e9n\u00e9ration de liens offertes par <strong>LangServe<\/strong> sont un atout pr\u00e9cieux pour faciliter la collaboration et la d\u00e9monstration autour de vos APIs. En quelques clics, vous pouvez permettre \u00e0 d&rsquo;autres d\u00e9veloppeurs de tester vos composants de mani\u00e8re interactive, avec une configuration personnalis\u00e9e, tout en pr\u00e9servant la s\u00e9curit\u00e9 de votre d\u00e9ploiement. C&rsquo;est une excellente fa\u00e7on de mettre en valeur vos r\u00e9alisations, de recueillir des retours et de susciter l&rsquo;int\u00e9r\u00eat pour vos APIs bas\u00e9es sur <a href=\"https:\/\/www.langchain.com\/\">LangChain<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D\u00e9ploiement en production<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Le d\u00e9ploiement en production est une \u00e9tape cruciale dans le cycle de vie d&rsquo;une application, et les APIs d\u00e9velopp\u00e9es avec <strong>LangServe<\/strong> ne font pas exception. Il s&rsquo;agit de rendre votre application accessible aux utilisateurs finaux de mani\u00e8re fiable, performante et s\u00e9curis\u00e9e.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>LangServe<\/strong> a \u00e9t\u00e9 con\u00e7u pour faciliter le d\u00e9ploiement sur les principaux fournisseurs de cloud, en tirant parti de technologies \u00e9prouv\u00e9es comme les conteneurs <a href=\"https:\/\/www.docker.com\/\">Docker<\/a>. Voici un aper\u00e7u des options de d\u00e9ploiement recommand\u00e9es pour diff\u00e9rentes plateformes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">D\u00e9ploiement sur AWS<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/aws.amazon.com\/\">Amazon Web Services<\/a> (AWS) est l&rsquo;un des leaders du march\u00e9 du cloud computing, offrant une large gamme de services pour h\u00e9berger et orchestrer des applications. Pour d\u00e9ployer une API <strong>LangServe<\/strong> sur AWS, nous recommandons d&rsquo;utiliser <a href=\"https:\/\/aws.github.io\/copilot-cli\/\">AWS Copilot<\/a>, un outil en ligne de commande qui simplifie la gestion des applications conteneuris\u00e9es.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voici les \u00e9tapes g\u00e9n\u00e9rales pour d\u00e9ployer avec AWS Copilot :<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Installez la CLI AWS Copilot en suivant la <a href=\"https:\/\/aws.github.io\/copilot-cli\/docs\/getting-started\/install\/\">documentation officielle<\/a>.<\/li>\n\n\n\n<li>Initialisez un nouvel environnement Copilot pour votre application :<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>copilot init --app mon-app --name mon-service --type 'Load Balanced Web Service' --dockerfile '.\/Dockerfile' --deploy<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Cette commande cr\u00e9e les fichiers de configuration n\u00e9cessaires, construit l&rsquo;image Docker de votre application et la d\u00e9ploie sur un cluster <a href=\"https:\/\/aws.amazon.com\/ecs\/\">ECS<\/a> (Elastic Container Service).<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>AWS Copilot expose automatiquement votre API sur un load balancer, qui distribue le trafic vers les instances de votre conteneur. Vous pouvez r\u00e9cup\u00e9rer l&rsquo;URL publique de votre API avec la commande suivante :<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>copilot svc show --name mon-service --url<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">AWS Copilot offre de nombreuses autres fonctionnalit\u00e9s, comme le d\u00e9ploiement canary, la gestion des variables d&rsquo;environnement, l&rsquo;auto-scaling, etc. R\u00e9f\u00e9rez-vous \u00e0 la <a href=\"https:\/\/aws.github.io\/copilot-cli\/docs\/overview\/\">documentation officielle<\/a> pour en savoir plus.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">D\u00e9ploiement sur Azure<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/azure.microsoft.com\/\">Microsoft Azure<\/a> est une autre plateforme cloud populaire, qui propose des services de calcul, de stockage et de mise en r\u00e9seau. Pour d\u00e9ployer une API <strong>LangServe<\/strong> sur Azure, nous recommandons d&rsquo;utiliser <a href=\"https:\/\/azure.microsoft.com\/en-us\/products\/container-apps\">Azure Container Apps<\/a>, un service enti\u00e8rement g\u00e9r\u00e9 pour ex\u00e9cuter des applications conteneuris\u00e9es.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voici comment d\u00e9ployer avec Azure Container Apps :<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Installez la CLI Azure en suivant la <a href=\"https:\/\/docs.microsoft.com\/en-us\/cli\/azure\/install-azure-cli\">documentation officielle<\/a>.<\/li>\n\n\n\n<li>Connectez-vous \u00e0 votre compte Azure avec la commande suivante :<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>az login<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>Cr\u00e9ez un groupe de ressources pour votre application :<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>az group create --name mon-groupe-ressources --location eastus<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>Cr\u00e9ez un environnement Azure Container Apps :<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>az containerapp env create --name mon-environnement --resource-group mon-groupe-ressources --location eastus<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li>D\u00e9ployez votre application en sp\u00e9cifiant le Dockerfile :<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>az containerapp create --name mon-app --resource-group mon-groupe-ressources --environment mon-environnement --image mon-registry.azurecr.io\/mon-image:tag --target-port 8000 --ingress 'external'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Cette commande construit l&rsquo;image Docker de votre application, la pousse sur un registre de conteneurs (<a href=\"https:\/\/azure.microsoft.com\/en-us\/products\/container-registry\/\">Azure Container Registry<\/a>) et la d\u00e9ploie sur Azure Container Apps. Votre API est alors accessible via une URL publique.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour en savoir plus sur Azure Container Apps, r\u00e9f\u00e9rez-vous \u00e0 la <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/container-apps\/overview\">documentation officielle<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">D\u00e9ploiement sur Google Cloud Platform<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/cloud.google.com\/\">Google Cloud Platform<\/a> (GCP) est la plateforme cloud de Google, qui propose une suite compl\u00e8te de services pour d\u00e9ployer et g\u00e9rer des applications. Pour d\u00e9ployer une API <strong>LangServe<\/strong> sur GCP, nous recommandons d&rsquo;utiliser <a href=\"https:\/\/cloud.google.com\/run\">Cloud Run<\/a>, un service de calcul serverless enti\u00e8rement g\u00e9r\u00e9 pour les applications conteneuris\u00e9es.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voici les \u00e9tapes pour d\u00e9ployer avec Cloud Run :<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Installez la CLI Google Cloud en suivant la <a href=\"https:\/\/cloud.google.com\/sdk\/docs\/install\">documentation officielle<\/a>.<\/li>\n\n\n\n<li>Initialisez le SDK Google Cloud avec la commande suivante :<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>gcloud init<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Suivez les instructions pour vous connecter \u00e0 votre compte GCP et s\u00e9lectionner un projet.<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>Construisez et poussez l&rsquo;image Docker de votre application vers <a href=\"https:\/\/cloud.google.com\/container-registry\">Google Container Registry<\/a> :<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>gcloud builds submit --tag gcr.io\/mon-projet\/mon-app<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>D\u00e9ployez votre application sur Cloud Run :<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>gcloud run deploy mon-app --image gcr.io\/mon-projet\/mon-app --platform managed --allow-unauthenticated --region us-central1 --port 8000<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Cette commande d\u00e9ploie votre image Docker sur une instance de Cloud Run et rend votre API accessible via une URL publique.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cloud Run offre de nombreuses fonctionnalit\u00e9s avanc\u00e9es, comme la mise \u00e0 l&rsquo;\u00e9chelle automatique, les d\u00e9ploiements progressifs, la gestion des secrets, etc. R\u00e9f\u00e9rez-vous \u00e0 la <a href=\"https:\/\/cloud.google.com\/run\/docs\">documentation officielle<\/a> pour en savoir plus.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Au terme de cet article, nous avons pu mesurer \u00e0 quel point <strong>LangServe<\/strong> constitue un outil pr\u00e9cieux pour industrialiser et mettre en production des applications construites avec le framework <a href=\"https:\/\/langchain.readthedocs.io\/\">LangChain<\/a>. En simplifiant consid\u00e9rablement le d\u00e9ploiement d&rsquo;agents, de cha\u00eenes et de mod\u00e8les sous forme d&rsquo;APIs REST, LangServe permet aux d\u00e9veloppeurs de se concentrer sur la logique m\u00e9tier de leurs applications tout en b\u00e9n\u00e9ficiant de capacit\u00e9s avanc\u00e9es en termes de documentation, de test et de partage.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La <strong>g\u00e9n\u00e9ration automatique d&rsquo;une documentation OpenAPI exhaustive<\/strong> et de sch\u00e9mas JSON pour chaque endpoint d\u00e9ploy\u00e9 est un atout majeur pour favoriser l&rsquo;adoption et l&rsquo;int\u00e9gration des APIs cr\u00e9\u00e9es avec LangServe. Gr\u00e2ce \u00e0 une documentation toujours \u00e0 jour et facilement accessible, les d\u00e9veloppeurs peuvent rapidement comprendre et utiliser ces APIs dans leurs propres projets.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le <strong>playground interactif<\/strong> propos\u00e9 par LangServe est un autre point fort de cette biblioth\u00e8que. En permettant de tester et de d\u00e9boguer les diff\u00e9rents composants de mani\u00e8re visuelle et interactive, directement depuis l&rsquo;interface web de l&rsquo;API, il facilite grandement la prise en main et l&rsquo;exp\u00e9rimentation. Les fonctionnalit\u00e9s de <strong>partage de configurations via des liens uniques<\/strong> sont \u00e9galement tr\u00e8s appr\u00e9ciables pour collaborer efficacement autour des APIs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sur le plan de la mise en production, LangServe s&rsquo;int\u00e8gre parfaitement avec les principaux fournisseurs de cloud computing comme <a href=\"https:\/\/aws.amazon.com\/\">Amazon Web Services<\/a>, <a href=\"https:\/\/azure.microsoft.com\/\">Microsoft Azure<\/a> ou <a href=\"https:\/\/cloud.google.com\/\">Google Cloud Platform<\/a>. Le d\u00e9ploiement sous forme de conteneurs <strong>Docker<\/strong>, orchestr\u00e9 par des outils comme <a href=\"https:\/\/aws.amazon.com\/containers\/copilot\/\">AWS Copilot<\/a>, <a href=\"https:\/\/azure.microsoft.com\/en-us\/products\/container-apps\/\">Azure Container Apps<\/a> ou <a href=\"https:\/\/cloud.google.com\/run\">Google Cloud Run<\/a>, apporte un haut niveau de flexibilit\u00e9 et de portabilit\u00e9. Les APIs ainsi d\u00e9ploy\u00e9es b\u00e9n\u00e9ficient de toute la puissance et de la fiabilit\u00e9 des infrastructures cloud, tout en minimisant les efforts d&rsquo;administration syst\u00e8me.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En conclusion, <strong>LangServe<\/strong> appara\u00eet comme la solution id\u00e9ale pour industrialiser et valoriser les applications bas\u00e9es sur LangChain. Gr\u00e2ce \u00e0 ses fonctionnalit\u00e9s avanc\u00e9es de g\u00e9n\u00e9ration d&rsquo;API, de documentation, de test et de d\u00e9ploiement, cette biblioth\u00e8que ouvre de nouvelles perspectives pour la d\u00e9mocratisation des technologies de traitement du langage naturel. Que vous soyez data scientist, d\u00e9veloppeur ou architecte, LangServe vous accompagnera efficacement dans la mise en production de vos mod\u00e8les et agents conversationnels, vous permettant ainsi de cr\u00e9er de la valeur rapidement et sereinement.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour aller plus loin avec LangServe, n&rsquo;h\u00e9sitez pas \u00e0 consulter les ressources suivantes :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>La <a href=\"https:\/\/python.langchain.com\/docs\/langserve\">documentation officielle<\/a> de LangServe<\/li>\n\n\n\n<li>Le <a href=\"https:\/\/github.com\/langchain-ai\/langserve\/tree\/main\/examples\">d\u00e9p\u00f4t d&rsquo;exemples<\/a> proposant de nombreux cas d&rsquo;usage concrets de LangChain<\/li>\n\n\n\n<li>Le <a href=\"https:\/\/blog.langchain.dev\/\">blog de LangChain<\/a> pour d\u00e9couvrir les derni\u00e8res avanc\u00e9es et bonnes pratiques autour de la biblioth\u00e8que<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Nul doute que <strong>LangServe<\/strong> deviendra rapidement un outil incontournable pour toute personne souhaitant construire des applications de traitement du langage \u00e0 l&rsquo;\u00e9tat de l&rsquo;art et les mettre en production en toute simplicit\u00e9. Son int\u00e9gration harmonieuse avec LangChain et son orientation r\u00e9solument tourn\u00e9e vers le d\u00e9ploiement en font un choix strat\u00e9gique pour les projets d&rsquo;envergure.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>LangServe est une biblioth\u00e8que open-source d\u00e9velopp\u00e9e pour simplifier consid\u00e9rablement le d\u00e9ploiement et la mise en production d&rsquo;applications construites avec le framework LangChain. Son objectif principal est de permettre aux d\u00e9veloppeurs d&rsquo;exposer rapidement et facilement leurs agents, cha\u00eenes et mod\u00e8les LangChain sous forme d&rsquo;API REST, rendant ainsi leur utilisation et leur int\u00e9gration dans d&rsquo;autres syst\u00e8mes beaucoup plus ais\u00e9es. Bas\u00e9e sur le framework web Python FastAPI, reconnu pour ses performances et sa facilit\u00e9 d&rsquo;utilisation, LangServe offre de nombreuses fonctionnalit\u00e9s cl\u00e9s pour acc\u00e9l\u00e9rer la mise en production. Elle g\u00e9n\u00e8re automatiquement une documentation OpenAPI compl\u00e8te et des sch\u00e9mas d&rsquo;input\/output pour chaque endpoint, permettant une compr\u00e9hension et une utilisation rapide de l&rsquo;API par les d\u00e9veloppeurs et les clients. En plus de la g\u00e9n\u00e9ration d&rsquo;API, LangServe inclut \u00e9galement un playground interactif tr\u00e8s pratique pour tester et d\u00e9bugger les diff\u00e9rents endpoints et cha\u00eenes, ainsi que des fonctionnalit\u00e9s de partage de configurations via des liens uniques. La biblioth\u00e8que fournit aussi un client Python pour appeler facilement les API d\u00e9ploy\u00e9es depuis d&rsquo;autres applications. Que vous soyez un data scientist cherchant \u00e0 rendre ses mod\u00e8les accessibles ou un d\u00e9veloppeur souhaitant int\u00e9grer des capacit\u00e9s de traitement du langage naturel dans ses applications, LangServe vous fera gagner un temps pr\u00e9cieux en vous permettant de passer en un clin d&rsquo;\u0153il de l&rsquo;exp\u00e9rimentation avec LangChain au d\u00e9ploiement en production dans le cloud (AWS, Azure, GCP, etc). Dans cet article, nous verrons comment prendre en main LangServe pour d\u00e9ployer vos premiers endpoints, comment utiliser le client et le playground, et surtout comment mettre en production vos applications LangChain en quelques lignes de code sur les principaux cloud providers du march\u00e9. Pr\u00e9requis Avant de vous lancer dans l&rsquo;utilisation de LangServe, assurez-vous de disposer d&rsquo;un environnement de d\u00e9veloppement Python fonctionnel sur votre machine. LangServe n\u00e9cessite une version de Python 3.7 ou sup\u00e9rieure. Vous pouvez v\u00e9rifier votre version de Python en ex\u00e9cutant la commande python &#8211;version dans votre terminal. Le gestionnaire de paquets pip est \u00e9galement requis pour installer facilement LangServe et ses d\u00e9pendances. Pip est g\u00e9n\u00e9ralement install\u00e9 par d\u00e9faut avec les versions r\u00e9centes de Python. Pour vous en assurer, ex\u00e9cutez pip &#8211;version. Si pip n&rsquo;est pas pr\u00e9sent, r\u00e9f\u00e9rez-vous \u00e0 la documentation officielle Python pour les instructions d&rsquo;installation sp\u00e9cifiques \u00e0 votre syst\u00e8me d&rsquo;exploitation. Une connaissance de base du framework LangChain est fortement recommand\u00e9e pour tirer pleinement parti de LangServe. Vous devriez \u00eatre \u00e0 l&rsquo;aise avec les concepts cl\u00e9s tels que les agents, les cha\u00eenes, les mod\u00e8les de langage et les prompts. Si vous d\u00e9butez avec LangChain, il est conseill\u00e9 de vous familiariser avec la documentation officielle et de parcourir quelques exemples avant de passer \u00e0 LangServe. De m\u00eame, une compr\u00e9hension des principes de base de FastAPI, le framework web sur lequel s&rsquo;appuie LangServe, sera utile pour personnaliser et d\u00e9boguer vos applications si n\u00e9cessaire. FastAPI \u00e9tant un framework tr\u00e8s populaire et bien document\u00e9, vous trouverez facilement de nombreuses ressources en ligne pour vous aider \u00e0 prendre en main ses concepts fondamentaux, tels que le routing, les d\u00e9pendances et la gestion des requ\u00eates et des r\u00e9ponses. Enfin, bien que cela ne soit pas strictement n\u00e9cessaire pour commencer, avoir des notions sur les API REST, les sch\u00e9mas JSON et la documentation OpenAPI vous permettra de comprendre plus en profondeur le fonctionnement interne de LangServe et d&rsquo;exploiter au mieux ses capacit\u00e9s de g\u00e9n\u00e9ration automatique. En r\u00e9sum\u00e9, assurez-vous d&rsquo;avoir : Une fois ces pr\u00e9requis valid\u00e9s, vous serez pr\u00eat \u00e0 installer LangServe et \u00e0 cr\u00e9er votre premi\u00e8re application ! Installation de LangServe L&rsquo;installation de LangServe s&rsquo;effectue tr\u00e8s simplement \u00e0 l&rsquo;aide du gestionnaire de paquets pip. Avant de proc\u00e9der \u00e0 l&rsquo;installation, il est recommand\u00e9 de cr\u00e9er et d&rsquo;activer un nouvel environnement virtuel Python, afin d&rsquo;\u00e9viter tout conflit avec les paquets syst\u00e8mes ou d&rsquo;autres projets. Vous pouvez utiliser venv, conda ou tout autre outil de gestion d&rsquo;environnements virtuels de votre choix. Une fois votre environnement virtuel activ\u00e9, ex\u00e9cutez la commande suivante dans votre terminal pour installer LangServe avec toutes ses d\u00e9pendances : Cette commande installera \u00e0 la fois les composants serveur et client de LangServe, ainsi que les d\u00e9pendances n\u00e9cessaires telles que FastAPI, Uvicorn (un serveur ASGI rapide) et Pydantic (pour la validation des donn\u00e9es). Pip t\u00e9l\u00e9chargera et installera tous les paquets requis dans votre environnement virtuel. Une fois l&rsquo;installation termin\u00e9e, vous pourrez importer et utiliser LangServe dans votre code Python. Il est important de noter que LangServe n\u00e9cessite \u00e9galement une version r\u00e9cente du framework LangChain pour fonctionner correctement. Si vous n&rsquo;avez pas encore install\u00e9 LangChain, pip s&rsquo;en chargera automatiquement lors de l&rsquo;installation de LangServe. Cependant, si vous disposez d\u00e9j\u00e0 d&rsquo;une installation de LangChain, assurez-vous qu&rsquo;elle est \u00e0 jour pour garantir une compatibilit\u00e9 optimale avec LangServe. Maintenant que LangServe est install\u00e9 dans votre environnement Python, vous \u00eates pr\u00eat \u00e0 cr\u00e9er votre premi\u00e8re application ! Dans la section suivante, nous verrons comment mettre en place un serveur FastAPI avec LangServe pour exposer des mod\u00e8les de langage sous forme d&rsquo;API.Premi\u00e8re application LangServe Pour d\u00e9couvrir le fonctionnement de base de LangServe, nous allons cr\u00e9er une application simple qui expose deux mod\u00e8les de chat, l&rsquo;un utilisant l&rsquo;API d&rsquo;OpenAI et l&rsquo;autre celle d&rsquo;Anthropic. Cette application permettra \u00e9galement d&rsquo;invoquer une cha\u00eene combinant un template de prompt et le mod\u00e8le d&rsquo;Anthropic pour g\u00e9n\u00e9rer des blagues sur un sujet donn\u00e9. Voici le code complet de notre application : D\u00e9cortiquons ce code \u00e9tape par \u00e9tape : Pour lancer l&rsquo;application, ex\u00e9cutez simplement le script Python. Uvicorn d\u00e9marrera alors le serveur, et vous pourrez acc\u00e9der \u00e0 votre API \u00e0 l&rsquo;adresse http:\/\/localhost:8000. Gr\u00e2ce \u00e0 la magie de LangServe et de FastAPI, une documentation OpenAPI compl\u00e8te est automatiquement g\u00e9n\u00e9r\u00e9e pour votre API. Vous pouvez y acc\u00e9der en naviguant vers http:\/\/localhost:8000\/docs dans votre navigateur web. Cette documentation interactive vous permet de visualiser tous les endpoints disponibles, leurs sch\u00e9mas d&rsquo;entr\u00e9e et de sortie, et m\u00eame de les tester directement depuis l&rsquo;interface web. Vous pouvez \u00e9galement acc\u00e9der au playground de LangServe pour chaque composant en ajoutant \/playground \u00e0 son chemin (par exemple, http:\/\/localhost:8000\/openai\/playground). Le playground fournit une interface utilisateur conviviale pour tester les diff\u00e9rentes fonctionnalit\u00e9s de votre API. Et voil\u00e0 ! Avec seulement quelques lignes de code, vous avez cr\u00e9\u00e9 une<\/p>\n","protected":false},"author":5,"featured_media":925,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-917","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>LangServe - Prise en main et mise en prod -<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"LangServe - Prise en main et mise en prod -\" \/>\n<meta property=\"og:description\" content=\"LangServe est une biblioth\u00e8que open-source d\u00e9velopp\u00e9e pour simplifier consid\u00e9rablement le d\u00e9ploiement et la mise en production d&rsquo;applications construites avec le framework LangChain. Son objectif principal est de permettre aux d\u00e9veloppeurs d&rsquo;exposer rapidement et facilement leurs agents, cha\u00eenes et mod\u00e8les LangChain sous forme d&rsquo;API REST, rendant ainsi leur utilisation et leur int\u00e9gration dans d&rsquo;autres syst\u00e8mes beaucoup plus ais\u00e9es. Bas\u00e9e sur le framework web Python FastAPI, reconnu pour ses performances et sa facilit\u00e9 d&rsquo;utilisation, LangServe offre de nombreuses fonctionnalit\u00e9s cl\u00e9s pour acc\u00e9l\u00e9rer la mise en production. Elle g\u00e9n\u00e8re automatiquement une documentation OpenAPI compl\u00e8te et des sch\u00e9mas d&rsquo;input\/output pour chaque endpoint, permettant une compr\u00e9hension et une utilisation rapide de l&rsquo;API par les d\u00e9veloppeurs et les clients. En plus de la g\u00e9n\u00e9ration d&rsquo;API, LangServe inclut \u00e9galement un playground interactif tr\u00e8s pratique pour tester et d\u00e9bugger les diff\u00e9rents endpoints et cha\u00eenes, ainsi que des fonctionnalit\u00e9s de partage de configurations via des liens uniques. La biblioth\u00e8que fournit aussi un client Python pour appeler facilement les API d\u00e9ploy\u00e9es depuis d&rsquo;autres applications. Que vous soyez un data scientist cherchant \u00e0 rendre ses mod\u00e8les accessibles ou un d\u00e9veloppeur souhaitant int\u00e9grer des capacit\u00e9s de traitement du langage naturel dans ses applications, LangServe vous fera gagner un temps pr\u00e9cieux en vous permettant de passer en un clin d&rsquo;\u0153il de l&rsquo;exp\u00e9rimentation avec LangChain au d\u00e9ploiement en production dans le cloud (AWS, Azure, GCP, etc). Dans cet article, nous verrons comment prendre en main LangServe pour d\u00e9ployer vos premiers endpoints, comment utiliser le client et le playground, et surtout comment mettre en production vos applications LangChain en quelques lignes de code sur les principaux cloud providers du march\u00e9. Pr\u00e9requis Avant de vous lancer dans l&rsquo;utilisation de LangServe, assurez-vous de disposer d&rsquo;un environnement de d\u00e9veloppement Python fonctionnel sur votre machine. LangServe n\u00e9cessite une version de Python 3.7 ou sup\u00e9rieure. Vous pouvez v\u00e9rifier votre version de Python en ex\u00e9cutant la commande python --version dans votre terminal. Le gestionnaire de paquets pip est \u00e9galement requis pour installer facilement LangServe et ses d\u00e9pendances. Pip est g\u00e9n\u00e9ralement install\u00e9 par d\u00e9faut avec les versions r\u00e9centes de Python. Pour vous en assurer, ex\u00e9cutez pip --version. Si pip n&rsquo;est pas pr\u00e9sent, r\u00e9f\u00e9rez-vous \u00e0 la documentation officielle Python pour les instructions d&rsquo;installation sp\u00e9cifiques \u00e0 votre syst\u00e8me d&rsquo;exploitation. Une connaissance de base du framework LangChain est fortement recommand\u00e9e pour tirer pleinement parti de LangServe. Vous devriez \u00eatre \u00e0 l&rsquo;aise avec les concepts cl\u00e9s tels que les agents, les cha\u00eenes, les mod\u00e8les de langage et les prompts. Si vous d\u00e9butez avec LangChain, il est conseill\u00e9 de vous familiariser avec la documentation officielle et de parcourir quelques exemples avant de passer \u00e0 LangServe. De m\u00eame, une compr\u00e9hension des principes de base de FastAPI, le framework web sur lequel s&rsquo;appuie LangServe, sera utile pour personnaliser et d\u00e9boguer vos applications si n\u00e9cessaire. FastAPI \u00e9tant un framework tr\u00e8s populaire et bien document\u00e9, vous trouverez facilement de nombreuses ressources en ligne pour vous aider \u00e0 prendre en main ses concepts fondamentaux, tels que le routing, les d\u00e9pendances et la gestion des requ\u00eates et des r\u00e9ponses. Enfin, bien que cela ne soit pas strictement n\u00e9cessaire pour commencer, avoir des notions sur les API REST, les sch\u00e9mas JSON et la documentation OpenAPI vous permettra de comprendre plus en profondeur le fonctionnement interne de LangServe et d&rsquo;exploiter au mieux ses capacit\u00e9s de g\u00e9n\u00e9ration automatique. En r\u00e9sum\u00e9, assurez-vous d&rsquo;avoir : Une fois ces pr\u00e9requis valid\u00e9s, vous serez pr\u00eat \u00e0 installer LangServe et \u00e0 cr\u00e9er votre premi\u00e8re application ! Installation de LangServe L&rsquo;installation de LangServe s&rsquo;effectue tr\u00e8s simplement \u00e0 l&rsquo;aide du gestionnaire de paquets pip. Avant de proc\u00e9der \u00e0 l&rsquo;installation, il est recommand\u00e9 de cr\u00e9er et d&rsquo;activer un nouvel environnement virtuel Python, afin d&rsquo;\u00e9viter tout conflit avec les paquets syst\u00e8mes ou d&rsquo;autres projets. Vous pouvez utiliser venv, conda ou tout autre outil de gestion d&rsquo;environnements virtuels de votre choix. Une fois votre environnement virtuel activ\u00e9, ex\u00e9cutez la commande suivante dans votre terminal pour installer LangServe avec toutes ses d\u00e9pendances : Cette commande installera \u00e0 la fois les composants serveur et client de LangServe, ainsi que les d\u00e9pendances n\u00e9cessaires telles que FastAPI, Uvicorn (un serveur ASGI rapide) et Pydantic (pour la validation des donn\u00e9es). Pip t\u00e9l\u00e9chargera et installera tous les paquets requis dans votre environnement virtuel. Une fois l&rsquo;installation termin\u00e9e, vous pourrez importer et utiliser LangServe dans votre code Python. Il est important de noter que LangServe n\u00e9cessite \u00e9galement une version r\u00e9cente du framework LangChain pour fonctionner correctement. Si vous n&rsquo;avez pas encore install\u00e9 LangChain, pip s&rsquo;en chargera automatiquement lors de l&rsquo;installation de LangServe. Cependant, si vous disposez d\u00e9j\u00e0 d&rsquo;une installation de LangChain, assurez-vous qu&rsquo;elle est \u00e0 jour pour garantir une compatibilit\u00e9 optimale avec LangServe. Maintenant que LangServe est install\u00e9 dans votre environnement Python, vous \u00eates pr\u00eat \u00e0 cr\u00e9er votre premi\u00e8re application ! Dans la section suivante, nous verrons comment mettre en place un serveur FastAPI avec LangServe pour exposer des mod\u00e8les de langage sous forme d&rsquo;API.Premi\u00e8re application LangServe Pour d\u00e9couvrir le fonctionnement de base de LangServe, nous allons cr\u00e9er une application simple qui expose deux mod\u00e8les de chat, l&rsquo;un utilisant l&rsquo;API d&rsquo;OpenAI et l&rsquo;autre celle d&rsquo;Anthropic. Cette application permettra \u00e9galement d&rsquo;invoquer une cha\u00eene combinant un template de prompt et le mod\u00e8le d&rsquo;Anthropic pour g\u00e9n\u00e9rer des blagues sur un sujet donn\u00e9. Voici le code complet de notre application : D\u00e9cortiquons ce code \u00e9tape par \u00e9tape : Pour lancer l&rsquo;application, ex\u00e9cutez simplement le script Python. Uvicorn d\u00e9marrera alors le serveur, et vous pourrez acc\u00e9der \u00e0 votre API \u00e0 l&rsquo;adresse http:\/\/localhost:8000. Gr\u00e2ce \u00e0 la magie de LangServe et de FastAPI, une documentation OpenAPI compl\u00e8te est automatiquement g\u00e9n\u00e9r\u00e9e pour votre API. Vous pouvez y acc\u00e9der en naviguant vers http:\/\/localhost:8000\/docs dans votre navigateur web. Cette documentation interactive vous permet de visualiser tous les endpoints disponibles, leurs sch\u00e9mas d&rsquo;entr\u00e9e et de sortie, et m\u00eame de les tester directement depuis l&rsquo;interface web. Vous pouvez \u00e9galement acc\u00e9der au playground de LangServe pour chaque composant en ajoutant \/playground \u00e0 son chemin (par exemple, http:\/\/localhost:8000\/openai\/playground). Le playground fournit une interface utilisateur conviviale pour tester les diff\u00e9rentes fonctionnalit\u00e9s de votre API. Et voil\u00e0 ! Avec seulement quelques lignes de code, vous avez cr\u00e9\u00e9 une\" \/>\n<meta property=\"og:url\" content=\"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-10T15:31:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-11T08:40:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/beta.reboot-conseil.com\/wp-content\/uploads\/2024\/03\/henaff_illustrate_an_article_about_LangServe_de_la_prise_en_mai_2d0020d7-0053-4cf6-99d1-d5e6bcbd86e2.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"832\" \/>\n\t<meta property=\"og:image:height\" content=\"832\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Tristan Henaff\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tristan Henaff\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"24 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/\"},\"author\":{\"name\":\"Tristan Henaff\",\"@id\":\"https:\/\/beta.reboot-conseil.com\/#\/schema\/person\/67756e78c5d7a44f002b572a05d93768\"},\"headline\":\"LangServe &#8211; Prise en main et mise en prod\",\"datePublished\":\"2024-03-10T15:31:51+00:00\",\"dateModified\":\"2024-03-11T08:40:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/\"},\"wordCount\":4504,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/beta.reboot-conseil.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/beta.reboot-conseil.com\/wp-content\/uploads\/2024\/03\/henaff_illustrate_an_article_about_LangServe_de_la_prise_en_mai_2d0020d7-0053-4cf6-99d1-d5e6bcbd86e2.webp\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/\",\"url\":\"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/\",\"name\":\"LangServe - Prise en main et mise en prod -\",\"isPartOf\":{\"@id\":\"https:\/\/beta.reboot-conseil.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/beta.reboot-conseil.com\/wp-content\/uploads\/2024\/03\/henaff_illustrate_an_article_about_LangServe_de_la_prise_en_mai_2d0020d7-0053-4cf6-99d1-d5e6bcbd86e2.webp\",\"datePublished\":\"2024-03-10T15:31:51+00:00\",\"dateModified\":\"2024-03-11T08:40:24+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/#primaryimage\",\"url\":\"https:\/\/beta.reboot-conseil.com\/wp-content\/uploads\/2024\/03\/henaff_illustrate_an_article_about_LangServe_de_la_prise_en_mai_2d0020d7-0053-4cf6-99d1-d5e6bcbd86e2.webp\",\"contentUrl\":\"https:\/\/beta.reboot-conseil.com\/wp-content\/uploads\/2024\/03\/henaff_illustrate_an_article_about_LangServe_de_la_prise_en_mai_2d0020d7-0053-4cf6-99d1-d5e6bcbd86e2.webp\",\"width\":832,\"height\":832},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/beta.reboot-conseil.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"LangServe &#8211; Prise en main et mise en prod\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/beta.reboot-conseil.com\/#website\",\"url\":\"https:\/\/beta.reboot-conseil.com\/\",\"name\":\"AI Squad\",\"description\":\"Dans le doute, Reboot\",\"publisher\":{\"@id\":\"https:\/\/beta.reboot-conseil.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/beta.reboot-conseil.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/beta.reboot-conseil.com\/#organization\",\"name\":\"AI Squad By Reboot Conseil\",\"url\":\"https:\/\/beta.reboot-conseil.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/beta.reboot-conseil.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/beta.reboot-conseil.com\/wp-content\/uploads\/2023\/09\/cropped-cropped-Logo-IA-Squad-by-Reboot-Conseil-3.png\",\"contentUrl\":\"https:\/\/beta.reboot-conseil.com\/wp-content\/uploads\/2023\/09\/cropped-cropped-Logo-IA-Squad-by-Reboot-Conseil-3.png\",\"width\":500,\"height\":218,\"caption\":\"AI Squad By Reboot Conseil\"},\"image\":{\"@id\":\"https:\/\/beta.reboot-conseil.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/beta.reboot-conseil.com\/#\/schema\/person\/67756e78c5d7a44f002b572a05d93768\",\"name\":\"Tristan Henaff\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/beta.reboot-conseil.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6137bdbec26562b89ef3771d806fc766fcf69e8ffe596fcea78e9876fee51e35?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6137bdbec26562b89ef3771d806fc766fcf69e8ffe596fcea78e9876fee51e35?s=96&d=mm&r=g\",\"caption\":\"Tristan Henaff\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"LangServe - Prise en main et mise en prod -","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/","og_locale":"fr_FR","og_type":"article","og_title":"LangServe - Prise en main et mise en prod -","og_description":"LangServe est une biblioth\u00e8que open-source d\u00e9velopp\u00e9e pour simplifier consid\u00e9rablement le d\u00e9ploiement et la mise en production d&rsquo;applications construites avec le framework LangChain. Son objectif principal est de permettre aux d\u00e9veloppeurs d&rsquo;exposer rapidement et facilement leurs agents, cha\u00eenes et mod\u00e8les LangChain sous forme d&rsquo;API REST, rendant ainsi leur utilisation et leur int\u00e9gration dans d&rsquo;autres syst\u00e8mes beaucoup plus ais\u00e9es. Bas\u00e9e sur le framework web Python FastAPI, reconnu pour ses performances et sa facilit\u00e9 d&rsquo;utilisation, LangServe offre de nombreuses fonctionnalit\u00e9s cl\u00e9s pour acc\u00e9l\u00e9rer la mise en production. Elle g\u00e9n\u00e8re automatiquement une documentation OpenAPI compl\u00e8te et des sch\u00e9mas d&rsquo;input\/output pour chaque endpoint, permettant une compr\u00e9hension et une utilisation rapide de l&rsquo;API par les d\u00e9veloppeurs et les clients. En plus de la g\u00e9n\u00e9ration d&rsquo;API, LangServe inclut \u00e9galement un playground interactif tr\u00e8s pratique pour tester et d\u00e9bugger les diff\u00e9rents endpoints et cha\u00eenes, ainsi que des fonctionnalit\u00e9s de partage de configurations via des liens uniques. La biblioth\u00e8que fournit aussi un client Python pour appeler facilement les API d\u00e9ploy\u00e9es depuis d&rsquo;autres applications. Que vous soyez un data scientist cherchant \u00e0 rendre ses mod\u00e8les accessibles ou un d\u00e9veloppeur souhaitant int\u00e9grer des capacit\u00e9s de traitement du langage naturel dans ses applications, LangServe vous fera gagner un temps pr\u00e9cieux en vous permettant de passer en un clin d&rsquo;\u0153il de l&rsquo;exp\u00e9rimentation avec LangChain au d\u00e9ploiement en production dans le cloud (AWS, Azure, GCP, etc). Dans cet article, nous verrons comment prendre en main LangServe pour d\u00e9ployer vos premiers endpoints, comment utiliser le client et le playground, et surtout comment mettre en production vos applications LangChain en quelques lignes de code sur les principaux cloud providers du march\u00e9. Pr\u00e9requis Avant de vous lancer dans l&rsquo;utilisation de LangServe, assurez-vous de disposer d&rsquo;un environnement de d\u00e9veloppement Python fonctionnel sur votre machine. LangServe n\u00e9cessite une version de Python 3.7 ou sup\u00e9rieure. Vous pouvez v\u00e9rifier votre version de Python en ex\u00e9cutant la commande python --version dans votre terminal. Le gestionnaire de paquets pip est \u00e9galement requis pour installer facilement LangServe et ses d\u00e9pendances. Pip est g\u00e9n\u00e9ralement install\u00e9 par d\u00e9faut avec les versions r\u00e9centes de Python. Pour vous en assurer, ex\u00e9cutez pip --version. Si pip n&rsquo;est pas pr\u00e9sent, r\u00e9f\u00e9rez-vous \u00e0 la documentation officielle Python pour les instructions d&rsquo;installation sp\u00e9cifiques \u00e0 votre syst\u00e8me d&rsquo;exploitation. Une connaissance de base du framework LangChain est fortement recommand\u00e9e pour tirer pleinement parti de LangServe. Vous devriez \u00eatre \u00e0 l&rsquo;aise avec les concepts cl\u00e9s tels que les agents, les cha\u00eenes, les mod\u00e8les de langage et les prompts. Si vous d\u00e9butez avec LangChain, il est conseill\u00e9 de vous familiariser avec la documentation officielle et de parcourir quelques exemples avant de passer \u00e0 LangServe. De m\u00eame, une compr\u00e9hension des principes de base de FastAPI, le framework web sur lequel s&rsquo;appuie LangServe, sera utile pour personnaliser et d\u00e9boguer vos applications si n\u00e9cessaire. FastAPI \u00e9tant un framework tr\u00e8s populaire et bien document\u00e9, vous trouverez facilement de nombreuses ressources en ligne pour vous aider \u00e0 prendre en main ses concepts fondamentaux, tels que le routing, les d\u00e9pendances et la gestion des requ\u00eates et des r\u00e9ponses. Enfin, bien que cela ne soit pas strictement n\u00e9cessaire pour commencer, avoir des notions sur les API REST, les sch\u00e9mas JSON et la documentation OpenAPI vous permettra de comprendre plus en profondeur le fonctionnement interne de LangServe et d&rsquo;exploiter au mieux ses capacit\u00e9s de g\u00e9n\u00e9ration automatique. En r\u00e9sum\u00e9, assurez-vous d&rsquo;avoir : Une fois ces pr\u00e9requis valid\u00e9s, vous serez pr\u00eat \u00e0 installer LangServe et \u00e0 cr\u00e9er votre premi\u00e8re application ! Installation de LangServe L&rsquo;installation de LangServe s&rsquo;effectue tr\u00e8s simplement \u00e0 l&rsquo;aide du gestionnaire de paquets pip. Avant de proc\u00e9der \u00e0 l&rsquo;installation, il est recommand\u00e9 de cr\u00e9er et d&rsquo;activer un nouvel environnement virtuel Python, afin d&rsquo;\u00e9viter tout conflit avec les paquets syst\u00e8mes ou d&rsquo;autres projets. Vous pouvez utiliser venv, conda ou tout autre outil de gestion d&rsquo;environnements virtuels de votre choix. Une fois votre environnement virtuel activ\u00e9, ex\u00e9cutez la commande suivante dans votre terminal pour installer LangServe avec toutes ses d\u00e9pendances : Cette commande installera \u00e0 la fois les composants serveur et client de LangServe, ainsi que les d\u00e9pendances n\u00e9cessaires telles que FastAPI, Uvicorn (un serveur ASGI rapide) et Pydantic (pour la validation des donn\u00e9es). Pip t\u00e9l\u00e9chargera et installera tous les paquets requis dans votre environnement virtuel. Une fois l&rsquo;installation termin\u00e9e, vous pourrez importer et utiliser LangServe dans votre code Python. Il est important de noter que LangServe n\u00e9cessite \u00e9galement une version r\u00e9cente du framework LangChain pour fonctionner correctement. Si vous n&rsquo;avez pas encore install\u00e9 LangChain, pip s&rsquo;en chargera automatiquement lors de l&rsquo;installation de LangServe. Cependant, si vous disposez d\u00e9j\u00e0 d&rsquo;une installation de LangChain, assurez-vous qu&rsquo;elle est \u00e0 jour pour garantir une compatibilit\u00e9 optimale avec LangServe. Maintenant que LangServe est install\u00e9 dans votre environnement Python, vous \u00eates pr\u00eat \u00e0 cr\u00e9er votre premi\u00e8re application ! Dans la section suivante, nous verrons comment mettre en place un serveur FastAPI avec LangServe pour exposer des mod\u00e8les de langage sous forme d&rsquo;API.Premi\u00e8re application LangServe Pour d\u00e9couvrir le fonctionnement de base de LangServe, nous allons cr\u00e9er une application simple qui expose deux mod\u00e8les de chat, l&rsquo;un utilisant l&rsquo;API d&rsquo;OpenAI et l&rsquo;autre celle d&rsquo;Anthropic. Cette application permettra \u00e9galement d&rsquo;invoquer une cha\u00eene combinant un template de prompt et le mod\u00e8le d&rsquo;Anthropic pour g\u00e9n\u00e9rer des blagues sur un sujet donn\u00e9. Voici le code complet de notre application : D\u00e9cortiquons ce code \u00e9tape par \u00e9tape : Pour lancer l&rsquo;application, ex\u00e9cutez simplement le script Python. Uvicorn d\u00e9marrera alors le serveur, et vous pourrez acc\u00e9der \u00e0 votre API \u00e0 l&rsquo;adresse http:\/\/localhost:8000. Gr\u00e2ce \u00e0 la magie de LangServe et de FastAPI, une documentation OpenAPI compl\u00e8te est automatiquement g\u00e9n\u00e9r\u00e9e pour votre API. Vous pouvez y acc\u00e9der en naviguant vers http:\/\/localhost:8000\/docs dans votre navigateur web. Cette documentation interactive vous permet de visualiser tous les endpoints disponibles, leurs sch\u00e9mas d&rsquo;entr\u00e9e et de sortie, et m\u00eame de les tester directement depuis l&rsquo;interface web. Vous pouvez \u00e9galement acc\u00e9der au playground de LangServe pour chaque composant en ajoutant \/playground \u00e0 son chemin (par exemple, http:\/\/localhost:8000\/openai\/playground). Le playground fournit une interface utilisateur conviviale pour tester les diff\u00e9rentes fonctionnalit\u00e9s de votre API. Et voil\u00e0 ! Avec seulement quelques lignes de code, vous avez cr\u00e9\u00e9 une","og_url":"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/","article_published_time":"2024-03-10T15:31:51+00:00","article_modified_time":"2024-03-11T08:40:24+00:00","og_image":[{"width":832,"height":832,"url":"https:\/\/beta.reboot-conseil.com\/wp-content\/uploads\/2024\/03\/henaff_illustrate_an_article_about_LangServe_de_la_prise_en_mai_2d0020d7-0053-4cf6-99d1-d5e6bcbd86e2.webp","type":"image\/webp"}],"author":"Tristan Henaff","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"Tristan Henaff","Dur\u00e9e de lecture estim\u00e9e":"24 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/#article","isPartOf":{"@id":"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/"},"author":{"name":"Tristan Henaff","@id":"https:\/\/beta.reboot-conseil.com\/#\/schema\/person\/67756e78c5d7a44f002b572a05d93768"},"headline":"LangServe &#8211; Prise en main et mise en prod","datePublished":"2024-03-10T15:31:51+00:00","dateModified":"2024-03-11T08:40:24+00:00","mainEntityOfPage":{"@id":"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/"},"wordCount":4504,"commentCount":0,"publisher":{"@id":"https:\/\/beta.reboot-conseil.com\/#organization"},"image":{"@id":"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/#primaryimage"},"thumbnailUrl":"https:\/\/beta.reboot-conseil.com\/wp-content\/uploads\/2024\/03\/henaff_illustrate_an_article_about_LangServe_de_la_prise_en_mai_2d0020d7-0053-4cf6-99d1-d5e6bcbd86e2.webp","articleSection":["Uncategorized"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/","url":"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/","name":"LangServe - Prise en main et mise en prod -","isPartOf":{"@id":"https:\/\/beta.reboot-conseil.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/#primaryimage"},"image":{"@id":"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/#primaryimage"},"thumbnailUrl":"https:\/\/beta.reboot-conseil.com\/wp-content\/uploads\/2024\/03\/henaff_illustrate_an_article_about_LangServe_de_la_prise_en_mai_2d0020d7-0053-4cf6-99d1-d5e6bcbd86e2.webp","datePublished":"2024-03-10T15:31:51+00:00","dateModified":"2024-03-11T08:40:24+00:00","breadcrumb":{"@id":"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/#primaryimage","url":"https:\/\/beta.reboot-conseil.com\/wp-content\/uploads\/2024\/03\/henaff_illustrate_an_article_about_LangServe_de_la_prise_en_mai_2d0020d7-0053-4cf6-99d1-d5e6bcbd86e2.webp","contentUrl":"https:\/\/beta.reboot-conseil.com\/wp-content\/uploads\/2024\/03\/henaff_illustrate_an_article_about_LangServe_de_la_prise_en_mai_2d0020d7-0053-4cf6-99d1-d5e6bcbd86e2.webp","width":832,"height":832},{"@type":"BreadcrumbList","@id":"https:\/\/beta.reboot-conseil.com\/index.php\/2024\/03\/10\/langserve-prise-en-main-et-mise-en-prod\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/beta.reboot-conseil.com\/"},{"@type":"ListItem","position":2,"name":"LangServe &#8211; Prise en main et mise en prod"}]},{"@type":"WebSite","@id":"https:\/\/beta.reboot-conseil.com\/#website","url":"https:\/\/beta.reboot-conseil.com\/","name":"AI Squad","description":"Dans le doute, Reboot","publisher":{"@id":"https:\/\/beta.reboot-conseil.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/beta.reboot-conseil.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/beta.reboot-conseil.com\/#organization","name":"AI Squad By Reboot Conseil","url":"https:\/\/beta.reboot-conseil.com\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/beta.reboot-conseil.com\/#\/schema\/logo\/image\/","url":"https:\/\/beta.reboot-conseil.com\/wp-content\/uploads\/2023\/09\/cropped-cropped-Logo-IA-Squad-by-Reboot-Conseil-3.png","contentUrl":"https:\/\/beta.reboot-conseil.com\/wp-content\/uploads\/2023\/09\/cropped-cropped-Logo-IA-Squad-by-Reboot-Conseil-3.png","width":500,"height":218,"caption":"AI Squad By Reboot Conseil"},"image":{"@id":"https:\/\/beta.reboot-conseil.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/beta.reboot-conseil.com\/#\/schema\/person\/67756e78c5d7a44f002b572a05d93768","name":"Tristan Henaff","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/beta.reboot-conseil.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6137bdbec26562b89ef3771d806fc766fcf69e8ffe596fcea78e9876fee51e35?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6137bdbec26562b89ef3771d806fc766fcf69e8ffe596fcea78e9876fee51e35?s=96&d=mm&r=g","caption":"Tristan Henaff"}}]}},"_links":{"self":[{"href":"https:\/\/beta.reboot-conseil.com\/index.php\/wp-json\/wp\/v2\/posts\/917","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/beta.reboot-conseil.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/beta.reboot-conseil.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/beta.reboot-conseil.com\/index.php\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/beta.reboot-conseil.com\/index.php\/wp-json\/wp\/v2\/comments?post=917"}],"version-history":[{"count":4,"href":"https:\/\/beta.reboot-conseil.com\/index.php\/wp-json\/wp\/v2\/posts\/917\/revisions"}],"predecessor-version":[{"id":927,"href":"https:\/\/beta.reboot-conseil.com\/index.php\/wp-json\/wp\/v2\/posts\/917\/revisions\/927"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/beta.reboot-conseil.com\/index.php\/wp-json\/wp\/v2\/media\/925"}],"wp:attachment":[{"href":"https:\/\/beta.reboot-conseil.com\/index.php\/wp-json\/wp\/v2\/media?parent=917"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/beta.reboot-conseil.com\/index.php\/wp-json\/wp\/v2\/categories?post=917"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/beta.reboot-conseil.com\/index.php\/wp-json\/wp\/v2\/tags?post=917"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}