Logo

JS Agent: 构建智能AI代理的JavaScript框架

js-agent

JS Agent: 用JavaScript构建智能AI代理的强大框架

在人工智能快速发展的今天,如何高效地构建和部署AI代理(Agent)已成为开发者们关注的焦点。JS Agent作为一个专为JavaScript和TypeScript设计的AI代理开发框架,为开发者提供了一套强大而灵活的工具,帮助他们更快速、更可靠地构建智能AI应用。本文将深入介绍JS Agent的核心特性、设计理念以及使用方法,帮助读者全面了解这个创新框架。

JS Agent简介

JS Agent是一个用于创建AI代理的可组合和可扩展的框架,专为JavaScript和TypeScript开发者设计。它提供了一系列健壮的构建模块和工具,帮助开发者更快地开发出可靠的AI代理。

值得注意的是,JS Agent目前已不再积极开发,作者建议检查ModelFusion——一个更通用的TypeScript AI库,它吸收了JS Agent的经验教训。尽管如此,JS Agent仍然是一个学习和理解AI代理开发原理的优秀资源。

主要特性

JS Agent提供了丰富的功能,使得AI代理的开发变得更加简单和高效:

  1. 代理定义和执行:

    • 可配置的代理运行属性,可通过提示访问
    • 观察代理运行(支持控制台输出、UI、服务器运行、Web应用等)
    • 记录代理运行的所有LLM调用
    • 计算LLM调用和代理运行的成本
    • 根据特定条件停止代理运行,例如限制步骤数
    • 在一个代理中使用多个不同的LLM模型
  2. 代理HTTP服务器:

    • 通过HTTP API启动、停止和观察代理运行
    • 可以托管多个代理
  3. 支持的LLM模型和API:

    • OpenAI文本补全模型(如text-davinci-003)
    • OpenAI聊天补全模型(gpt-4, gpt-3.5-turbo)
    • OpenAI嵌入模型(text-embedding-ada-002)
  4. 动作和工具:

    • 读取和写入文件
    • 运行CLI命令
    • 使用可编程搜索引擎
    • 从网页提取特定主题的信息
    • 请求用户输入
    • 写入字符串属性
    • 调用子代理(循环)
    • 可选的代理/执行器分离(例如,在Docker容器等沙盒环境中运行执行器)
  5. 代理循环:

    • BabyAGI风格的更新任务规划循环
    • 生成下一步循环
  6. 聊天和文本提示的模板:

    • 内置模板以快速启动
    • 用于组合和转换提示的实用函数
  7. 文本函数:

    • 提取信息(提取和重写;递归提取)
    • 分割器:将文本分割成块
    • 辅助函数:加载、生成
  8. 数据源和转换器:

    • 网页HTML文本
    • 文件ArrayBuffer
    • HTML到文本,PDF到文本的转换

设计原则

JS Agent的设计遵循了一系列核心原则,这些原则确保了框架的易用性、灵活性和可扩展性:

  1. 类型安全: 提供尽可能多的类型定义,以支持代码发现和确保安全性。
  2. 直接函数调用: 所有实用函数都可以直接调用,无需通过代理或创建复合函数。
  3. 可组合性: 各个组件之间关注点分离清晰,易于组合。
  4. 可扩展性: 用户可以轻松添加自己的工具、提供者、动作和代理步骤等。
  5. 函数式编程: 对于不可变对象,使用函数式编程进行组装。面向对象编程仅用于具有可变状态的对象。
  6. 支持代理规范的渐进式细化: 代理规范应易于编写,每个构建块都应提供良好的默认值。同时,也应该能够轻松覆盖默认设置。
  7. 为生产环境而构建: JS Agent提供一流的日志记录支持,可以将LLM调用和成本跟踪与代理运行关联等。

JS Agent Framework

快速安装和使用

要开始使用JS Agent,您可以查看examples目录中的示例代码,以及官方文档来学习如何创建代理。

示例代理: Wikipedia问答

让我们来看一个具体的例子,展示如何使用JS Agent创建一个Wikipedia问答代理:

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;
}) {
  // 定义搜索Wikipedia的动作
  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,
    }),
  });

  // 定义读取Wikipedia文章的动作
  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,
        }),
        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" }),
  });
}

这个例子展示了如何创建一个Wikipedia问答代理。它使用Google可编程搜索引擎来搜索Wikipedia,然后读取和总结相关的Wikipedia文章来回答问题。代理使用OpenAI的GPT-3.5-turbo模型来理解任务、生成搜索查询和总结文章内容。

其他示例项目

JS Agent还提供了多个其他示例项目,展示了框架的多样性和灵活性:

  1. JavaScript/TypeScript开发者代理: 一个自动化的开发者代理,可以在Docker容器中工作。它能够读取文件、写入文件和执行命令。

  2. BabyAGI实现: JS Agent版本的BabyAGI实现,展示了如何创建自主任务管理和执行系统。

  3. PDF转Twitter线程: 将PDF文档转换为与特定主题相关的Twitter线程。

  4. 文本分割和嵌入: 演示如何将文本分割成块并生成嵌入。

这些示例充分展示了JS Agent在不同场景下的应用潜力,从简单的文本处理到复杂的AI代理系统。

结论

JS Agent为JavaScript和TypeScript开发者提供了一个强大的工具集,用于构建复杂的AI代理系统。通过其灵活的设计、丰富的功能和清晰的设计原则,JS Agent使得创建高度定制化和可靠的AI应用变得更加简单。

尽管JS Agent目前已不再积极开发,但它仍然是学习和理解AI代理开发原理的宝贵资源。对于那些希望深入探索AI代理开发的开发者来说,JS Agent提供了一个优秀的起点。

随着AI技术的不断发展,像JS Agent这样的框架将继续推动创新,使得更多开发者能够参与到AI应用的创建中来。无论您是AI领域的新手,还是经验丰富的开发者,JS Agent都为您提供了一个探索和实现AI代理潜力的绝佳平台。

🔗 相关链接:

通过深入学习和实践JS Agent,开发者可以获得构建AI代理的宝贵经验,为未来更复杂的AI应用开发做好准备。让我们一起探索AI的无限可能,用JavaScript和TypeScript构建更智能的未来!

最新项目

Project Cover
豆包MarsCode
豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。
Project Cover
AI写歌
Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。
Project Cover
商汤小浣熊
小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。
Project Cover
有言AI
有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。
Project Cover
Kimi
Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。
Project Cover
吐司
探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。
Project Cover
SubCat字幕猫
SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。
Project Cover
AIWritePaper论文写作
AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。
Project Cover
稿定AI
稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。
投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号