Skip to content

A chatbot/GraphRAG framework that creates multi-llm-agents from social platform user comments and let them debate on specific topics.

License

Notifications You must be signed in to change notification settings

wmdk200086/platform-war-public

 
 

Repository files navigation

平台大战对话框架

一个结合了知识图谱和RAG的多智能体对话框架,可以从不同社交平台的评论中提取并构建知识图谱数据库,让它们以各平台代表性的观点和表达方式,围绕一个话题展开辩论。

文件结构

API key配置文件是config.py。该程序基于moonshot-v1模型实现,需要在配置文件中填入从kimi开放平台申请的API key以正常运行。如果需要更换其他模型服务,需要同时修改API_BASE_URL和程序中相应调用大模型的部分(模型名称、特殊参数等)

知识图谱类的主文件是knowledgeGraph.py,具体实现主文件接口的组件类分别为graph_entity.pygraph_search.pygraph_storage.pygraph_visualization.py。用于RAG的嵌入模型配置文件为embedding_model.py

使用到知识图谱的两个工具类是knowledge_retriever.pyknowledgeGraphExtractor.py,分别用于信息检索和知识图谱提取。

平台大战对话的主程序是platform_war.py,相关UI和Agent类分别为platform_war_UI.pychat.py

环境配置

由于向量数据处理部分使用的faiss-gpu暂时只支持CUDA加速,所以本项目目前只支持Windows/Linux系统运行。

创建conda环境

conda create -n platform_war python=3.11.7
conda activate platform_war

启用gpu加速(可选)

安装电脑显卡版本匹配的CUDA和PyTorch, 例(具体版本请按电脑配置修改):

conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia

然后用以下命令安装FAISS的gpu版本

conda install -c conda-forge faiss-gpu

项目目录下安装依赖(必选)

pip install -r requirements.txt

如果前一步没有安装CUDA,需要将embedding_model.py中的

model_kwargs={"device": "cuda"}

修改为

model_kwargs={"device": "cpu"}

配置API(必选)

该程序基于moonshot-v1模型实现,需要在配置文件中填入从kimi开放平台申请的API key以正常运行。API key配置文件是config.py

图谱提取

knowledgeGraphExtractor.py可用于从指定格式的json文件中自动提取知识图谱。

在项目目录下新建data文件夹,放入需要提取的数据文件,命名为result.json(或者可以修改knowledgeGraphExtractor.py中的路径以使用其他文件名),然后运行knowledgeGraphExtractor.py

result.json需要遵循以下json格式:

{
  "item_id": {                 // 项目ID作为key
    "title": string,           // 标题
    "clusters": [              // 评论簇数组
      {
        "comments": [          // 评论内容数组
          string,
          ...
        ]
      }
    ]
  },
  "item_id": {
    "title": string,
    "clusters": [
      {
        "comments": [
          string,
          ...
        ]
      }
    ]
  },
  ...
}

平台辩论

从原始数据提取完知识图谱后,会在项目目录下生成相应的知识图谱数据库。

可以将platform_war.pyplatform_war_UI.pychat.py中的PLATFORM_NAMEPLATFORM_KNOWLEDGE_BASE修改为对应的数据库名称和路径。

运行platform_war.py以开始平台辩论。

预提取数据库

如果想复现项目视频中的效果,需要单独下载三个平台的向量数据库。

百度网盘下载链接:

https://pan.baidu.com/s/1Ki0Sym9dmM76e6ghR6P8jQ?pwd=j3ih 提取码: j3ih

谷歌云盘下载链接:

https://drive.google.com/drive/folders/1kaXPSTjVaI1LP9lPtu8XhCnqjgWVlajY?usp=sharing

使用方法:

解压缩,并将bilibili_knowledge_baseweibo_knowledge_basezhihu_knowledge_base三个文件放在项目目录下。

运行platform_war.py以开始平台辩论。

已知问题

  • UI缺乏自适应,在不同尺寸的窗口中可能存在显示不全/错位的问题。
  • 对话轮次超出屏幕范围后,新对话会与旧对话互相覆盖。

参考

微软GraphRAG项目 https://github.com/microsoft/graphrag

About

A chatbot/GraphRAG framework that creates multi-llm-agents from social platform user comments and let them debate on specific topics.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%