English | 日本語 | 한국어 | 中文 | Français | Deutsch | Español | Italian | Norsk | ไทย | Bahasa Indonesia | Bahasa Melayu | Tiếng Việt | Polski
[!Advarsel]
V2 er lansert. For å oppdatere, vennligst les nøye gjennom migrasjonsveiledningen. Uten forsiktighet vil BOTS FRA V1 BLI UBRUKELIGE.
En flerspråklig chatbot som bruker LLM-modeller levert av Amazon Bedrock for generativ AI.
Legg til din egen instruksjon og gi ekstern kunnskap som URL eller filer (også kjent som RAG). Boten kan deles mellom applikasjonens brukere. Den tilpassede boten kan også publiseres som en frittstående API (Se detaljer).
[!Viktig] Av styringsmessige årsaker kan kun tillatte brukere opprette tilpassede bots. For å tillate opprettelse av tilpassede bots, må brukeren være medlem av gruppen kalt
CreatingBotAllowed
, som kan settes opp via administrasjonskonsollen > Amazon Cognito User pools eller aws cli. Merk at brukergruppens ID kan refereres ved å gå til CloudFormation > BedrockChatStack > Outputs >AuthUserPoolIdxxxx
.
LLM-drevet Agent
Ved å bruke Agent-funksjonaliteten kan chatboten automatisk håndtere mer komplekse oppgaver. For eksempel kan Agenten hente nødvendig informasjon fra eksterne verktøy eller dele opp oppgaven i flere trinn for behandling.
- I us-east-1-regionen, åpne Bedrock Model access >
Administrer modelltilgang
> Merk alleAnthropic / Claude 3
, alleAmazon / Nova
,Amazon / Titan Text Embeddings V2
ogCohere / Embed Multilingual
, og såLagre endringer
.
- Åpne CloudShell i regionen der du vil distribuere
- Kjør distribusjon via følgende kommandoer. Hvis du vil spesifisere versjonen som skal distribueres eller trenger å bruke sikkerhetsretningslinjer, kan du angi de aktuelle parameterne fra Valgfrie parametere.
git clone https://github.com/aws-samples/bedrock-claude-chat.git
cd bedrock-claude-chat
chmod +x bin.sh
./bin.sh
- Du vil bli spurt om du er en ny bruker eller bruker v2. Hvis du ikke er en fortsatt bruker fra v0, kan du skrive inn
y
.
Du kan spesifisere følgende parametere under distribusjon for å forbedre sikkerhet og tilpasning:
- --disable-self-register: Deaktiver selvregistrering (standard: aktivert). Hvis dette flagget er satt, må du opprette alle brukere på Cognito, og det vil ikke tillate brukere å registrere seg selv.
- --enable-lambda-snapstart: Aktiver Lambda SnapStart (standard: deaktivert). Hvis dette flagget er satt, forbedres oppstartstider for Lambda-funksjoner, noe som gir raskere responstider for bedre brukeropplevelse.
- --ipv4-ranges: Kommaseparert liste over tillatte IPv4-områder. (standard: tillat alle IPv4-adresser)
- --ipv6-ranges: Kommaseparert liste over tillatte IPv6-områder. (standard: tillat alle IPv6-adresser)
- --disable-ipv6: Deaktiver tilkoblinger over IPv6. (standard: aktivert)
- --allowed-signup-email-domains: Kommaseparert liste over tillatte e-postdomener for påmelding. (standard: ingen domenerestriksjoner)
- --bedrock-region: Definer regionen der Bedrock er tilgjengelig. (standard: us-east-1)
- --repo-url: Den egendefinerte repositoryen til Bedrock Claude Chat som skal distribueres, hvis den er forket eller har egendefinert kildekontroll. (standard: https://github.com/aws-samples/bedrock-claude-chat.git)
- --version: Versjonen av Bedrock Claude Chat som skal distribueres. (standard: siste versjon under utvikling)
- --cdk-json-override: Du kan overstyre CDK-kontekstverdier under distribusjon ved å bruke overstyrings-JSON-blokken. Dette lar deg endre konfigurasjonen uten å redigere cdk.json-filen direkte.
Eksempel på bruk:
./bin.sh --cdk-json-override '{
"context": {
"selfSignUpEnabled": false,
"enableLambdaSnapStart": true,
"allowedIpV4AddressRanges": ["192.168.1.0/24"],
"allowedSignUpEmailDomains": ["example.com"]
}
}'
Overstyrings-JSON-en må følge samme struktur som cdk.json. Du kan overstyre alle kontekstverdier, inkludert:
selfSignUpEnabled
enableLambdaSnapStart
allowedIpV4AddressRanges
allowedIpV6AddressRanges
allowedSignUpEmailDomains
bedrockRegion
enableRagReplicas
enableBedrockCrossRegionInference
- Og andre kontekstverdier definert i cdk.json
[!Merk] Overstyringsverdiene vil bli slått sammen med den eksisterende cdk.json-konfigurasjonen under distribusjon i AWS-kodebygning. Verdier som er angitt i overstyrings-JSON-en, vil ha forrang fremfor verdiene i cdk.json.
./bin.sh --disable-self-register --ipv4-ranges "192.0.2.0/25,192.0.2.128/25" --ipv6-ranges "2001:db8:1:2::/64,2001:db8:1:3::/64" --allowed-signup-email-domains "example.com,anotherexample.com" --bedrock-region "us-west-2" --version "v1.2.6"
- Etter omtrent 35 minutter vil du få følgende output, som du kan åpne i nettleseren din
Frontend URL: https://xxxxxxxxx.cloudfront.net
Påmeldingsskjermen vil vises som vist ovenfor, hvor du kan registrere e-posten din og logge deg på.
[!Viktig] Uten å angi den valgfrie parameteren vil denne distribusjonsmetoden tillate at alle som kjenner URL-en kan melde seg på. For produksjonsbruk anbefales det sterkt å legge til IP-adressebegrensninger og deaktivere selvregistrering for å redusere sikkerhetsrisikoer (du kan definere allowed-signup-email-domains for å begrense brukere slik at bare e-postadresser fra selskapets domene kan melde seg på). Bruk både ipv4-ranges og ipv6-ranges for IP-adressebegrensninger, og deaktiver selvregistrering ved å bruke disable-self-register når du kjører ./bin.
[!TIPS] Hvis
Frontend URL
ikke vises eller Bedrock Claude Chat ikke fungerer ordentlig, kan det være et problem med den nyeste versjonen. I så fall kan du legge til--version "v1.2.6"
i parameterne og prøve distribusjon på nytt.
Det er en arkitektur bygget på AWS-administrerte tjenester, som eliminerer behovet for infrastrukturhåndtering. Ved bruk av Amazon Bedrock er det ikke nødvendig å kommunisere med APIer utenfor AWS. Dette muliggjør distribusjon av skalerbare, pålitelige og sikre applikasjoner.
- Amazon DynamoDB: NoSQL-database for lagring av samtalehistorikk
- Amazon API Gateway + AWS Lambda: Backend API-endepunkt (AWS Lambda Web Adapter, FastAPI)
- Amazon CloudFront + S3: Frontend-applikasjonsleveranse (React, Tailwind CSS)
- AWS WAF: IP-adressebegrensning
- Amazon Cognito: Brukerautentisering
- Amazon Bedrock: Administrert tjeneste for å utnytte grunnleggende modeller via APIer
- Amazon Bedrock Knowledge Bases: Tilbyr et administrert grensesnitt for Retrieval-Augmented Generation (RAG), med tjenester for embedding og dokumentanalyse
- Amazon EventBridge Pipes: Mottar hendelse fra DynamoDB-strøm og starter Step Functions for å integrere ekstern kunnskap
- AWS Step Functions: Orkestrerer innhentingspipeline for å integrere ekstern kunnskap i Bedrock Knowledge Bases
- Amazon OpenSearch Serverless: Fungerer som backend-database for Bedrock Knowledge Bases, og tilbyr full tekst-søk og vektorsøk, som muliggjør nøyaktig henting av relevant informasjon
- Amazon Athena: Spørretjeneste for å analysere S3-bøtte
Super-enkel distribusjon bruker AWS CodeBuild til å utføre distribusjon med CDK internt. Denne seksjonen beskriver fremgangsmåten for å distribuere direkte med CDK.
- Vennligst ha UNIX, Docker og et Node.js-kjøremiljø. Hvis ikke, kan du også bruke Cloud9
[!Viktig] Hvis det er utilstrekkelig lagringskapasitet i det lokale miljøet under distribusjon, kan CDK-bootstrapping resultere i en feil. Hvis du kjører i Cloud9 osv., anbefaler vi å utvide volumstørrelsen på instansen før distribusjon.
- Klone dette repositoriet
git clone https://github.com/aws-samples/bedrock-claude-chat
- Installer npm-pakker
cd bedrock-claude-chat
cd cdk
npm ci
-
Rediger om nødvendig følgende oppføringer i cdk.json ved behov.
bedrockRegion
: Region hvor Bedrock er tilgjengelig. MERK: Bedrock støtter IKKE alle regioner for øyeblikket.allowedIpV4AddressRanges
,allowedIpV6AddressRanges
: Tillatte IP-adresseområder.enableLambdaSnapStart
: Standard er true. Sett til false hvis du distribuerer til en region som ikke støtter Lambda SnapStart for Python-funksjoner.
-
Før du distribuerer CDK, må du bootstrappe én gang for regionen du distribuerer til.
npx cdk bootstrap
- Distribuer dette eksempelprosjektet
npx cdk deploy --require-approval never --all
- Du vil få utdata som ligner følgende. URL-en til web-appen vil bli vist i
BedrockChatStack.FrontendURL
, så vennligst åpne den i nettleseren din.
✅ BedrockChatStack
✨ Distribusjonstid: 78.57s
Utdata:
BedrockChatStack.AuthUserPoolClientIdXXXXX = xxxxxxx
BedrockChatStack.AuthUserPoolIdXXXXXX = ap-northeast-1_XXXX
BedrockChatStack.BackendApiBackendApiUrlXXXXX = https://xxxxx.execute-api.ap-northeast-1.amazonaws.com
BedrockChatStack.FrontendURL = https://xxxxx.cloudfront.net
Oppdater enableMistral
til true
i cdk.json, og kjør npx cdk deploy
.
...
"enableMistral": true,
[!Viktig] Dette prosjektet fokuserer på Anthropic Claude-modeller, Mistral-modellene er begrenset støttet. For eksempel er prompteksempler basert på Claude-modeller. Dette er et Mistral-spesifikt alternativ, når du har slått på Mistral-modeller, kan du bare bruke Mistral-modeller for alle chat-funksjonene, IKKE både Claude og Mistral-modeller.
Brukere kan justere tekstgeneringsparameterne fra skjermen for opprettelse av egen bot. Hvis boten ikke brukes, vil standardparameterne satt i config.py bli brukt.
DEFAULT_GENERATION_CONFIG = {
"max_tokens": 2000,
"top_k": 250,
"top_p": 0.999,
"temperature": 0.6,
"stop_sequences": ["Human: ", "Assistant: "],
}
Hvis du bruker cli og CDK, kjør npx cdk destroy
. Hvis ikke, gå til CloudFormation og slett BedrockChatStack
og FrontendWafStack
manuelt. Merk at FrontendWafStack
er i us-east-1
-regionen.
Denne ressursen oppdager automatisk språk ved hjelp av i18next-browser-languageDetector. Du kan bytte språk fra applikasjonens meny. Alternativt kan du bruke Query String for å angi språk som vist nedenfor.
https://example.com?lng=ja
Denne malen har selvregistrering aktivert som standard. For å deaktivere selvregistrering, åpne cdk.json og sett selfSignUpEnabled
til false
. Hvis du konfigurerer ekstern identitetsleverandør, vil verdien bli ignorert og automatisk deaktivert.
Som standard begrenser ikke denne malen domenene for påmeldingse-postadresser. For å tillate påmelding kun fra bestemte domener, åpne cdk.json
og angi domenene som en liste i allowedSignUpEmailDomains
.
"allowedSignUpEmailDomains": ["example.com"],
Denne malen støtter ekstern identitetsleverandør. For øyeblikket støtter vi Google og egen OIDC-leverandør.
Denne malen har følgende grupper for å gi tillatelser til brukere:
Hvis du vil at nyopprettede brukere automatisk skal bli med i grupper, kan du angi dem i cdk.json.
"autoJoinUserGroups": ["CreatingBotAllowed"],
Som standard vil nyopprettede brukere bli med i CreatingBotAllowed
-gruppen.
enableRagReplicas
er et alternativ i cdk.json som styrer replikainnstillingene for RAG-databasen, spesielt Knowledge Bases som bruker Amazon OpenSearch Serverless.
- Standard: true
- true: Forbedrer tilgjengelighet ved å aktivere flere replikaer, egnet for produksjonsmiljøer, men øker kostnadene.
- false: Reduserer kostnader ved å bruke færre replikaer, egnet for utvikling og testing.
Dette er en konto-/regioninnstilling som påvirker hele applikasjonen, ikke individuelle bots.
[!Merk] Per juni 2024 støtter Amazon OpenSearch Serverless 0,5 OCU, som senker oppstartskostnadene for småskala arbeidsbelastninger. Produksjonsdistribusjoner kan starte med 2 OCUer, mens dev/test-arbeidsbelastninger kan bruke 1 OCU. OpenSearch Serverless skaleres automatisk basert på arbeidsbelastningskrav. For mer detaljer, besøk kunngjøringen.
Kryssregional inferens lar Amazon Bedrock dynamisk rute modellinferensforespørsler på tvers av flere AWS-regioner, noe som forbedrer gjennomstrømning og motstandsdyktighet under perioder med høy etterspørsel. For å konfigurere, rediger cdk.json
.
"enableBedrockCrossRegionInference": true
Lambda SnapStart forbedrer oppstartstidene for Lambda-funksjoner og gir raskere svartider for bedre brukeropplevelse. På den annen side er det for Python-funksjoner en avgift avhengig av cachestørrelse og ikke tilgjengelig i noen regioner for øyeblikket. For å deaktivere SnapStart, rediger cdk.json
.
"enableLambdaSnapStart": false
Du kan konfigurere et egendefinert domene for CloudFront-distribusjonen ved å angi følgende parametere i cdk.json:
{
"alternateDomainName": "chat.example.com",
"hostedZoneId": "Z0123456789ABCDEF"
}
alternateDomainName
: Det egendefinerte domenenavnet for chat-applikasjonen (f.eks. chat.example.com)hostedZoneId
: ID-en til Route 53-vertsonen der domeneopptegnelsene vil bli opprettet
Når disse parameterne er oppgitt, vil distribusjonen automatisk:
- Opprette et ACM-sertifikat med DNS-validering i us-east-1-regionen
- Opprette de nødvendige DNS-oppføringene i Route 53-vertsonen
- Konfigurere CloudFront til å bruke ditt egendefinerte domene
[!Merk] Domenet må administreres av Route 53 i AWS-kontoen din. Vertssonens ID kan finnes i Route 53-konsollen.
Se LOKAL UTVIKLING.
Takk for at du vurderer å bidra til dette repositoriet! Vi ønsker feilrettinger, språkoversettelser (i18n), forbedringer av funksjoner, agent-verktøy og andre forbedringer.
For funksjonsforbedringer og andre forbedringer, før du oppretter en Pull Request, setter vi stor pris på om du kan opprette en Feature Request Issue for å diskutere implementeringsmetoden og detaljene. For feilrettinger og språkoversettelser (i18n), kan du gå videre med å opprette en Pull Request direkte.
Ta også en titt på følgende retningslinjer før du bidrar:
Dette biblioteket er lisensiert under MIT-0-lisensen. Se LICENSE-filen.