Skip to content

yuyouyu32/RolePlayerLLM

Repository files navigation

SGLMAgent

🦋 LLM Agent For SGA

Agent Framework Online server framework: Online Server

🚨 Preparation

1. 安装 PostgreSQL [Option 1]

sudo apt install -y postgresql-common
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
sudo apt install postgresql-15-pgvector
  • 修改配置文件使得python可以直接登录postgres账户

数据库配置文件:/etc/postgresql/15/main/postgresql.conf(端口 5432) sudo vim /etc/postgresql/15/main/pg_hba.conf

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
  • 服务启动命令
sudo service postgresql start   # 启动 sudo systemctl start postgresql
sudo service postgresql stop    # 关闭 sudo systemctl stop postgresql
sudo service postgresql restart # 重启 sudo systemctl restart postgresql
  • 安装完毕后,系统会创建一个数据库超级用户 postgres,密码为空。
sudo -i -u postgres
  • 这时使用以下命令进入 postgres,输出以下信息,说明安装成功(注意是否启动服务):
~$ psql
  postgres@online-chatbot:~$ psql
  psql (15.4 (Ubuntu 15.4-2.pgdg20.04+1))
  Type "help" for help.
postgres=# 

具体设置请看:https://lilithgames.feishu.cn/wiki/OYc2wtPHAi1qhckO48YcPIUVnqO

2. 安装 QuestDB [Option 1]

tar -xvf questdb-7.3.2-rt-linux-amd64.tar.gz
  • k8s 已安装路径: /mnt_data/questdb-7.3-rt-linux-amd64/bin
/mnt_data/questdb-7.3-rt-linux-amd64/bin/questdb.sh start # 启动
/mnt_data/questdb-7.3-rt-linux-amd64/bin/questdb.sh stop  # 停止

3. 安装Redis替换之前的Postgre和QuestDB [Option 2]

  1. 安装redis-stack

https://redis.io/docs

curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
sudo chmod 644 /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
sudo apt-get update
sudo apt-get install redis-stack-server
  1. 修复系统本地化设置(k8s Pods 需要设置)
  • 检查 /etc/locale.conf 文件并确保其中的本地化设置是正确的。例如:
LANG=en_US.UTF-8
  • 确保本地化设置已经安装
sudo locale-gen en_US.UTF-8
sudo update-locale LANG=en_US.UTF-8
  • 如果仍然无法使用redis-stack-server启动,长期下面的启动方法
redis-stack-server /mnt_data/redis_db/redis.conf --_localtime="en_US.UTF-8"
  1. 后台运行: sudo vim /mnt_data/redis_db/redis.conf 中的daemonize no 修改为
daemonize yes

当以后台运行的方式启动redis,redis会生成一个pid文件,redis.conf中可以设置pid文件的位置。当redis进程关闭时,redis会删除这个pid文件。

  1. 启动redis
redis-server /mnt_data/redis_db/redis.conf
  1. 关闭redis
redis-cli shutdown

4. 安装 python库

pip3 insatll -r requirement.txt
python -m spacy download zh_core_web_sm

5. 数据库初始化,启动数据库,模型server

cd op
sh run_server.sh

Index Building

6. 运行

python -m experiment.chat

💡 Purpose

    1. 辅助算法实验
    1. 基础的Agent服务功能

🐼 Feature

    1. 支持多用户和多角色,通过Session区分
    1. 支持时序存储查询(QuestDB),KV存储查询(PostGre),向量存储查询(PGvector)

🚀 Data Stream

参考:https://lilithgames.feishu.cn/wiki/W61GwLnEeisD3lk33NwcEzvGn6c

  • Persona:agent不可修改的KV数据库(管理员/world/story可修改)
  • Status:agent可修改的KV数据库
  • History:谁都不可修改的时序数据库
  • Knowledge:agent不可修改的Vector数据库(管理员/world/story可修改)
  • Memory:agent可修改的Vector数据库

🤖 Example

  • 运行代码参考 src/experiment/chat.py 和 src/experiment/story_talker.py

  • 以src/experiment/chat.py为例

      1. 初始化Agent的数据放在agent_init_data下面,格式参考kuma. kv数据库的key可以在config.json自定义,但是注意要和对应数据的key对应上.
      1. 参考src/experiment/algo.py定义prompt
      1. 修改src/experiment/chat.py定义agent调用流程
    session = Session()
    test_config = {"use_knowledge": True,
                   "use_memory": False,
                   "use_chat_history": True}
    bot = Agent(config = test_config) 
    bot.set_session(session)  // 切换session数据库操作都是针对目前的session
    bot.session_init() // 创建和session对应的数据库table并把数据从文件夹载入到数据库中如果已经存在数据库中则不需要init
    observation = {"query": "你是谁", "source": "志凯", "time": datetime.datetime.now()}
    test_rsp = bot.chat(observation)
    observation = {"query": "你喜欢我吗", "source": "志凯", "time": datetime.datetime.now()}
    test_rsp = bot.chat(observation)
    observation = {"query": "你认识hahaha吗", "source": "志凯", "time": datetime.datetime.now()}
    test_rsp = bot.chat(observation)
    observation = {"query": "博士去哪里了", "source": "志凯", "time": datetime.datetime.now()}
    test_rsp = bot.chat(observation)
    bot.clear()  //删除所有和目前session相关的数据库table
      1. 执行python -m experiment.chat

SFT

SFT

About

LLM Agent For Role Player

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published