Aviso
O JS Agent era uma biblioteca inicial para testar idéias e não é mais desenvolvido ativamente. Confira a Modelfusion - uma biblioteca de IA mais geral para o TypeScript que incorpora meus aprendizados do JS Agent.
O JS Agent é uma estrutura composta e extensível para criar agentes de IA com JavaScript e TypeScript.
Embora a criação de um protótipo de agente seja fácil, aumentar sua confiabilidade e robustez é complexo e requer considerável experimentação. O JS Agent fornece blocos de construção e ferramentas robustos para ajudá-lo a desenvolver agentes sólidos mais rapidamente.
Tutorial
Um agente que tem acesso a um mecanismo de pesquisa da Wikipedia e pode ler artigos da Wikipedia. Você pode usá -lo para responder a perguntas sobre o conteúdo da Wikipedia.
Recursos usados: gpt-3.5-turbo , ferramentas personalizadas (Pesquise Wikipedia, Artigo da Wikipedia Read Wikipedia), Gere a próxima etapa Loop, MAX Etapas Executar controlador
Um agente de desenvolvedor automatizado que funciona em um contêiner do Docker. Ele pode ler arquivos, gravar arquivos e executar comandos. Você pode ajustá -lo para o seu projeto e usá -lo para documentar o código, escrever testes, atualizar testes e recursos, etc.
Recursos usados: gpt-4 , Execução de ferramentas no contêiner do docker, agente com etapas de configuração fixa, várias propriedades de execução do agente, gera o próximo loop de etapa, ferramentas (lida de arquivo, arquivo de gravação, execução, comando, pergunta), cálculo de custos após o agente executar
Implementação do agente JS de babyagi.
Recursos usados: HTTP Agent Server, Modelo de conclusão de texto ( text-davinci-003 ), Saída de console personalizada, Atualizar tarefas de planejamento Loop
Pega um PDF e um tópico e cria um tópico do Twitter com todo o conteúdo do PDF relevante para o tópico.
Recursos usados: Composição da função (sem agente), carregamento em pdf, split-extract-rewrite
Divide um texto em pedaços e gera incorporações.
Recursos usados: chamadas de função direta (sem agente), texto dividido (GPT3-Tokenizer), gerar incorporação
text-davinci-003 etc.)gpt-4 , gpt-3.5-turbo )text-embedding-ada-002 )Step e AgentRun ).npm install js-agentVeja os exemplos e a documentação para aprender a criar um agente.
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" } ) ,
} ) ;
}