embedchain est un framework permettant de créer facilement des robots alimentés par LLM sur n'importe quel ensemble de données. embedchainjs est la version Javascript d'embedchain. Si vous voulez une version python, consultez embedchain-python
Planifiez une session de commentaires avec Taranjeet, le fondateur, pour discuter de tout problème, fournir des commentaires ou explorer des améliorations.
Il résume l'ensemble du processus de chargement de l'ensemble de données, de son découpage, de création d'intégrations, puis de stockage dans une base de données vectorielle.
Vous pouvez ajouter un ou plusieurs ensembles de données à l'aide des fonctions .add
et .addLocal
, puis utiliser la fonction .query
pour trouver une réponse à partir des ensembles de données ajoutés.
Si vous souhaitez créer un robot Naval Ravikant contenant 2 de ses articles de blog, ainsi qu'une paire de questions et réponses que vous fournissez, tout ce que vous avez à faire est d'ajouter les liens vers les articles de blog et la paire QnA et l'embedchain créeront un bot pour vous.
const dotenv = require ( "dotenv" ) ;
dotenv . config ( ) ;
const { App } = require ( "embedchain" ) ;
//Run the app commands inside an async function only
async function testApp ( ) {
const navalChatBot = await App ( ) ;
// Embed Online Resources
await navalChatBot . add ( "web_page" , "https://nav.al/feedback" ) ;
await navalChatBot . add ( "web_page" , "https://nav.al/agi" ) ;
await navalChatBot . add (
"pdf_file" ,
"https://navalmanack.s3.amazonaws.com/Eric-Jorgenson_The-Almanack-of-Naval-Ravikant_Final.pdf"
) ;
// Embed Local Resources
await navalChatBot . addLocal ( "qna_pair" , [
"Who is Naval Ravikant?" ,
"Naval Ravikant is an Indian-American entrepreneur and investor." ,
] ) ;
const result = await navalChatBot . query (
"What unique capacity does Naval argue humans possess when it comes to understanding explanations or concepts?"
) ;
console . log ( result ) ;
// answer: Naval argues that humans possess the unique capacity to understand explanations or concepts to the maximum extent possible in this physical reality.
}
testApp ( ) ;
npm
npm install embedchain && npm install -S openai@^3.3.0
Actuellement, il n'est compatible qu'avec openai 3.X, pas avec la dernière version 4.X. Veuillez vous assurer d'utiliser la bonne version, sinon vous verrez l'erreur ChromaDB
TypeError: OpenAIApi.Configuration is not a constructor
Assurez-vous que le package dotenv est installé et votre OPENAI_API_KEY
dans un fichier appelé .env
dans le dossier racine. Vous pouvez installer dotenv en
npm install dotenv
Téléchargez et installez Docker sur votre appareil en visitant ce lien. Vous en aurez besoin pour exécuter la base de données vectorielles Chroma sur votre machine.
Exécutez les commandes suivantes pour configurer le conteneur Chroma dans Docker
git clone https://github.com/chroma-core/chroma.git
cd chroma
docker-compose up -d --build
Nous utilisons le modèle d'intégration d'OpenAI pour créer des intégrations pour les morceaux et l'API ChatGPT en tant que LLM pour obtenir une réponse en fonction des documents pertinents. Assurez-vous d'avoir un compte OpenAI et une clé API. Si vous n'avez pas de clé API, vous pouvez en créer une en visitant ce lien.
Une fois que vous avez la clé API, définissez-la dans une variable d'environnement appelée OPENAI_API_KEY
// Set this inside your .env file
OPENAI_API_KEY = "sk-xxxx" ;
const dotenv = require ( "dotenv" ) ;
dotenv . config ( ) ;
App
depuis embedchain et utilisez la fonction .add
pour ajouter n'importe quel ensemble de données..query
pour obtenir la réponse à n’importe quelle requête. const dotenv = require ( "dotenv" ) ;
dotenv . config ( ) ;
const { App } = require ( "embedchain" ) ;
async function testApp ( ) {
const navalChatBot = await App ( ) ;
// Embed Online Resources
await navalChatBot . add ( "web_page" , "https://nav.al/feedback" ) ;
await navalChatBot . add ( "web_page" , "https://nav.al/agi" ) ;
await navalChatBot . add (
"pdf_file" ,
"https://navalmanack.s3.amazonaws.com/Eric-Jorgenson_The-Almanack-of-Naval-Ravikant_Final.pdf"
) ;
// Embed Local Resources
await navalChatBot . addLocal ( "qna_pair" , [
"Who is Naval Ravikant?" ,
"Naval Ravikant is an Indian-American entrepreneur and investor." ,
] ) ;
const result = await navalChatBot . query (
"What unique capacity does Naval argue humans possess when it comes to understanding explanations or concepts?"
) ;
console . log ( result ) ;
// answer: Naval argues that humans possess the unique capacity to understand explanations or concepts to the maximum extent possible in this physical reality.
}
testApp ( ) ;
const { App : EmbedChainApp } = require ( "embedchain" ) ;
// or
const { App : ECApp } = require ( "embedchain" ) ;
Nous prenons en charge les formats suivants :
Pour ajouter un fichier pdf, utilisez le data_type comme pdf_file
. Par exemple :
await app . add ( "pdf_file" , "a_valid_url_where_pdf_file_can_be_accessed" ) ;
Pour ajouter une page Web, utilisez le data_type comme web_page
. Par exemple :
await app . add ( "web_page" , "a_valid_web_page_url" ) ;
Pour fournir votre propre paire QnA, utilisez le data_type comme qna_pair
et entrez un tuple. Par exemple :
await app . addLocal ( "qna_pair" , [ "Question" , "Answer" ] ) ;
Avant de consommer des jetons de valeur, vous devez vous assurer que l'intégration que vous avez effectuée fonctionne et qu'elle reçoit le bon document de la base de données.
Pour cela, vous pouvez utiliser la méthode dryRun
.
En suivant l'exemple ci-dessus, ajoutez ceci à votre script :
let result = await naval_chat_bot . dryRun ( "What unique capacity does Naval argue humans possess when it comes to understanding explanations or concepts?" ) ; console . log ( result ) ;
'' '
Use the following pieces of context to answer the query at the end. If you don' t know the answer , just say that you don 't know, don' t try to make up an answer .
terms of the unseen . And I think that’s critical . That is what humans do uniquely that no other creature , no other computer , no other intelligence—biological or artificial—that we have ever encountered does . And not only do we do it uniquely , but if we were to meet an alien species that also had the power to generate these good explanations , there is no explanation that they could generate that we could not understand . We are maximally capable of understanding . There is no concept out there that is possible in this physical reality that a human being , given sufficient time and resources and
Query : What unique capacity does Naval argue humans possess when it comes to understanding explanations or concepts ?
Helpful Answer :
'' '
Il est confirmé que l’intégration fonctionne comme prévu. Il renvoie le bon document, même si la question est posée légèrement différemment. Aucun jeton d'invite n'a été consommé.
L'exécution à sec consommera toujours des jetons pour intégrer votre requête, mais elle ne représente qu'environ 1/15 de l'invite.
La création d'un chatbot sur n'importe quel ensemble de données nécessite les étapes suivantes
Chaque fois qu'un utilisateur pose une requête, le processus suivant permet de trouver la réponse à la requête.
Le processus de chargement de l'ensemble de données, puis d'interrogation, implique plusieurs étapes et chaque étape a ses propres nuances.
Ces questions peuvent paraître triviales pour certains, mais pour beaucoup d’entre nous, il faut de la recherche, de l’expérimentation et du temps pour trouver des réponses précises.
embedchain est un framework qui prend en charge toutes ces nuances et fournit une interface simple pour créer des robots sur n'importe quel ensemble de données.
Dans la première version, nous permettons à quiconque d'obtenir plus facilement un chatbot sur n'importe quel ensemble de données, opérationnel en moins d'une minute. Tout ce que vous avez à faire est de créer une instance d'application, d'ajouter les ensembles de données à l'aide de la fonction .add
, puis d'utiliser la fonction .query
pour obtenir la réponse pertinente.
embedchain est construit sur la pile suivante :
Si vous utilisez ce référentiel, pensez à le citer avec :
@misc{embedchain,
author = {Taranjeet Singh},
title = {Embechain: Framework to easily create LLM powered bots over any dataset},
year = {2023},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{https://github.com/embedchain/embedchainjs}},
}