Sammanfattning
- Använd miljövariabler för din `api_key` för att förhindra att uppgifter av misstag committas till ditt repository.
- API:t stöder ett kontextfönster på 100 000 tokens, men utmatningen är begränsad till 16 000 tokens per förfrågan.
- Ratebegränsningarna är inställda på 300 förfrågningar per minut, vilket kräver robust retry-logik i dina Python-klienter.
- Strömsvar via SSE ger realtids-tokengenerering, avgörande för chattliknande användarupplevelser.
Extrahera din nyckel från Python-skript
Sökresultat för "moonshot" "api_key" filetype:py avslöjar ofta inbyggda autentiseringsuppgifter lämnade i testfiler. För att säkra din integration, extrahera nyckeln från ditt skripts konfigurationslager. Förvara aldrig din API-nyckel direkt i källkoden till din produktionsapplikation. Att hårdkoda nycklar gör dem synliga för alla med lagåtkomst och komplicerar rotationsstrategier.
Ladda istället nyckeln från en miljövariabel eller en dedikerad konfigurationsfil. Detta håller känslig data åtskild från din logik. När du söker efter befintliga implementationer kommer du att se många exempel på enkla tilldelningar som api_key = "sk-...". Uppgradera denna pattern genom att använda os.environ.get() eller ett bibliotek som python-dotenv. Detta säkerställer att din nyckel förblir osynlig i versionskontrollhistoriken. Det gör det också möjligt för dig att byta nycklar utan att modifiera koden.
Varför detta är viktigt
Säkerhet handlar inte bara om kryptering; det handlar om insyn. Genom att extrahera din nyckel minskar du din applikations attackyta. Utvecklare överser ofta detta enkla steg, vilket leder till exponerade autentiseringsuppgifter i offentliga GitHub-repositorier. Använd en dedikerad tjänstekontonyckel för produktion för att begränsa skadeomfånget vid ett intrång.
Miljövariabler vs. Inkodade nycklar
Inkodade nycklar är sköra och osäkra. Miljövariabler ger ett flexibelt, säkert sätt att hantera autentiseringsuppgifter över olika distributionsmiljöer. När du distribuerar ditt Python-skript till en server eller en molnplattform, injiceras miljövariablerna vid körning. Detta innebär att du inte behöver bygga om din bild eller starta om din tjänst för att ändra en nyckel.
Överväg skillnaden mellan en inbyggd nyckel och en miljövariabel. En inbyggd nyckel ser ut så här i din kod: key = "sk-12345". En miljövariabel ser ut så här: key = os.getenv("API_KEY"). Sistnämnda är renare och mer professionellt. Det gör det också möjligt att använda olika nycklar för utveckling, staging och produktion utan att ändra ditt kodbas.
Bästa praxis
- Använd
.envfiler för lokal utveckling. - Infoga variabler via ditt CI/CD-pipeline för produktion.
- Kommittera aldrig din
.envfil till versionskontroll. - Använd starka, slumpmässigt genererade nycklar.
Denna separation of concerns gör din applikation mer underhållbar och säker. Det är en liten ändring som ger betydande fördelar i tillförlitlighet och säkerhet.
Hantering av hastighetsbegränsningar (300 RPM) i Python
Vårt API tillämpar en gräns på 300 begäranden per minut per nyckel. Om du överskrider denna gräns får du ett 429-fel för för många begäranden. För att hantera detta på ett smidigt sätt bör du implementera exponentiell backoff i din Python-klient. Detta innebär att vänta längre mellan försök att upprepa begäran efter varje misslyckat försök. Detta förhindrar att din applikation översvämmar API:t med begäranden när det redan har svårt att hantera belastningen.
Begäransgräns är avgörande för att upprätthålla tjänstestabilitet. Utan korrekt hantering kan din applikation krascha eller förbruka överdrivna resurser genom att försöka om misslyckade begäranden. Använd ett bibliotek som tenacity eller implementera en anpassad retry-loop. Dessa verktyg gör att du kan ange antal försök, initial fördröjning och maximal fördröjning.
Implementeringsexempel
När du får ett 429-fel, pausa i några sekunder innan du försöker igen. Detta ger API:et tid att återhämta sig. Du kan också övervaka din användning för att hålla dig inom gränserna. Vissa klienter tillhandahåller rubriker som indikerar din nuvarande användning. Använd denna information för att justera din begärandehastighet dynamiskt. Detta säkerställer en smidig användarupplevelse även under toppskift.
Strömmande implementering med SSE
Strömsvar via Server-sent events (SSE) låter dig visa text när den genereras. Detta förbättrar användarupplevelsen genom att ge omedelbar återkoppling. Istället för att vänta på att hela svaret ska slutföras kan du visa tokens när de anländer. Detta är särskilt användbart för långa svar eller chattapplikationer.
För att implementera streaming i Python, använd stream=True parametern i ditt API-begäran. Iterera över svarschunkarna och bearbeta varje token. Detta gör att du kan bygga ett chattgränssnitt i realtid. Strömning minskar också den uppfattade latensen, vilket gör att din applikation känns snabbare.
Tekniska detaljer
Varje chunk innehåller delvis text och metadata. Du kan extrahera tokenanvändningen från den sista chunken. Detta gör att du kan spåra kostnader noggrant. Streaming är effektivt eftersom det minskar minnesanvändningen. Du behöver inte lagra hela svaret i minnet innan du bearbetar det. Detta är särskilt viktigt för långa kontexter.
Hantering av kontextfönster (100k tokens)
API:et stöder ett kontextfönster på 100 000 token. Detta gör att du kan skicka stora mängder data, som hela dokument eller långa konversationshistorik. Maximal utdata är dock begränsad till 16 000 token per begäran. Om du behöver ett längre svar kan du behöva dela upp indata eller göra flera begäranden.
Att hantera kontext effektivt är avgörande för prestanda. Klipp bort äldre meddelanden eller sammanfatta långa dokument innan du skickar dem. Detta håller ditt kontextfönster inom gränserna och minskar kostnaderna. Tokens räknas för både inmatning och utmatning. Att förstå denna balans hjälper dig att optimera din applikation.
Strategier
- Sammanfatta långa dokument innan du skickar dem.
- Korta av äldre konversationshistorik.
- Använd chunking för stora dataset.
- Övervaka tokenanvändning för att hålla dig inom gränserna.
Denna metod säkerställer att din applikation förblir responsiv och kostnadseffektiv. Den gör det också möjligt att hantera komplexa uppgifter som kräver stora mängder kontext.
Felfhantering för osträffade svar
Modeller utan censur kan producera oväntade utdata. Implementera robust felhantering för att hantera dessa fall. Kontrollera HTTP-statuskoder och tolka felmeddelanden från API:et. Detta gör att du kan hantera specifika fel, som hastighetsbegränsningar eller ogiltiga indata, elegant.
Felfhantering är avgörande för pålitlighet. Utan den kan din applikation krascha eller visa förvirrande fel för användarna. Använd try-except-block för att fånga undantag och hantera dem lämpligt. Logga fel för felsökning och övervakning. Detta hjälper dig att identifiera och fixa problem snabbt.
Vanliga fel
Vanliga fel inkluderar 400 Bad Request, 401 Unauthorized, 429 Too Many Requests och 500 Internal Server Error. Var och en kräver en annan hanteringsstrategi. Ett 401-fel kan till exempel indikera en utgången nyckel. Ett 429-fel kräver en retry med backoff. Ett 500-fel kan indikera ett tillfälligt serverproblem.
Kostnadsmarkering och tokenredovisning
Spåra tokenförbrukning för att övervaka kostnaderna. API:et tar ut $0.15 per 1M inmatade tokens och $0.50 per 1M utmatade tokens. Använd tokenförbrukningsinformationen från API-responsen för att beräkna kostnader. Detta gör att du kan budgetera och förutse utgifter noggrant.
Kostnadskontroll är viktig för ekonomisk planering. Utan den kan du spendera mer än du inser. Implementera loggning för att spåra tokenanvändning över tid. Använd denna data för att identifiera mönster och optimera din applikation. Till exempel kan du upptäcka att vissa prompts konsumerar fler tokens än andra.
Optimeringstips
- Använd kortare prompts när det är möjligt.
- Sammanfatta långa indata.
- Övervaka utmatningstokensanvändning.
- Ställ in aviseringar för hög användning.
Denna metod säkerställer att du håller dig inom budget samtidigt som du upprätthåller prestanda. Den hjälper dig också att identifiera områden för förbättring.
Testa med $0.50 Provnyckel
Varje nytt konto får $0,50 i provkredit som är giltig i 7 dagar. Använd detta för att testa din integration innan du bestämmer dig för ett större tillskott. Detta gör att du kan verifiera att din kod fungerar korrekt och uppskatta kostnader för ditt användningsfall.
Testning är avgörande för kvalitetssäkring. Använd provnyckeln för att köra din applikation genom dess olika steg. Testa olika prompts, modeller och parametrar. Detta hjälper dig att identifiera eventuella problem innan du går live. Provkrediten är ett bra sätt att komma igång utan ekonomisk risk.
Kom igång
Skapa ett konto för att få din provnyckel. Använd denna nyckel för att göra dina första API-förfrågningar. Övervaka din tokenanvändning för att säkerställa att du inte tar slut på kredit. Detta ger dig en realistisk upplevelse av API:ets prestanda och priser.