# Permettre aux agents d'accepter des paiements fondés sur l'usage # Guide de démarrage rapide pour les agents (Developer preview) Découvrez comment créer un chatbot basique et facturer son utilisation avec la trousse à outils de Stripe pour les agents. > Explorez ce SDK pour intégrer Stripe aux flux de travail d’agents. Le comportement des agents étant non déterministe, utilisez le SDK dans un *environnement de test* (A sandbox is an isolated test environment that allows you to test Stripe functionality in your account without affecting your live integration. Use sandboxes to safely experiment with new features and changes) et effectuez des évaluations pour analyser les performances de votre application. > > Pour des raisons de sécurité, nous vous recommandons vivement d’utiliser des [clés API restreintes](https://docs.stripe.com/keys.md#create-restricted-api-secret-key) (`rk_*`) afin de limiter l’accès de votre agent aux seules fonctionnalités nécessaires, notamment en mode production. La disponibilité des outils dépend des autorisations que vous configurez sur la clé restreinte. ### Installez la boîte à outils Stripe pour les agents Installez le package et importez-le dans votre code. #### npm Installez la bibliothèque : ```bash npm install --save @stripe/agent-toolkit ``` #### GitHub Vous pouvez également télécharger le code source de la bibliothèque `@stripe/agent-toolkit` directement [depuis GitHub](https://github.com/stripe/agent-toolkit). ### Créer un endpoint pour gérer la requête Ajoutez un endpoint sur votre serveur qui gère la nouvelle entrée de chat. ### Initialiser le kit d’outils Créez une nouvelle instance du `StripeAgentToolkit` à l’aide de votre clé API Stripe. La boîte à outils vous permet d’insérer un intergiciel de facturation et d’accéder aux fonctionnalités de Stripe. ### Fournir l’intergiciel au modèle À l’aide d’un intergiciel, vous pouvez signaler l’utilisation de tokens d’invite et d’achèvement à Stripe via l’API Meter.$$$ Avec la configuration `billing`, vous devez fournir un ID d’objet [Customer](https://docs.stripe.com/api/customers/object.md) et des objets [Meter Event](https://docs.stripe.com/api/billing/meter-event/object.md) d’entrée et de sortie. Découvrez comment [configurer la facturation à l’usage](https://docs.stripe.com/billing/subscriptions/usage-based/implementation-guide.md). ### Appeler le modèle Utilisez le SDK AI de Vercel pour appeler le modèle et renvoyer les résultats au client. Votre requête inclut le journal des messages existant et une invite système pour fournir des instructions initiales au modèle. ### Créer une interface de chat Utilisez Next.js et le SDK AI de Vercel pour créer une interface de chat de base pour appeler le back-end que vous avez créé. ### Configurez vos variables d’environnement Ajoutez vos clés publiques et secrètes à un fichier `.env`. Next.js la charge automatiquement dans votre application en tant que [variable d’environnement](https://nextjs.org/docs/basic-features/environment-variables). ### Exécuter l’application Démarrez votre application avec `npm run dev` et accédez à . ### Tests Pour tester cette fonctionnalité, envoyez un message au chat. ### Afficher l’utilisation dans le Dashboard Affichez vos dispositifs de mesure dans le [Dashboard Stripe](https://dashboard.stripe.com/meters) pour confirmer que les événements ont bien été envoyés. import { createStripeAgentToolkit } from '@stripe/agent-toolkit/ai-sdk'; // Initialize toolkit - use restricted key (rk_*) for better security. const toolkit = await createStripeAgentToolkit({ secretKey: process.env.STRIPE_SECRET_KEY!, configuration: {}, }); export async function POST(req: Request) { middleware: toolkit.middleware({ billing: { customer: process.env.STRIPE_CUSTOMER_ID!, meters: { input: process.env.STRIPE_METER_INPUT!, output: process.env.STRIPE_METER_OUTPUT!, }, }, }), }); // Call the model and stream back the results. const result = await streamText({ model: model, system: SYSTEM_PROMPT, messages: convertToCoreMessages(messages), }); import { createStripeAgentToolkit } from '@stripe/agent-toolkit/ai-sdk'; // Initialize toolkit - use restricted key (rk_*) for better security. const toolkit = await createStripeAgentToolkit({ secretKey: process.env.STRIPE_SECRET_KEY!, configuration: {}, }); export async function POST(req: Request) { middleware: toolkit.middleware({ billing: { customer: process.env.STRIPE_CUSTOMER_ID!, meters: { input: process.env.STRIPE_METER_INPUT!, output: process.env.STRIPE_METER_OUTPUT!, }, }, }), }); // Call the model and stream back the results. const result = await streamText({ model: model, system: SYSTEM_PROMPT, messages: convertToCoreMessages(messages), }); import { createStripeAgentToolkit } from '@stripe/agent-toolkit/ai-sdk'; // Initialize toolkit - use restricted key (rk_*) for better security. const toolkit = await createStripeAgentToolkit({ secretKey: process.env.STRIPE_SECRET_KEY!, configuration: {}, }); export async function POST(req: Request) { middleware: toolkit.middleware({ billing: { customer: process.env.STRIPE_CUSTOMER_ID!, meters: { input: process.env.STRIPE_METER_INPUT!, output: process.env.STRIPE_METER_OUTPUT!, }, }, }), }); // Call the model and stream back the results. const result = await streamText({ model: model, system: SYSTEM_PROMPT, messages: convertToCoreMessages(messages), }); import { createStripeAgentToolkit } from '@stripe/agent-toolkit/ai-sdk'; // Initialize toolkit - use restricted key (rk_*) for better security. const toolkit = await createStripeAgentToolkit({ secretKey: process.env.STRIPE_SECRET_KEY!, configuration: {}, }); export async function POST(req: Request) { middleware: toolkit.middleware({ billing: { customer: process.env.STRIPE_CUSTOMER_ID!, meters: { input: process.env.STRIPE_METER_INPUT!, output: process.env.STRIPE_METER_OUTPUT!, }, }, }), }); // Call the model and stream back the results. const result = await streamText({ model: model, system: SYSTEM_PROMPT, messages: convertToCoreMessages(messages), }); 'use client'; import { useChat } from 'ai/react'; export default function Chat() { const { input, isLoading, handleInputChange, handleSubmit, messages, } = useChat(); return (
{messages.map(m => (
{m.role === 'user' ? 'User: ' : 'Agent: '} {m.content}
))} {isLoading && (
Loading...
)}
); } \# https://dashboard.stripe.com/apikeys STRIPE_SECRET_KEY=<>