Skip to content

hitokoto-osc/hitokoto-api

Folders and files

NameName
Last commit message
Last commit date
Nov 16, 2023
Apr 14, 2021
Nov 16, 2023
Jul 9, 2023
May 16, 2020
Apr 30, 2023
May 24, 2021
Jan 27, 2018
Nov 16, 2023
Jul 21, 2021
Jul 19, 2021
Aug 18, 2020
May 16, 2020
Dec 11, 2018
Jan 27, 2018
Aug 17, 2020
Nov 23, 2022
Nov 16, 2023
Aug 18, 2020
Nov 16, 2023
Oct 6, 2020
May 16, 2020
May 29, 2021
Jul 21, 2021
May 28, 2021
May 28, 2021
Mar 13, 2022
Mar 13, 2022
Nov 23, 2022
Nov 16, 2023
May 24, 2021
Nov 16, 2023
Nov 16, 2023

Repository files navigation

Hitokoto API

alt

Node.js CI DeepScan grade Code Climate

本项目是基于 Teng-koa 实现的一言接口程序。相较于单纯的一言程序,此框架提供了扩展性。

以下是相对于 v0 (PHP 版本)新加入的功能:

  • 请求统计
  • 支持返回 JS 回调函数
  • 支持 length 区间返回
  • 返回 JS 的支持
  • 支持 GBK 编码
  • 开源数据集
  • 支持遥测
  • 支持多进程运行
  • A/B 无感知更新数据
  • 官方扩展
    • 网易云音乐

我们一直致力于框架的可维护性与可扩展性,这也是为什么我们选择下一版本(v2)将使用 Go 编写。
由于历史问题,此框架存在着很多不足(需要重构)的地方,我们将分 2 个大版本完全重构掉这些问题(基于 Alinode, DeepScan, CodeClimate 分析结果)

关于贡献
您可以关注我们的开发者文档,我们在其中简单介绍了本框架的基本运作机理,这将会使你为此框架开发扩展异常容易(比如:加一个 QQ 音乐接口)

外部依赖

  • Redis

日记

  • 调试日记,警告信息都会打印在 Console
  • 日记文件只保存 error,保存在 ./data/logs/hitokoto_error.log

开始使用

常规使用

首先配置好 Node.js 环境(>=16.x),以及 yarn
请注意:本项目使用 Yarn v2,因此使用前请将你的 Yarn 版本更新至 v1.22.4 或更高版本。此外,项目目前不支持使用 NPM,CNPM,PNPM管理包依赖。

  1. 克隆仓库 git clone https://github.com/hitokoto-osc/hitokoto-api.git your_workdir
  2. 进入仓库 cd your_workdir
  3. 安装依赖 yarn workspaces focus --production
  4. 复制配置 cp config.example.yml ./data/config.yml,根据需要对其进行配置。
  5. 启动程序 yarn start

容器使用

  • 常规使用(需要预先安装好 redis),由于使用共享网络,请留意 8000 端口是否被占用。
docker run \
-v /path/to/your/data/dir:/usr/src/app/data \
--network host \
hitokoto/api

其他高深玩法(比如说不共享网络),还请自己摸索。

  • 我们提供 docker-compose 配置(提供 redis 依赖),有需要的可以自行下载使用。

Benchmark

以下数据仅供参考。测试环境为 Windows 10 20H2 x64, WSL 1. 实例启用了 8 个 Workers。由于是单机测试(而且不是 Ubuntu 真机),所以数据是娱乐数据。

$ node -v
v16.1.0
$ wrk -t8 -c1000 -d10s --latency http://127.0.0.1:8000
Running 10s test @ http://127.0.0.1:8000
  8 threads and 1000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    85.06ms   18.51ms 180.85ms   74.85%
    Req/Sec     1.47k   222.90     2.30k    82.00%
  Latency Distribution
     50%   87.66ms
     75%   95.61ms
     90%  104.91ms
     99%  124.37ms
  117210 requests in 10.06s, 125.89MB read
Requests/sec:  11650.18
Transfer/sec:     12.51MB
$ screenfetch
                          ./+o+-       root@DESKTOP-89TMCM6
                  yyyyy- -yyyyyy+      OS: Ubuntu 20.04 focal(on the Windows Subsystem for Linux)
               ://+//////-yyyyyyo      Kernel: x86_64 Linux 4.4.0-19041-Microsoft
           .++ .:/++++++/-.+sss/`      Uptime: 2d 22h 26m
         .:++o:  /++++++++/:--:/-      Packages: 712
        o:+o+:++.`..```.-/oo+++++/     Shell: fish 3.2.2
       .:+o:+o/.          `+sssoo+/    Disk: 540G / 625G (87%)
  .++/+:+oo+o:`             /sssooo.   CPU: Intel Core i7-10875H @ 16x 2.304GHz
 /+++//+:`oo+o               /::--:.   RAM: 11965MiB / 16288MiB
 \+/+o+++`o++o               ++////.
  .++.o+++oo+:`             /dddhhh.
       .+.o+oo:.          `oddhhhh+
        \+.++o+o``-````.:ohdhhhhh+
         `:o+++ `ohhhhhhhhyo++os:
           .o:`.syhhhhhhh/.oo++o`
               /osyyyyyyo++ooo+++/
                   ````` +oo+++o\:
                          `oo++.