Project Icon

js-agent

可扩展、易组合的持续改进的JavaScript和TypeScript AI代理框架

JS Agent是一个可扩展、易组合的框架,专为JavaScript和TypeScript创建AI代理而设计。通过提供众多构建模块和工具,JS Agent使得开发可靠的AI代理更加高效。框架支持代理定义、执行和HTTP服务器,并兼容多种LLM模型和API,还包括多种实用的动作工具和文本处理功能。设计原则包括强类型、安全的直接函数调用和易于扩展等。更多详细信息和使用示例请参阅项目的文档和教程。

项目介绍:JS Agent

JS Agent 是一个面向 JavaScript 和 TypeScript 的可组合、可扩展的框架,专为创建 AI 代理而设计。尽管 JS Agent 已停止积极开发,但它提供了坚实的构建模块和工具,帮助开发者更快地构建可靠的 AI 代理。

主要特性

JS Agent 提供了一系列功能强大的特性,使用户可以定义和执行代理任务:

  • 代理定义与执行:用户可以配置代理运行属性,监控代理运行,并记录所有的大语言模型(LLM)调用,计算调用和运行的成本。
  • 代理 HTTP 服务器:通过 HTTP API 启动、停止和观察代理运行,并可同时托管多个代理。
  • 支持的 LLM 模型和 API:包括 OpenAI 的文本生成和聊天模型等。
  • 操作与工具:可以读取和写入文件、运行命令行命令、使用可编程搜索引擎等。
  • 代理循环:如任务更新规划循环、生成下一步循环。
  • 提示模板:内建模板可快速启动。
  • 文本功能:如信息提取、文本分割。
  • 数据源:支持网页和文件。
  • 数据转换器:如将 HTML 转换为文本。
  • 通用工具:如 LLM 呼叫重试机制。

设计原则

JS Agent 的设计基于几项核心原则:

  • 类型化支持:提供尽可能多的类型支持以帮助发现并确保安全性。
  • 直接函数调用:所有的实用函数都能直接调用,而不需要中介代理。
  • 可组合性:各个模块具有良好的关注点分离,易于组合。
  • 可扩展性:用户可以方便地添加自己的工具和步骤。
  • 功能编程:使用功能编程创建不可变对象,面向对象技术仅用于可变对象。
  • 渐进式精细化:代理的规格易于书写,默认设置有效,且能轻松覆盖以满足特定需求。
  • 生产支持:提供一流的日志记录和成本追踪支持。

示例应用

JS Agent 提供了多个示例应用程序,展示了其广泛的功能和使用场景:

  • Wikipedia 问答代理:能使用维基百科搜索引擎来回答问题。
  • JavaScript/TypeScript 开发者代理:在 Docker 容器中运行,可用于代码文件操作和自动化开发任务。
  • BabyAGI:BabyAGI 的 JS Agent 实现版本。
  • 从 PDF 到 Twitter 线程:根据主题从 PDF 提取信息并创建 Twitter 线程。
  • 拆分与嵌入文本:将文本拆分为小块并生成嵌入。

快速安装

通过 npm 安装 JS Agent:

npm install js-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: "使用搜索词搜索维基百科,并返回页面列表。",
    execute: $.tool.executeProgrammableGoogleSearchEngineAction({
      key: wikipediaSearchKey,
      cx: wikipediaSearchCx,
    }),
  });

  const readWikipediaArticleAction = $.tool.extractInformationFromWebpage({
    id: "read-wikipedia-article",
    description: "阅读维基百科文章并结合查询进行总结。",
    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,
        }),
        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" }),
  });
}

JS Agent 为创建可靠的 AI 代理提供了广泛的功能和灵活性,是开发者探索 AI 应用的有力工具。尽管已不再积极开发,但其为构建 AI 代理所提供的基础知识和实践仍然非常有益。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号