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

RayRay
JS AgentJavaScriptTypeScriptAI agentsModelFusionGithub开源项目

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构建更智能的未来!

编辑推荐精选

GPT Plus|Pro充值

GPT Plus|Pro充值

GPT充值

支持 ChatGPT Plus / Pro 充值服务,支付便捷,自动发货,售后可查。

GPT Image 2中文站

GPT Image 2中文站

AI 图片生成平台

GPT Image 2 是面向用户的 AI 图片生成平台,支持文生图、图生图及多模型创意工作流。

Vecbase

Vecbase

你的AI Agent团队

Vecbase 是专为 AI 团队打造的智能工作空间,将数据管理、模型协作与知识沉淀整合于一处。算法、产品与业务在同一平台无缝协同,让从数据到 AI 应用的落地更快一步。

音述AI

音述AI

全球首个AI音乐社区

音述AI是全球首个AI音乐社区,致力让每个人都能用音乐表达自我。音述AI提供零门槛AI创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。

QoderWork

QoderWork

阿里Qoder团队推出的桌面端AI智能体

QoderWork 是阿里推出的本地优先桌面 AI 智能体,适配 macOS14+/Windows10+,以自然语言交互实现文件管理、数据分析、AI 视觉生成、浏览器自动化等办公任务,自主拆解执行复杂工作流,数据本地运行零上传,技能市场可无限扩展,是高效的 Agentic 生产力办公助手。

lynote.ai

lynote.ai

一站式搞定所有学习需求

不再被海量信息淹没,开始真正理解知识。Lynote 可摘要 YouTube 视频、PDF、文章等内容。即时创建笔记,检测 AI 内容并下载资料,将您的学习效率提升 10 倍。

AniShort

AniShort

为AI短剧协作而生

专为AI短剧协作而生的AniShort正式发布,深度重构AI短剧全流程生产模式,整合创意策划、制作执行、实时协作、在线审片、资产复用等全链路功能,独创无限画布、双轨并行工业化工作流与Ani智能体助手,集成多款主流AI大模型,破解素材零散、版本混乱、沟通低效等行业痛点,助力3人团队效率提升800%,打造标准化、可追溯的AI短剧量产体系,是AI短剧团队协同创作、提升制作效率的核心工具。

seedancetwo2.0

seedancetwo2.0

能听懂你表达的视频模型

Seedance two是基于seedance2.0的中国大模型,支持图像、视频、音频、文本四种模态输入,表达方式更丰富,生成也更可控。

nano-banana纳米香蕉中文站

nano-banana纳米香蕉中文站

国内直接访问,限时3折

输入简单文字,生成想要的图片,纳米香蕉中文站基于 Google 模型的 AI 图片生成网站,支持文字生图、图生图。官网价格限时3折活动

扣子-AI办公

扣子-AI办公

职场AI,就用扣子

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

下拉加载更多