0.9.1 • Published 11 months ago

process-builder v0.9.1

Weekly downloads
-
License
MIT
Repository
github
Last release
11 months ago

ProcessBuilder

介绍

ProcessBuilder 是一个由 AI 驱动的流程构建器,旨在为应用程序提供自然语言接口,实现功能的自动构建与调用。为开发人员提供了无缝的流程构建接口,只需定义基本的节点,剩下的交给 ProcessBuilder 来处理。

  • 🤖 为应用与用户提供自然语言接口
  • 🛠️ 提供无缝的节点定义模式,便于开发
  • 🧾 可定制的流程生成策略,适配不同开发领域(暂未实现)

安装

包管理器

使用npm安装:

npm install process-builder

安装后可以使用 importrequire 引入模块。

ES 模块:

import { AgentWenxin, ProcessContainer } from "process-builder";

CommonJS 模块:

const { AgentWenxin, ProcessContainer } = require("process-builder");

例子

import { AgentWenxin, ProcessContainer } from "process-builder";
// const { AgentWenxin, ProcessContainer } = require("process-builder");  // 也可以使用ES模块


// 1. 创建 ProcessContainer 实例

// 使用默认的 IAgentApi 实现
const agent = new AgentWenxin({
    accessToken: "你的 access token",
    // 其他配置项
});
// 实例化 ProcessContainer 对象
const processContainer = new ProcessContainer({ agent });


// 2. 定义一些函数与常量

function add(a: number, b: number): number {
    return a + b;
}

function subtract(a: number, b: number): number {
    return a - b;
}

const pi = 3.14159;


// 3. 将函数与常量注册到 ProcessContainer 中

processContainer.manager.registerFunction(add, {
    name: "add",
    description: "将两数相加 a+b",
    parameters: {
        type: "object",
        properties: {
            a: {
                type: "number",
                description: "数字1"
            },
            b: {
                type: "number",
                description: "数字2"
            }
        }
    },
    responses: {
        type: "object",
        properties: {
            result: {
                type: "number",
                description: "两数相加的结果"
            }
        }
    }
});

processContainer.manager.registerFunction(subtract, {
    name: "subtract",
    description: "将两数相减 a-b",
    parameters: {
        type: "object",
        properties: {
            a: {
                type: "number",
                description: "数字1"
            },
            b: {
                type: "number",
                description: "数字2"
            }
        }
    },
    responses: {
        type: "object",
        properties: {
            result: {
                type: "number",
                description: "两数相减的结果"
            }
        }
    }
});

processContainer.manager.registerConstant(pi, {
    name: "pi",
    description: "圆周率PI",
    define: {
        type: "number"
    }
});


// 4. 根据自然语言生成并执行流程

(async () => {
    // 发送消息,使用自然语言
    const processResult1 = await processContainer.chat.send(
        "PI与自身二倍的差是多少?"
    );
    console.log(processResult1);

    // 执行流程
    const processResult2 = processContainer.manager.performProcess();
    console.log(processResult2);
})();

注意:

  1. 请替换 你的 access token 为你自己的 access token。
  2. 如果使用默认 IAgentApi 实现,请确保 CORS 已正确配置。

API

ProcessContainer
方法/属性传入参数返回值描述
constructor(config: IModuleConfig)IModuleConfig 对象ProcessContainer 实例构造函数,初始化 ProcessContainer 实例
managervoidFlowManager 实例
chatvoidFlowChat 实例
getManager()FlowManager 实例获取 FlowManager 实例
getChat()FlowChat 实例获取 FlowChat 实例
IModuleConfig
方法/属性传入参数返回值描述
agentIAgentApi 对象配置项,指定使用的 Agent API,可以引入默认实现。
languageEnumLanguage指定语言环境,默认 EnumLanguage.ZN_CH
FlowManager
方法/属性传入参数返回值描述
performProcess()boolean(是否成功)从流程队列中取出流程并执行当前流程,返回是否成功
addProcess(processString: string | object)流程字符串或流程对象void添加流程字符串或流程对象
registerNode(target: T, define: UseNodeDefine)目标对象,节点定义void注册节点,包括方法和常量
registerFunction(target: T, describe: SubFunctionDefine)方法对象,方法描述对象void注册方法节点
registerConstant(target: T, describe: SubConstantDefine)常量对象,常量描述对象void注册常量节点
getNodeByName(name: string)节点 ID(字符串)IEntNode(节点对象)或 undefine(如果未找到)根据 节点 获取节点
getAllNodes()IEntNode[](节点对象数组)获取所有节点
FlowChat
方法/属性传入参数返回值描述
sessionHistoryIEntSession[](会话数组)会话历史记录,包含提问和回答
send(text: string)发送的消息(字符串)Promise(响应会话)或 null发送消息,返回消息响应

开发

拉取代码:

git clone https://github.com/SWdrift/process-builder.git
cd process-builder

安装依赖:

pnpm install

运行测试:

pnpm test

TODO List

  • 多语言支持
  • 完善错误处理机制
  • 规范化函数描述格式
  • 可配置规则引擎

关于

协议

MIT

0.9.1

11 months ago

0.7.0

11 months ago

0.6.0

11 months ago

0.5.0

11 months ago

0.4.0

11 months ago

0.2.0

11 months ago

0.1.0

11 months ago

0.0.0

11 months ago