# Ermöglichen Sie Agenten, nutzungsbasierte Zahlungen zu akzeptieren # Agent-Schnellstart (Entwicklervorschau) Erfahren Sie, wie Sie mit dem Stripe Agent Toolkit einen einfachen Chatbot erstellen und die Nutzung in Rechnung stellen können. > Nutzen Sie dieses SDK, um Stripe in agentenbasierte Workflows zu integrieren. Da das Verhalten von Agenten nicht deterministisch ist, verwenden Sie das SDK in einer *Sandbox* (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) und führen Sie Auswertungen durch, um die Leistung Ihrer Anwendung zu bewerten. > > Aus Sicherheitsgründen empfehlen wir dringend die Verwendung [eingeschränkter API-Schlüssel](https://docs.stripe.com/keys.md#create-restricted-api-secret-key) (`rk_*`), um den Zugriff Ihres Agenten auf die erforderlichen Funktionen einzuschränken, insbesondere im Live-Modus. Die Verfügbarkeit des Tools hängt von den Berechtigungen ab, die Sie für den eingeschränkten Schlüssel konfigurieren. ### Stripe-Agent-Toolkit installieren Installieren Sie das Paket und importieren Sie es in Ihren Code. #### npm Installieren Sie die Bibliothek: ```bash npm install --save @stripe/agent-toolkit ``` #### GitHub Oder laden Sie den Quellcode der `@stripe/agent-toolkit`-Bibliothek direkt von [GitHub](https://github.com/stripe/agent-toolkit) herunter. ### Endpoint erstellen, um die Anfrage zu verarbeiten Fügen Sie einen Endpoint auf Ihrem Server hinzu, der die neue Chat-Eingabe verarbeitet. ### Toolkit initialisieren Erstellen Sie mit Ihrem Stripe-API-Schlüssel eine neue Instanz des `StripeAgentToolkit`. Mit dem Toolkit können Sie Middleware für die Abrechnung einfügen und auch auf Stripe-Funktionen zugreifen. ### Middleware für das Modell bereitstellen Mit Middleware können Sie die Nutzung der Eingabeaufforderung und des Abschluss-Tokens über die Meter API an Stripe melden. Die `billing`-Konfiguration erfordert, dass Sie eine [Kunden](https://docs.stripe.com/api/customers/object.md)-ID und [Zählerereignisse](https://docs.stripe.com/api/billing/meter-event/object.md) ein- und ausgeben. Erfahren Sie, wie Sie die [nutzungsbasierte Abrechnung einrichten](https://docs.stripe.com/billing/subscriptions/usage-based/implementation-guide.md). ### Modell aufrufen Verwenden Sie das AI SDK von Vercel, um das Modell aufzurufen und Ergebnisse an den Client zurückzustreamen. Ihre Anforderung enthält das vorhandene Meldungsprotokoll und eine Systemaufforderung, um erste Anweisungen für das Modell bereitzustellen. ### Chat-Schnittstelle erstellen Verwenden Sie Next.js und das KI-SDK von Vercel, um eine einfache Chat-Schnittstelle zum Aufrufen in das von Ihnen erstellte Backend zu erstellen. ### Umgebungsvariablen festlegen Fügen Sie Ihre veröffentlichbaren und Geheimschlüssel zu einer `.env`-Datei hinzu. Next.js lädt sie automatisch als [Umgebungsvariablen](https://nextjs.org/docs/basic-features/environment-variables) in ihre Anwendung. ### Anwendung ausführen Starten Sie Ihre Anwendung mit `npm run dev` und gehen Sie zu . ### Testen Senden Sie eine Nachricht an den Chat, um diese Funktionalität zu testen. ### Nutzung im Dashboard anzeigen Zeigen Sie Ihre Zähler im [Stripe Dashboard](https://dashboard.stripe.com/meters) an, um zu bestätigen, dass Ereignisse erfolgreich gesendet wurden. 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=<>