mud版chatGPT开源项目,欢迎体验


  __ _  __ _____/ / ___/ _ \/_  __/
 /  ' \/ // / _  / (_ / ___/ / /
/_/_/_/\_,_/\_,_/\___/_/    /_/
------------------------------

欢迎体验MUD版chatGPT,本项目已开源🥰🥰🥰🥰

接口长期开放,除非我没余额了,另外请不要故意搞破坏


███╗   ███╗██╗   ██╗██████╗  ██████╗ ██████╗ ████████╗
████╗ ████║██║   ██║██╔══██╗██╔════╝ ██╔══██╗╚══██╔══╝
██╔████╔██║██║   ██║██║  ██║██║  ███╗██████╔╝   ██║
██║╚██╔╝██║██║   ██║██║  ██║██║   ██║██╔═══╝    ██║
██║ ╚═╝ ██║╚██████╔╝██████╔╝╚██████╔╝██║        ██║
╚═╝     ╚═╝ ╚═════╝ ╚═════╝  ╚═════╝ ╚═╝        ╚═╝

chatGPT MUD聊天室版(bbs.mud.ren)

直接发言提问,和chatGPT的会话内容仅自己可见

如果你要和在线网友聊天而不是和chatGPT会话,请输入chat 聊天内容


本项目使用LPC语言开发,前端功能使用xterm.js实现,样式使用bulma框架。

因为2023年3月1日开放gpt-3.5的API后接口国内无法访问,请使用魔法突破封印

mudGPT

安装说明

  1. 下载项目源码
git clone https://github.com/oiuv/chatGPT.git
# 国内镜像
git clone https://gitee.com/oiuv/chatGPT.git
  1. 安装OpenAI包(可选|备用)
pip install openai

项目使用 curl 调用API,无需安装openai

配置密钥

  1. 配置OPENAI密钥:复制 config_example.jsonconfig.json,在此文件中配置你的密钥和其它参数。
  2. 配置CURL命令:修改文件 config.cfgexternal_cmd_1 : /usr/bin/curl 为 curl 指令在你系统中的路径,如果你是windows系统,请修改external_cmd_2
  3. 配置Python命令:修改文件 config.cfgexternal_cmd_3为你系统中python指令的路径,如果是windows系统请修改external_cmd_4

启动项目

使用FluffOS驱动运行项目

  1. 第一次请运行build.sh脚本编译驱动
./build.sh
  1. 运行run.sh脚本启动服务
./run.sh
  1. 客户端连接

windows系统请自己编译或访问bbs.mud.ren下载已编译好的驱动

使用说明

提问

输入昵称登录后发文字可以直接向chatGPT提问。

如果你需要为chatGPT指定角色定位,请使用setGPT指令(区分大小定),如:

setGPT 你来充当翻译家,你的目标是把任何语言翻译成中文

注意:如果直接输入setGPTsetGPT -d则取消对chatGPT的角色限制。

默认会话有上下文关联,如果你要发起新的会话,可以输入chatGPT -d重置会话。

chatGPT回复的内容会自动备份到 log/chatGPT.md

聊天

如果只是和在线网友聊天请输入 chat 聊天内容

存档

当玩家使用手机号码完成认证后,可以记录个人会话并发送至指定邮箱,注意这里需要配置短信和邮件服务。

提示

输入who可以查看目前在线的用户列表,更多提示见tips.md

本项目功能未做任何限制,注意不要被人聊坏了,建议有兴趣的小伙伴自己完善


本项目的代码并不多,只有几个文件,写的比较随意,指令多数也是测试用的,对刚学LPC开发的小伙伴们来说,可以做为学习LPC的练习项目,自己从零重写一下,学习LPC就不要把自己的能力局限于现有MUD的二次开发上。

├── cmds
│   ├── chat.c
│   ├── chatGPT.c
│   ├── eval.c
│   ├── help.c
│   ├── loadall.c
│   ├── quit.c
│   ├── shutdown.c
│   ├── update.c
│   ├── variables.c
│   ├── who.c
│   └── wizard.c
├── config.cfg
├── driver.cfg
├── include
│   ├── ansi.h
│   └── globals.h
├── inherit
│   └── external_cmd.c
├── log
│   ├── author_stats
│   ├── debug.log
│   ├── domain_stats
│   ├── error_handler
│   └── log_error
├── MOTD
├── OPENAI_API_KEY
├── README.md
├── system
│   ├── kernel
│   │   ├── master.c
│   │   └── simul_efun.c
│   └── object
│       ├── login.c
│       ├── user.c
│       └── void.c
├── tips.md
├── tmp
└── www

这个项目实现的比较复杂的AI功能,如果是要在MUD中使用,可以直接参考以下指令优化:

nosave object User;

// `read_call_back` - As data becomes available, this function will be called with a string containing that data.
mixed read_cb(int fd, string arg)
{
    debug(arg);
    tell_object(User, arg);
}

// `write_call_back` - I am not 100% sure what would be written to the external command, but, this is a required parameter.
mixed write_cb(mixed *arg...)
{
    debug(arg);
}

// `close_call_back` - When the socket closes, this function is called.
mixed close_cb(int fd)
{
    socket_close(fd);
    tell_object(User, "-+- close_call_back -+-\n");
}

int main(object me, string arg)
{
#if efun_defined(external_start)
    string *args = ({"-s", "--location", "https://api.openai.com/v1/chat/completions", "-x", "192.168.1.11:11223", "-H", "Content-Type: application/json", "-H", "Authorization: Bearer sk-CXFmowAKIlOT7Wb0KNs77T3BlbkFJSHTlu6k4tp8FxZWnySF"});
    mapping data = ([
        "model":"gpt-3.5-turbo",
        "temperature":0.5,
        // "n":3,
        "messages":({
            (["role":"system", "content":"你是专业的AI助理。"]),
            (["role":"user", "content":arg])
        })
    ]);

    args += ({"-d", json_encode(data)});
    User = me;

    external_start(1, args, "read_cb", "write_cb", "close_cb");
#else
    cecho("当前驱动不支持 external_start 函数");
#endif

    return 1;
}
京ICP备13031296号-4