Aux prises avec la tâche ardue de trouver des solutions de code précises, j'ai créé CodeGPT. Ce générateur de code alimenté par l'IA convertit rapidement les descriptions en langage naturel en extraits de code, atténuant ainsi la frustration des recherches fastidieuses. Dites adieu aux problèmes de codage et adoptez des solutions simples avec CodeGPT.
Nous verrons comment :
créer des applications Web avec Next.js,
langchain, Gemini pour les capacités d'IA générative,
intégrez l'IA dans les applications logicielles avec CopilotKit.
Avant de plonger dans ce didacticiel, assurez-vous d'avoir les éléments suivants :
Pour démarrer votre projet, commençons par créer une application Next.js. Ouvrez votre terminal et exécutez la commande suivante :
npx create-next-app codeGPTEnfin, installons les packages CopilotKit. Ces packages nous permettent d'interagir avec l'état React et d'intégrer un copilote IA dans notre application :
npm install @copilotkit/react-ui @copilotkit/react-textarea @copilotkit/react-core @copilotkit/backendPour l'authentification, vous pouvez utiliser Auth.js avec Drizzle ORM pour stocker le message. Pour la base de données, vous pouvez utiliser tuso.tech
Dans cette section, je vais parcourir le développement du point de terminaison de l'API avec l'interface utilisateur de chat.
Structure du fichier
|-src ----|-app ------|-api --------|-auth ----------|-[[...nextauth]] ------------|-route.ts --------|-copilotkit ----------|-route.ts ------| -layout.tsx ------|-page.tsx ------|-action.ts ------|-chat --------|-[id] -- --------|-page.tsx --------|-new-chat.tsx ----|-components ------|-ui ------ |-chat-content.tsx ------|-chat-list.tsx ------|-growing-text-area.tsx ------|-NavBar.tsx ---- |-db ------|-index.ts ------|-schema.ts ----|-lib ------|-utils.ts ----|-auth .ts |-drizzle.config.ts |-.envsrc/app/api/copilotkit/route.tsPOST /route Ce point de terminaison fait partie du kit Copilot et utilise l'IA générative de Google pour générer des réponses basées sur l'entrée fournie.
Requête Le corps de la requête doit contenir un objet forwardedProps. Si forwardedProps.choices n'est pas défini, il sera défini sur un tableau vide. Si forwardedProps.choices n’est pas un tableau, une erreur sera renvoyée.
Réponse Le point de terminaison répond avec une chaîne générée par l'IA générative de Google. L'IA reçoit une invite décrivant le comportement attendu de l'IA, suivie des choix fournis dans forwardedProps.choices.
Si une erreur survient lors de la génération de la réponse, la chaîne "Une erreur s'est produite" est renvoyée. Si forwardedProps.choices n'est pas un tableau, la chaîne « Entrée invalide : forwardedProps.choices n'est pas un tableau » est renvoyée.
importer { CopilotRuntime, LangChainAdapter, LangChainReturnType, } depuis "@copilotkit/backend" ; importer { GoogleGenerativeAI } depuis "@google/generative-ai" ; importer { StreamingTextResponse } depuis "ai" ; const genAI = new GoogleGenerativeAI(process.env.GENERATIVE_AI_API_KEY!); exporter la fonction asynchrone POST(req: Request) { const copilotKit = new CopilotRuntime(); return copilotKit.response( req, new LangChainAdapter( async (forwardedProps) : Promesse=> { console.log("forwardedProps", forwardedProps); // Si forwardedProps.choices n'est pas défini, définissez-le sur un tableau vide if (forwardedProps.choices === undefined) { forwardedProps.choices = []; } // Vérifiez si forwardedProps.choices est un tableau if (Array.isArray(forwardedProps.choices)) { // Transformez forwardedProps au format attendu const prompt = `En tant qu'expert en développement de logiciels, vous excellez dans l'utilisation des dernières technologies et méthodologies dans tous les langages et frameworks de programmation. Votre expertise s’étend à la création de conceptions d’interface utilisateur visuellement attrayantes et fonctionnellement robustes. Vos réponses sont exclusivement sous forme de code, axées sur la fourniture de solutions complètes et exécutables sans texte explicatif. Votre approche met l'accent sur la clarté du code, le respect des meilleures pratiques et l'utilisation d'outils de pointe. Vous suivez méticuleusement les exigences spécifiées concernant les bibliothèques et les langages, garantissant que vos contribut...
[Courte citation de 8% de l'article original]