? Gdańsk AI ?
Gdańsk Ai est un chatbot vocal complet de pile complexe (discours-text, LLM, texte-to-speech) avec des intégrations à Auth0, Openai, Google Cloud API et Stripe - application Web, API et AI
Il utilise Stripe pour fournir une infrastructure de paiement, afin que les utilisateurs puissent acheter bibs
- les jetons API. AUTH0 est utilisé pour fournir l'authentification et l'autorisation. Vous pouvez les utiliser gratuitement - Auth0 a un niveau gratuit jusqu'à 7 000 utilisateurs par mois. Stripe ne facture les frais des achats, vous n'avez donc aucun coût en cours de la part de l'un d'eux.
Si vous souhaitez utiliser ces services, vous devez configurer vos comptes Stripe et Auth0 et mettre des clés API dans .env
dans web-api/
Directory.
Node.js, TypeScript et Express sont utilisés ici
.env_example
montre les valeurs que vous devez définir
CHATBOT_API_KEY={whatever you decide; this value is reused among ai-api, web-api and web in this project}
OPEN_AI_API_KEY={go to platform.openai.com, generate and copy-paste api key here}
# Google Cloud API
type=service_account
project_id={project id}
private_key_id=
private_key={multiline private key with structure like this:-----BEGIN PRIVATE KEY-----...-----END PRIVATE KEY-----n}
client_email={project name}@{project id}.iam.gserviceaccount.com
client_id=
auth_uri=https://accounts.google.com/o/oauth2/auth
token_uri=https://oauth2.googleapis.com/token
auth_provider_x509_cert_url=https://www.googleapis.com/oauth2/v1/certs
client_x509_cert_url=https://www.googleapis.com/robot/v1/metadata/x509/{project-name}%40{project-id}.iam.gserviceaccount.com
universe_domain=googleapis.com
# Stripe
STRIPE_SECRET_KEY={sk_...}
STRIPE_PUBLISHABLE_KEY={pk_...}
TOKENS_PRICE_ID={price_some characters here - you need to create a price in Stripe for tokens first and then copy-paste it here}
# TOKENS_PER_TRANSACTION defines how many interactions user can make with AI per single bibs purchase
TOKENS_PER_TRANSACTION=5
# Auth0
AUTH0_ISSUER_BASE_URL='https://{tenant-name}.us.auth0.com'
AUTH0_DOMAIN='{tenant-name}.us.auth0.com'
AUTH0_CLIENT_ID=
AUTH0_CLIENT_SECRET=
AUTH0_AUDIENCE="https://{tenant-name}.us.auth0.com/api/v2/"
AUTH0_SCOPE="openid profile email offline_access"
CLIENT_URL={url pointing to where web is deployed}
AI_API_URL={url pointing to where ai api is deployed}
web-api
npm install
ou npm ci
npm run build
npm run start
ou npm run dev
pour l'exécuter avec Hot-Reload Il fonctionne actuellement dans Google Chrome. Vous pouvez appuyer sur le logo Gdańsk AI pour enregistrer l'audio, puis appuyer sur-le à nouveau pour l'envoyer à l'API Web. Après une réponse réussie, un audio reçu vous est joué.
Next.js utilisé ici avec le modèle de Vercel
.env_example
montre les valeurs que vous devez définir
CHATBOT_API_KEY={whatever you decide; this value is reused among ai-api, web-api and web in this project}
CHATBOT_API_URL={url to where api is deployed}
NEXT_PUBLIC_API_URL={url pointing to where api is deployed}
API_URL={url to where api is deployed}
# Auth0
NEXT_PUBLIC_AUTH0_ISSUER_BASE_URL="https://{tenant-name}.us.auth0.com"
NEXT_PUBLIC_AUTH0_CLIENT_ID=
AUTH0_SECRET=
AUTH0_BASE_URL={url pointing to where web is deployed}
AUTH0_ISSUER_BASE_URL='https://{tenant-name}.us.auth0.com'
AUTH0_DOMAIN='{tenant-name}.us.auth0.com'
AUTH0_CLIENT_ID=
AUTH0_CLIENT_SECRET=
AUTH0_AUDIENCE="https://{tenant-name}.us.auth0.com/api/v2/"
AUTH0_SCOPE="openid profile email offline_access"
CLIENT_URL={url pointing to where web is deployed}
web
npm install
ou npm ci
npm run build
stripe listen --forward-to http://localhost:3000/webhook
(ajustez le port à partir de 3000 si vous l'avez changé) - Nous en avons besoin pour invoquer /webhook
point de terminaison sur les achats de dossiersnpm run start
screen_hint: "signup",
dans signup.ts
L'API OpenAI et Google Cloud sont utilisées ici pour fournir des services de discours à texte (Whisper-1), LLM (GPT-3.5-Turbo) et text-to-dispeophe (Google Cloud TextTospeEchClient).
Python et Fastapi ici
.env_example
montre les valeurs que vous devez définir
CHATBOT_API_KEY={whatever you decide; this value is reused among ai-api, web-api and web in this project}
OPEN_AI_API_KEY={go to platform.openai.com, generate and copy-paste api key here}
# Google Cloud API start
type=service_account
project_id={project id}
private_key_id=
private_key={multiline private key with structure like this:-----BEGIN PRIVATE KEY-----...-----END PRIVATE KEY-----n}
client_email={project name}@{project id}.iam.gserviceaccount.com
client_id=
auth_uri=https://accounts.google.com/o/oauth2/auth
token_uri=https://oauth2.googleapis.com/token
auth_provider_x509_cert_url=https://www.googleapis.com/oauth2/v1/certs
client_x509_cert_url=https://www.googleapis.com/robot/v1/metadata/x509/{project-name}%40{project-id}.iam.gserviceaccount.com
universe_domain=googleapis.com
PORT=9000
ai-api
Créez un compte, puis un nouveau locataire. Vous devrez vous installer:
Applications
Apis
Créez un compte, tournez le mode de test, sauf si vous souhaitez l'exécuter sur la production et traiter les paiements réels, accédez à l'onglet Developers, puis les touches API. C'est là que vous pouvez trouver des valeurs pour stripe_secret_key et stripe_publishable_key. Accédez maintenant à l'onglet Produits et ajoutez un produit qui représente un seul achat de dossiers (un BIB - une interaction avec l'IA pour un utilisateur). Une fois que vous l'avez créé, copiez PriceId et mettez-le dans .env en tant que tokens_price_id.
Créez un compte, allez sur plateforme.openai.com, générez une clé API, utilisez-la dans des fichiers .env
Créez un compte, allez sur IAM & Admin, puis des comptes de service et créez un projet - vous avez besoin d'identification du projet à mettre dans des fichiers .env. Ensuite, vous devez générer JSON avec des informations d'identification et extraire les valeurs du fichier vers vos fichiers .env. Accédez à la page Créer des informations d'identification d'accès (vous pouvez utiliser le moteur de recherche pour trouver un lien). Puis les touches -> Ajouter une touche -> Créer une nouvelle touche -> JSON -> Créer. Vous devriez obtenir des informations d'identification.json avec toutes les valeurs dont vous avez besoin pour .env. Enfin, vous devez activer le service API de discours de texte et vous êtes prêt
Merci à Jeff McJunkin pour l'amélioration de la lecture en passant par le processus de configuration à partir de la rayure et en remplissant les lacunes dans les documents
GNU GPL V2
Si vous utilisez ce logiciel dans votre recherche, veuillez utiliser la citation suivante:
@software { Maczan_Gdansk_AI_2023 ,
author = { Maczan, Jędrzej Paweł } ,
title = { {Gdańsk AI - Full stack voice chatbot} } ,
url = { https://github.com/jmaczan/gdansk-ai } ,
year = { 2023 } ,
publisher = { GitHub }
}
Fabriqué à Gdańsk, en Pologne en 2023 par Jędrzej Paweł Maczan