Avertissement
L'agent JS était une bibliothèque précoce pour tester des idées et n'est plus développé activement. Consultez ModElfusion - une bibliothèque d'IA plus générale pour TypeScript qui intègre mes apprentissages auprès de l'agent JS.
JS Agent est un cadre composable et extensible pour créer des agents d'IA avec JavaScript et TypeScript.
Bien que la création d'un prototype d'agent soit facile, l'augmentation de sa fiabilité et de sa robustesse est complexe et nécessite une expérimentation considérable. JS Agent fournit des blocs de construction robustes et des outils pour vous aider à développer des agents solides en roche plus rapidement.
Tutoriel
Un agent qui a accès à un moteur de recherche Wikipedia et peut lire les articles Wikipedia. Vous pouvez l'utiliser pour répondre aux questions sur le contenu de Wikipedia.
Caractéristiques d'occasion: gpt-3.5-turbo
, outils personnalisés (recherche Wikipedia, Lire l'article de Wikipedia), générer une boucle d'étape suivante, max étapes d'exécution du contrôleur
Un agent de développeur automatisé qui fonctionne dans un conteneur Docker. Il peut lire des fichiers, écrire des fichiers et exécuter des commandes. Vous pouvez l'ajuster pour votre projet et l'utiliser pour documenter le code, écrire des tests, mettre à jour des tests et des fonctionnalités, etc.
Fonctionnalités utilisées: gpt-4
, exécution d'outils dans Docker Container, agent avec étapes de configuration fixe, propriétés de l'exécution de plusieurs agents, générer une boucle d'étape suivante, outils (lire le fichier, écrire, exécuter, commander, demander à l'utilisateur), calcul des coûts après l'exécution de l'agent
Implémentation de l'agent JS de Babyagi.
Fonctionnalités utilisées: HTTP Agent Server, modèle de complétion de texte ( text-davinci-003
), sortie de console personnalisée, boucle de planification des tâches de mise à jour
Prend un PDF et un sujet et crée un fil Twitter avec tout le contenu du PDF qui est pertinent pour le sujet.
Caractéristiques utilisées: Composition de la fonction (pas d'agent), chargement PDF, Fraction-Extrait-Travel
Fruit un texte en morceaux et génère des intérêts.
Caractéristiques utilisées: appels de fonction directe (pas d'agent), texte divisé (gpt3-tokenzer), générer des intégres
text-davinci-003
etc.)gpt-4
, gpt-3.5-turbo
)text-embedding-ada-002
)Step
et AgentRun
).npm install js-agent
Voir les exemples et la documentation pour apprendre à créer un agent.
import * as $ from "js-agent" ;
const openai = $ . provider . openai ;
export async function runWikipediaAgent ( {
wikipediaSearchKey ,
wikipediaSearchCx ,
openAiApiKey ,
task ,
} : {
openAiApiKey : string ;
wikipediaSearchKey : string ;
wikipediaSearchCx : string ;
task : string ;
} ) {
const searchWikipediaAction = $ . tool . programmableGoogleSearchEngineAction ( {
id : "search-wikipedia" ,
description :
"Search wikipedia using a search term. Returns a list of pages." ,
execute : $ . tool . executeProgrammableGoogleSearchEngineAction ( {
key : wikipediaSearchKey ,
cx : wikipediaSearchCx ,
} ) ,
} ) ;
const readWikipediaArticleAction = $ . tool . extractInformationFromWebpage ( {
id : "read-wikipedia-article" ,
description :
"Read a wikipedia article and summarize it considering the query." ,
inputExample : {
url : "https://en.wikipedia.org/wiki/Artificial_intelligence" ,
topic : "{query that you are answering}" ,
} ,
execute : $ . tool . executeExtractInformationFromWebpage ( {
extract : $ . text . extractRecursively . asExtractFunction ( {
split : $ . text . splitRecursivelyAtToken . asSplitFunction ( {
tokenizer : openai . tokenizer . forModel ( {
model : "gpt-3.5-turbo" ,
} ) ,
maxChunkSize : 2048 , // needs to fit into a gpt-3.5-turbo prompt and leave room for the answer
} ) ,
extract : $ . text . generateText . asFunction ( {
prompt : $ . prompt . extractChatPrompt ( ) ,
model : openai . chatModel ( {
apiKey : openAiApiKey ,
model : "gpt-3.5-turbo" ,
} ) ,
} ) ,
} ) ,
} ) ,
} ) ;
return $ . runAgent < { task : string } > ( {
properties : { task } ,
agent : $ . step . generateNextStepLoop ( {
actions : [ searchWikipediaAction , readWikipediaArticleAction ] ,
actionFormat : $ . action . format . flexibleJson ( ) ,
prompt : $ . prompt . concatChatPrompts (
async ( { runState : { task } } ) => [
{
role : "system" ,
content : `## ROLE
You are an knowledge worker that answers questions using Wikipedia content. You speak perfect JSON.
## CONSTRAINTS
All facts for your answer must be from Wikipedia articles that you have read.
## TASK
${ task } ` ,
} ,
] ,
$ . prompt . availableActionsChatPrompt ( ) ,
$ . prompt . recentStepsChatPrompt ( { maxSteps : 6 } )
) ,
model : openai . chatModel ( {
apiKey : openAiApiKey ,
model : "gpt-3.5-turbo" ,
} ) ,
} ) ,
controller : $ . agent . controller . maxSteps ( 20 ) ,
observer : $ . agent . observer . showRunInConsole ( { name : "Wikipedia Agent" } ) ,
} ) ;
}