__ _ __ _____/ / ___/ _ \/_ __/
/ ' \/ // / _ / (_ / ___/ / /
/_/_/_/\_,_/\_,_/\___/_/ /_/
------------------------------
欢迎体验MUD版chatGPT,本项目已开源🥰🥰🥰🥰
- 在线体验地址:https://chat.mud.ren
- 客户端登录:chat.mud.ren 端口:6666
接口长期开放,除非我没余额了,另外请不要故意搞破坏
███╗ ███╗██╗ ██╗██████╗ ██████╗ ██████╗ ████████╗
████╗ ████║██║ ██║██╔══██╗██╔════╝ ██╔══██╗╚══██╔══╝
██╔████╔██║██║ ██║██║ ██║██║ ███╗██████╔╝ ██║
██║╚██╔╝██║██║ ██║██║ ██║██║ ██║██╔═══╝ ██║
██║ ╚═╝ ██║╚██████╔╝██████╔╝╚██████╔╝██║ ██║
╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝
chatGPT MUD聊天室版(bbs.mud.ren)
直接发言提问,和chatGPT的会话内容仅自己可见
如果你要和在线网友聊天而不是和chatGPT会话,请输入chat 聊天内容
本项目使用LPC语言开发,前端功能使用xterm.js实现,样式使用bulma框架。
因为2023年3月1日开放gpt-3.5的API后接口国内无法访问,请使用魔法突破封印
安装说明
- 下载项目源码
git clone https://github.com/oiuv/chatGPT.git
# 国内镜像
git clone https://gitee.com/oiuv/chatGPT.git
- 安装OpenAI包(可选|备用)
pip install openai
项目使用 curl 调用API,无需安装openai
配置密钥
- 配置OPENAI密钥:复制
config_example.json
为config.json
,在此文件中配置你的密钥和其它参数。 - 配置CURL命令:修改文件
config.cfg
中external_cmd_1 : /usr/bin/curl
为 curl 指令在你系统中的路径,如果你是windows系统,请修改external_cmd_2
。 - 配置Python命令:修改文件
config.cfg
中external_cmd_3
为你系统中python指令的路径,如果是windows系统请修改external_cmd_4
。
启动项目
使用FluffOS驱动运行项目
- 第一次请运行
build.sh
脚本编译驱动
./build.sh
- 运行
run.sh
脚本启动服务
./run.sh
- 客户端连接
- 浏览器访问:http://127.0.0.1:8080
- 客户端访问:telnet 127.0.0.1 6666
windows系统请自己编译或访问bbs.mud.ren下载已编译好的驱动
使用说明
提问
输入昵称登录后发文字可以直接向chatGPT提问。
如果你需要为chatGPT指定角色定位,请使用setGPT
指令(区分大小定),如:
setGPT 你来充当翻译家,你的目标是把任何语言翻译成中文
注意:如果直接输入setGPT
或setGPT -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;
}