Om du vill bygga AI på AWS kan Bedrock vara värt att överväga. Det är fullspäckat med smarta funktioner som fungerar smidigt med resten av AWS-ekosystemet och sparar tid, minskar risker och arbetsinsats.
Juri Ahokas
Head of Partner Business Lead
Juri hat über 20 Jahre Erfahrung in den Bereichen SysOps, DevOps und Produktentwicklung. Er ist ein AWS-zertifizierter Lösungsarchitekt, der davon überzeugt ist, dass die besten Lösungen aus dem Verständnis der Bedürfnisse des Kunden entstehen.
I det här blogginlägget går jag igenom grunderna för att hjälpa dig komma igång, bland annat:
Vad det gör.
Hur det fungerar tillsammans med andra AWS-verktyg.
De viktigaste koncepten och funktionerna som det bygger på och använder.
Hur du använder API:et.
Hur prissättningen fungerar.
En snabb tillbakablick på föregående blogginlägg i serien
I mitt första blogginlägg i serien om att bygga AI med AWS-tjänster utforskade jag viktiga misstag att undvika när du bygger AI-lösningar på AWS. Mina viktigaste rekommendationer för att lyckas driftsätta AI-lösningar var:
Definiera en tydlig AI-strategi.
Implementera en heltäckande plan för datahantering.
Optimera kostnaderna effektivt.
Fokusera på mätvärden som är kopplade till nyttan med AI.
Jag definierade också kort tre olika lager i AWS främsta AI-tjänster: Amazon Q, AWS Bedrock och AWS Sagemaker. Även om vi fokuserar på AWS Bedrock i det här blogginlägget kan det vara väl värt att återvända till det tidigare inlägget för att fräscha upp kunskaperna om de andra två verktygen, som fungerar tillsammans.
Vad AWS Bedrock gör
AWS Bedrock ger dig byggstenarna för att skapa fantastiska AI-verktyg. Du får automatiskt tillgång till ett brett utbud av AI-modeller – vissa för språk och andra för bilder och grafik. Det är en stor fördel eftersom du inte är låst till en enda modell, utan kan välja den som passar dina behov och din budget bäst.
Bedrock används främst via API:er, men har också ett praktiskt sandbox-GUI som hjälper dig att komma igång. Senare tittar vi närmare på de koncept och funktioner som gör detta möjligt, inklusive Bedrock Studio. Där kan utvecklare och dataanalytiker enklare visualisera, testa och justera AI-applikationer utan att behöva gå direkt in i koden eller API:erna.
Så sticker AWS Bedrock ut i AWS AI-landskap
När det gäller AWS AI-tjänster är en del av tanken bakom Bedrock att det inte finns någon modell som passar allt.
Som utvecklare får du, i stället för att vara begränsad till en enda modell, tillgång till ett brett utbud av grundmodeller genom Bedrocks API-first-strategi. Det ger dig flexibiliteten att möta olika behov.
Du kan hitta den perfekta och mest effektiva lösningen för ditt användningsfall utan att behöva hantera servrar, eftersom Bedrock är serverless. AWS har dessutom precis släppt en förhandsversion av en ny Bedrock-funktion som låter dig importera modeller till Bedrock.
De viktigaste koncepten du behöver behärska för att arbeta med Bedrock
Grundmodeller (FMs)
Bedrock har en stor samling förtränade grundmodeller (FMs) för olika uppgifter inom naturlig språkbehandling (NLP) och maskininlärning (ML). Modellerna omfattar stora språkmodeller (LLMs) och multimodala modeller – alla utformade för olika tillämpningar.
Dessa FMs kan utföra en mängd olika uppgifter, till exempel:
Skriva blogginlägg.
Sammanfatta dokument.
Lösa resonemangsproblem.
Chatta.
Besvara frågor.
Och till och med komponera musik och poesi.
Vissa LLM-modeller, som Llama 3 från Meta och Titan Text G1 från AWS, är specialiserade på textbaserade uppgifter. De kan förstå och generera människoliknande text, vilket gör dem lämpliga för språköversättning, textsammanfattning och innehållsgenerering. FM-”familjerna” har ofta olika versioner som är optimerade för specifika uppgifter, som sammanfattning, chatt eller snabba svar.
Multimodala modeller, som Claude 3.5 från Anthropic, hanterar flera typer av indata, till exempel text, bilder och ljud. Det innebär att de kan hantera uppgifter som omfattar flera datatyper samtidigt.
Eftersom FM:erna i Bedrock skiljer sig så mycket åt kan du som utvecklare välja den modell som passar bäst för ditt specifika användningsfall, oavsett om det är helt textbaserat eller kräver multimodala funktioner.
Du kan använda FM:er i en mängd olika tillämpningar, från chattbottar och virtuella assistenter till innehållsskapande och dataanalys, utan att behöva träna komplexa modeller från grunden eller vara låst till en enda modellfamilj. Du kan fokusera på huvuduppgiften och välja den bästa modellen för den.
Retrieval Augmented Generation (RAG)
Föreställ dig att du har valt den bästa modellen att gå vidare med, men nu behöver du en modell som kan besvara mycket specifika frågor kopplade till din bransch eller ditt företag.
Det är här RAG kommer till undsättning. Så här fungerar det:
Själva modellen innehåller allmän kunskap och förmågor för att kunna föra människoliknande samtal med sammanhängande meningar.
RAG lägger till specifik information ovanpå den kunskapen baserat på ytterligare data som du tillhandahåller.
För en djupare genomgång av RAG rekommenderar jag min kollegas utmärkta blogginlägg: Överväganden för RAG-system inom produkt- och tjänsteutveckling.
I Bedrock finns RAG-funktionerna i kunskapsbaser. ”RAGging” berikar sedan modellens svar genom att hämta relevant information från dessa kunskapsbaser.
En kunskapsbas kan användas inte bara för att besvara användarfrågor och analysera dokument, utan även för att utöka prompts som ges till foundation models genom att lägga till kontext. Svaren innehåller källhänvisningar så att användarna kan kontrollera informationen och dess korrekthet.
För att använda kunskapsbasen behöver du förbehandla dina data så att de kan användas med frågor. Processen innebär att dela upp data i segment, som sedan bearbetas, indexeras och hämtas vid frågor, samt att skapa embeddings med den modell du har valt.
Du behöver testa olika strategier för segmentering för att få bästa möjliga prestanda från dina kunskapsbaser. Segmentering är avgörande. Den skapar inte bara mer exakta semantiska kopplingar och bättre svar, utan påverkar även den övergripande prestandan och kostnaderna positivt.
Embedding
Embedding innebär att dina data – ord, bilder eller andra indata – först omvandlas till numeriska vektorer utifrån sina semantiska relationer och sedan lagras i en vektordatabas.
Databasen hjälper AI-modellen att förstå relationer mellan ord och förbättra uppgifter som användaren ger den, till exempel:
Textklassificering.
Sammanfattning.
Översättning.
Sentimentanalys.
I praktiken omvandlar embeddings komplexa data till ett format som kan användas för att fatta mer välgrundade beslut.
Metadata för kunskapsbasen
Vill du kunna filtrera data vid en sökning i en kunskapsbas? Använd då en separat metadatafil som innehåller attribut för den angivna datafilen i kunskapsbasen. Filen måste finnas i samma S3-bucket som datafilen och ha samma namn som den tillhörande filen, men med filändelsen .metadata.json.
Säkerhet och skyddsräcken
Precis som alltid med AWS använder Bedrock en modell med delat ansvar, och företaget har täckt grunderna när det gäller hårdvara samt kryptering av data under överföring och lagring.
Kunddata delas inte med modellleverantörer och används inte för att förbättra basmodellerna.
Som väntat uppfyller Bedrock även alla vanliga compliance-standarder, som ISO, HIPAA och GDPR.
För att underlätta styrning och revision erbjuder Bedrock även omfattande funktioner för övervakning och loggning.
Använd Amazon CloudWatch för att följa användningsmått och skapa anpassade dashboards för revisionsändamål.
AWS CloudTrail spårar all API-aktivitet och hjälper till att felsöka problem vid behov.
Det går också att lagra metadata, förfrågningar och svar i S3-bucketen och Amazon CloudWatch Logs (och det rekommenderas).
Skyddsräcken
Utöver Bedrocks compliance och säkra standardkonfiguration finns funktionen Guardrails, där du kan sätta vissa gränser för att instruera AI:n att endast ge säkra och ansvarsfulla svar. Detta tillämpas på både indata och utdata. Just nu finns det fyra olika kategorier av skyddsräcken, som du kan kombinera fritt:
Innehållsfilter
Justera filternivåerna för att förhindra inmatningsprompter eller modellsvar som innehåller skadligt innehåll.
Otillåtna ämnen
Ange en lista över ämnen som inte är acceptabla för din applikation. Dessa ämnen blockeras om de förekommer i användarfrågor eller modellsvar. Du kan välja upp till 30 ämnen per skyddsräcke.
Ordfilter
Konfigurera filter för att blockera oönskade ord, fraser och svordomar, inklusive kränkande termer och konkurrentnamn. Det enklaste sättet att använda filtret är att sammanställa orden eller fraserna i en fil och sedan ladda upp den till skyddsräcket.
Filter för känslig information
Blockera eller maskera känslig information, till exempel personligt identifierbar information (PII), eller andra mönster som du vill utesluta från användarinmatningar och modellsvar. Dessa instruktioner anges som regex-mönster.
Du kan också konfigurera skyddsräcken så att meddelanden returneras till användaren om inmatningen eller ett modellsvar bryter mot de definierade principerna för skyddsräcken.
Du kan skapa flera versioner av ditt skyddsräcke. När du börjar får du automatiskt ett arbetsutkast som du kan ändra stegvis. Du kan experimentera med olika konfigurationer och använda det inbyggda testfönstret för att avgöra om de passar ditt användningsfall.
När du är nöjd med en definierad uppsättning konfigurationer kan du färdigställa en version av skyddsräcket och driftsätta den med foundation models som stöds.
Du kan tillämpa skyddsräcken direkt på FMs under anropet till inference API genom att ange skyddsräckets ID och version. När ett skyddsräcke används utvärderar det sedan inmatningsprompterna och FM-kompletteringarna mot de fastställda policyerna.
En viktig sak att tänka på:
Innan du går i produktion med din Bedrock-implementering måste du testa dessa skyddsräcken noggrant. Skyddsräcken har till exempel för närvarande bara stöd för engelska. Du kan behöva testa och finjustera konfigurationerna för skyddsräckena, eller utvärdera andra sätt att validera svar innan de når slutanvändarens skärm.
Så använder du Bedrock API
Det finns två sätt att använda Bedrock API:
Låt oss kort titta på båda.
Använda AWS CLI
Först måste du konfigurera autentiseringsuppgifterna. Så här gör du.
När autentiseringsuppgifterna är på plats kan du komma åt Bedrock-operationerna från kommandoraden.
Använd “aws bedrock help” för att se alla tillgängliga kommandon.
Använd “aws bedrock list-foundation-models --profile YOUR-PROFILE-NAME” för att lista alla tillgängliga modeller.
Ett exempel på hur du använder AWS CLI
I skrivande stund har Anthropic precis släppt den senaste versionen av Claude 3.5-modellen, så vi använder den i vårt exempel. Och eftersom fotbolls-EM UEFA Euro 2024 pågår just nu, låt oss ha lite kul och fråga Claude 3.5 vilket land den tror har störst chans att vinna turneringen.
aws bedrock-runtime converse \--model-id anthropic.claude-3-5-sonnet-20240620-v1:0 \--messages '{"role": "user", "content": [{"text": "Based on historical data and success in big tournaments what countries are the top-3 favorites to win Euro2024 Football championship?"}]}' \--region us-east-1 \--query output.message.content \--profile YOUR-PROFILE-NAME
Svar:
[
{
"text": "Baserat på historiska data, aktuella prestationer och framgångar i stora turneringar är de tre främsta favoriterna att vinna Euro 2024 troligen:\n\n1. Frankrike: Som nuvarande tvåa i VM (2022) och deltagare i åttondelsfinalen i Euro 2020 (som spelades 2021) har Frankrike konsekvent varit ett av de starkaste lagen inom internationell fotboll. De vann VM 2018 och har en bred talangbas.\n\n2. England: Som finalister i Euro 2020 och semifinalister i VM 2018 har England visat tydliga förbättringar de senaste åren. De har en ung, talangfull trupp och har presterat väl i stora turneringar.\n\n3. Tyskland: Trots några besvikelser i de senaste turneringarna är Tyskland alltid en stark utmanare, särskilt när de spelar på hemmaplan. Euro 2024 hålls i Tyskland, vilket kan ge dem en fördel. De har en historia av framgångar i stora turneringar och är kända för sin förmåga att prestera väl i viktiga tävlingar.\n\nDet är värt att notera att andra starka utmanare kan vara Spanien, Italien, Belgien och Portugal. De faktiska favoriterna kan dock förändras beroende på lagens prestationer, skador och andra faktorer närmare turneringen."
}
]
Så … grattis, Tyskland, antar jag!
Använda AWS SDK
Härnäst använder vi ett kort kodexempel som har skapats med AWS SDK for Python (Boto3). (Jag rekommenderar att använda venv för att hålla ordning på systemet.)
Ett exempel på hur du använder AWS SDK
I det här exemplet vill jag analysera diagrammet nedan över den totala energiförbrukningen och koldioxidutsläppen i Finland 1990–2020.
Kod:
import boto3from botocore.exceptions import ClientErrorMODEL_ID = "anthropic.claude-3-5-sonnet-20240620-v1:0" #Note: exact model ID and available regions do change over timeIMAGE_NAME = "energy_FI.png"profile_name = "YOUR-PROFILE-NAME" # Add this line to define the profile_name variableif profile_name: session = boto3.Session(profile_name=profile_name) bedrock_runtime = session.client('bedrock-runtime', region_name="us-east-1")else: bedrock_runtime = boto3.client('bedrock-runtime', region_name="us-east-1")with open(IMAGE_NAME, "rb") as f: image = f.read()user_message = "Analyze this picture and explain what is happening, when and why? Think step by step and explain trends and events which explain changes in the graph. Output in JSON."
messages = [ { "role": "user", "content": [ {"image": {"format": "png", "source": {"bytes": image}}}, {"text": user_message}, ], }]response = bedrock_runtime.converse( modelId=MODEL_ID, messages=messages,)response_text = response["output"]["message"]["content"][0]["text"]print(response_text)
Svar:
{ "analysis": { "type_of_graph": "Staplat stapeldiagram med ett överlagrat linjediagram", "time_period": "1990 till 2020", "main_metrics": [ "Energikällor (TJ)", "Koldioxidutsläpp (milj. ton CO2)" ], "energy_sources": [ "Fossiliset (Fossila bränslen)", "Turve (Torv)", "Uusiutuvat (Förnybara energikällor)", "Ydinenergia (Kärnkraft)", "Muut (Övriga)" ], "trends": [ { "trend": "Minskad användning av fossila bränslen", "description": "Den blå stapeln som representerar fossila bränslen visar en generell nedgång, särskilt tydlig från 2010 och framåt.", "possible_reason": "Ökat fokus på att minska koldioxidutsläppen och övergå till renare energikällor." }, { "trend": "Ökad användning av förnybar energi", "description": "Den ljusblå stapeln för förnybar energi visar en stadig ökning under hela perioden.", "possible_reason": "Statliga satsningar på förnybar energi, tekniska framsteg och ökad miljömedvetenhet." }, { "trend": "Varierande användning av kärnkraft", "description": "Den rosa stapeln för kärnkraft visar vissa variationer men är fortfarande en betydande del av energimixen.", "possible_reason": "Förändringar i kärnkraftspolitiken, driften av anläggningar eller allmänhetens inställning till kärnkraft." }, { "trend": "Minskande CO2-utsläpp", "description": "Den svarta linjen som representerar CO2-utsläpp visar en topp omkring 2003–2004 och därefter en stadig nedgång.", "possible_reason": "Övergång till renare energikällor, förbättrad energieffektivitet och införande av klimatpolitik." } ], "notable_events": [ { "period": "Tidigt 2000-tal", "event": "Topp i total energiförbrukning och CO2-utsläpp", "possible_explanation": "Ekonomisk tillväxt ledde till ökad efterfrågan på energi innan effektivitetsåtgärder och renare teknik hade fått ett brett genomslag." }, { "period": "Från 2010 och framåt", "event": "Snabbare minskning av användningen av fossila bränslen och CO2-utsläpp", "possible_explanation": "Strängare miljöregler, Parisavtalet (2015) och snabbare införande av förnybar teknik." } ], "overall_conclusion": "Diagrammet visar en tydlig omställning i Finlands energimix från 1990 till 2020, med en förflyttning från fossila bränslen till förnybara energikällor, vilket har resulterat i en betydande minskning av CO2-utsläppen, särskilt under den senare delen av perioden." }}
Så fungerar Bedrocks prismodell
Kostnaden för att använda Bedrock baseras på modellinferens och anpassning. Kort sagt medför användning av API:et en kostnad som beräknas per token, och priset varierar mellan modeller. Både indata och utdata debiteras per token.
När det gäller prisplaner har du två alternativ: on-demand och provisioned throughput.
On-demand
Jag rekommenderar starkt att du använder on-demand-prissättning tills du har en tydlig bild av din användning. Det är ett bra alternativ för testning, finjustering och POC-upplägg.
Provisioned throughput
Överväg denna prisplan när du har ett starkt affärscase och vet att provisioned throughput är ett ekonomiskt hållbart alternativ. Använd det bara om efterfrågan är jämn och hög, eftersom det är ganska dyrt.
Andra viktiga faktorer som påverkar priset är kunskapsbaser och skyddsräcken. Tyvärr har AWS ännu ingen officiell och lättanvänd priskalkylator, men du kan läsa mer på AWS Bedrocks prissida.
Avslutande råd
Våga ta er dit företaget aldrig tidigare har varit, men kom ihåg att ställa in kostnadslarm.
Jag rekommenderar starkt att du loggar in i AWS Console och utforskar Bedrocks playground-avsnitt.
Testa olika modeller i playground.
Testa kunskapsbasens prestanda och fördelar med din okategoriserade data.
Fundera på och testa konkreta skyddsräcken och kombinationer för att ge säkra svar.
Kavla upp ärmarna och börja experimentera med AWS CLI och SDK:er.
Men kom ihåg att i molnmiljöer medför det mesta åtminstone en liten kostnad. Så om kostnaderna inte hanteras på organisationsnivå, kom ihåg att ställa in egna faktureringslarm. Så här gör du.
Försök hitta nya och konkreta lösningar
Nu när den ”nya datoreran” är här, försök att se befintliga utmaningar ur ett annat perspektiv. Håll ögon och öron öppna under arbetsdagen efter möjligheter där AI-lösningar kan användas för att lösa vardagliga problem.
Gå också igenom din idébacklogg eller idéer som nyligen har förkastats, eftersom det mycket väl kan finnas en AI-stödd lösning som gör dem möjliga nu.
Bonustips: Använd Bedrock Studio
Amazon Bedrock Studio är en nyligen lanserad förhandsversion av Bedrock. Den gör det enkelt att bygga appar utan en separat utvecklingsmiljö. Se den som ett lättanvänt webbgränssnitt där du kan experimentera med olika modeller och funktioner. Du kan till exempel testa olika prompts med modellen Anthropic Claude utan att skriva kod.
Bedrock Studio gör det också enkelt att lägga till funktioner som kunskapsbaser (för kontextmedvetna svar), skyddsräcken (för ansvarsfull AI) och funktionsanrop (för åtkomst till specifika funktioner) – helt utan programmeringskunskaper.
- AI
- Design och UX
- Mjukvaruutveckling
Subscribe to our newsletter
Related blogs