1.0.1 • Published 7 months ago

lark-bot-gpt v1.0.1

Weekly downloads
-
License
-
Repository
-
Last release
7 months ago

lark-bot-gpt

介绍

lark-bot-gpt 分为以下几个模块:

  • 业务逻辑:ImMessageReceivedV1Service

    • 存储服务: databaseService

    • 大模型获取聊天回复服务:chatLLMService

    • 飞书聊天回复的服务: replyService

    • 日志服务:loggerService

  • ImMessageReceivedV1Service 中封装了一个基于GPT的机器人自动回复的全部业务逻辑,这个service依赖另外三个service。如果需要自己定义新的业务逻辑,可以写自己的service。

  • databaseService 中封装了存储相关的服务,BiTableService 是以多维表格为基础实现的存储服务,如果希望存储到数据库,可以换成自己的服务。同时,如果仍然使用 ImMessageReceivedV1Service ,在重写服务时注意继承 AbstractDatabaseService

  • chatLLMService 中封装了大模型相关的服务,AIDogService 是以 AIDog 为基础实现的大模型服务,如果希望使用其他的大模型,可以换成其他服务。同时,如果仍然使用 ImMessageReceivedV1Service ,在重写服务时注意继承AbstractChatLLMService

  • replyService 中封装了飞书机器人回复相关的服务,MessageCardService 是以消息卡片为基础实现的回复服务,如果希望使用其他的回复格式,可以换成自己的服务。同时,如果仍然使用 ImMessageReceivedV1Service ,在重写服务时注意继承AbstractReplyService

  • loggerService 中封装了日志相关的服务,没什么用,可以不传。

一、安装

npm install lark-bot-gpt

# 安装本模块需要的其他依赖,由于配置了 peerDependencies ,所以你必须安装它
npm install @larksuiteoapi/node-sdk axios log4js

二、快速开始

import { Domain, Client } from '@larksuiteoapi/node-sdk';
import { ImMessageReceivedV1Service, AIDogService, BiTableService, MessageCardService, ImMessageReceiveV1Event, Log4jsService } from 'lark-bot-gpt';

const appId = 'xxxxxxxxx';
const appSecret = 'xxxxxxxxxx';
const cards = {
  new_topic: 'xxxx',
  normal: 'xxxxx',
};
const tableAppToken = 'xxxxxxxx';
const jwtToken = 'xxxxxxxxx';

const client = new Client({
  appId,
  appSecret,
  domain: Domain.Feishu,
});

const services = {
  chatLLMService: new AIDogService({
    host: "xxxxxxx",
    models: "xxxxx",
    jwtToken,
  }),
  databaseService: new BiTableService(client, tableAppToken),
  replyService: new MessageCardService(client, {
    newTopicMessageCardTemplate: cards.new_topic,
    normalMessageCardTemplate: cards.normal,
  }),
  loggerService: new Log4jsService(),
};

const imMessageReceivedV1Service = new ImMessageReceivedV1Service(services);
await imMessageReceivedV1Service.reply(event);

三、使用自己的Service(具体写法可以参考以下代码,以下代码是源码中的抽象类,继承并实现自己的即可)

export abstract class AbstractReplyService<MessageType = any> extends Service {
  abstract replyNewTopicMessage(reply: any): Promise<MessageType | undefined>;
  abstract replyNormal(reply: any): Promise<MessageType | undefined>;
}

export abstract class AbstractChatLLMService<Message = any> extends Service {
  formatMessage(data: any) {
    return data as Message;
  }
  abstract getReply(list: Message[]): Promise<string>;
}

export abstract class AbstractDatabaseService<
  MessageRecord = any,
> extends Service {
  /**
   * 创建消息记录多维表格
   */
  abstract createTable(tableName: string): Promise<string | undefined>;

  /**
   * 查找或者创建多维表格
   */
  abstract findOrCreateTable(tableName: string): Promise<string | undefined>;

  /**
   * 保存消息记录,默认以 sender_id 为表格名称,也可自己指定
   */
  abstract saveMessageRecord(
    tableName: string,
    record: MessageRecord,
  ): Promise<void>;

  /**
   * 获取消息记录列表
   */
  abstract getTopicMessageRecords(
    tableName: string,
    topic_id: string,
  ): Promise<MessageRecord[]>;

  abstract getMessageTopic(
    tableName: string,
    message_id: string,
  ): Promise<string>;
}
1.0.1

7 months ago

1.0.0

7 months ago

1.0.0-alpha.15

7 months ago

1.0.0-alpha.14

7 months ago

1.0.0-alpha.13

7 months ago

1.0.0-alpha.12

7 months ago

1.0.0-alpha.10

7 months ago

1.0.0-alpha.9

7 months ago

1.0.0-alpha.8

7 months ago

1.0.0-alpha.7

7 months ago

1.0.0-alpha.6

7 months ago

1.0.0-alpha.5

7 months ago

1.0.0-alpha.4

7 months ago

1.0.0-alpha.3

7 months ago

1.0.0-alpha.2

7 months ago

1.0.0-alpha.1

7 months ago

1.0.0-alpha.0

7 months ago