<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>FastAPI on Antoine Boucher</title><link>https://antoineboucher.info/CV/blog/fr/tags/fastapi/</link><description>Recent content in FastAPI on Antoine Boucher</description><generator>Hugo</generator><language>fr</language><lastBuildDate>Sat, 01 Jun 2024 10:00:00 -0400</lastBuildDate><atom:link href="https://antoineboucher.info/CV/blog/fr/tags/fastapi/index.xml" rel="self" type="application/rss+xml"/><item><title>Plugin ChatGPT avec FastAPI — plan d’implémentation</title><link>https://antoineboucher.info/CV/blog/fr/posts/fastapi-chatgpt-plugin-overview/</link><pubDate>Sat, 01 Jun 2024 10:00:00 -0400</pubDate><guid>https://antoineboucher.info/CV/blog/fr/posts/fastapi-chatgpt-plugin-overview/</guid><description>&lt;p&gt;Les &lt;strong&gt;plugins&lt;/strong&gt; de style OpenAI exposent une API HTTP décrite par un document &lt;strong&gt;OpenAPI&lt;/strong&gt; pour que ChatGPT puisse appeler vos outils de façon contrôlée. &lt;strong&gt;FastAPI&lt;/strong&gt; génère OpenAPI automatiquement, ce qui colle bien à ce modèle.&lt;/p&gt;
&lt;h2 id="1-définir-lapi-dans-fastapi"&gt;1. Définir l’API dans FastAPI&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Les routes renvoient du &lt;strong&gt;JSON&lt;/strong&gt; avec des formes stables (éviter le texte libre ambigu quand la structure compte).&lt;/li&gt;
&lt;li&gt;Ajoutez &lt;strong&gt;résumés et descriptions&lt;/strong&gt; sur les chemins et les champs — ça aide le modèle à choisir le bon outil.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-publier-openapijson"&gt;2. Publier &lt;code&gt;openapi.json&lt;/code&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;FastAPI sert &lt;strong&gt;&lt;code&gt;/openapi.json&lt;/code&gt;&lt;/strong&gt; par défaut ; le manifeste du plugin pointe vers cette URL (ou une copie statique versionnée).&lt;/li&gt;
&lt;li&gt;Gardez les schémas &lt;strong&gt;stricts&lt;/strong&gt; : énumérations, champs obligatoires et exemples réduisent les mauvais appels.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-manifeste-du-plugin"&gt;3. Manifeste du plugin&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Hébergez &lt;strong&gt;&lt;code&gt;ai-plugin.json&lt;/code&gt;&lt;/strong&gt; (ou le format exigé par la doc développeur OpenAI actuelle) en &lt;strong&gt;HTTPS&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Le manifeste référence l’URL de base de l’API et l’emplacement d’OpenAPI.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="4-authentification"&gt;4. Authentification&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Préférez &lt;strong&gt;OAuth&lt;/strong&gt; ou &lt;strong&gt;clés API&lt;/strong&gt; comme documenté pour votre intégration ; ne commitez jamais de secrets.&lt;/li&gt;
&lt;li&gt;Validez les jetons dans les dépendances ou le middleware FastAPI.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="5-déploiement"&gt;5. Déploiement&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Point de terminaison &lt;strong&gt;HTTPS&lt;/strong&gt; joignable depuis les serveurs OpenAI.&lt;/li&gt;
&lt;li&gt;Journalisation et &lt;strong&gt;idempotence&lt;/strong&gt; pour les routes à effets de bord.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="6-tests-manuels"&gt;6. Tests manuels&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Appelez les routes avec &lt;code&gt;curl&lt;/code&gt; ou HTTPie en utilisant les mêmes charges que le modèle enverra.&lt;/li&gt;
&lt;li&gt;Itérez sur les descriptions et contraintes avant d’ouvrir le trafic.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Les détails évoluent avec les mises à jour de la plateforme OpenAI — suivez toujours la doc la plus récente sur &lt;strong&gt;plugins / tools / actions&lt;/strong&gt; pour la prod.&lt;/p&gt;</description></item></channel></rss>