codefuse-chatbot/README.md

8.6 KiB
Raw Blame History

Codefuse-ChatBot: Development by Private Knowledge Augmentation

ZH doc EN doc License Open Issues

本项目是一个开源的 AI 智能助手专为软件开发的全生命周期而设计涵盖设计、编码、测试、部署和运维等阶段。通过知识检索、代码检索工具使用和沙箱执行Codefuse-ChatBot 能解答您开发过程中的各种专业问题、问答操作周边独立分散平台。

🔔 更新

  • [2023.11.15] 增加基于本地代码库的问答增强模式
  • [2023.09.15] 本地/隔离环境的沙盒功能开放基于爬虫实现指定url知识检索

📜 目录

🤝 介绍

💡 本项目旨在通过检索增强生成Retrieval Augmented GenerationRAG、工具学习Tool Learning和沙盒环境来构建软件开发全生命周期的AI智能助手涵盖设计、编码、测试、部署和运维等阶段。 逐渐从各处资料查询、独立分散平台操作的传统开发运维模式转变到大模型问答的智能化开发运维模式,改变人们的开发运维习惯。

  • 📚 知识库管理DevOps专业高质量知识库 + 企业级知识库自助构建 + 对话实现快速检索开源/私有技术文档
  • ⌨️ 代码知识库管理:支持本地代码库导入和代码结构解析 + 对话实现快速检索本地代码
  • 🐳 隔离沙盒环境:实现代码的快速编译执行测试
  • 🔄 React范式支撑代码的自我迭代、自动执行
  • 🛠️ Prompt管理实现各种开发、运维任务的prompt管理
  • 🔌 丰富的领域插件:执行各种定制开发任务
  • 🚀 对话驱动:需求设计、系分设计、代码生成、开发测试、部署运维自动化

🌍 依托于开源的 LLM 与 Embedding 模型,本项目可实现基于开源模型的离线私有部署。此外,本项目也支持 OpenAI API 的调用。

👥 核心研发团队长期专注于 AIOps + NLP 领域的研究。我们发起了 Codefuse-ai 项目,希望大家广泛贡献高质量的开发和运维文档,共同完善这套解决方案,以实现“让天下没有难做的开发”的目标。

图片

🎥 演示视频

为了帮助您更直观地了解 Codefuse-ChatBot 的功能和使用方法,我们录制了一系列演示视频。您可以通过观看这些视频,快速了解本项目的主要特性和操作流程。

🧭 技术路线

图片
  • 🕷️ Web Crawl:实现定期网络文档爬取,确保数据的及时性,并依赖于开源社区的持续补充。
  • 🗂️ DocLoader & TextSplitter:对从多种来源爬取的数据进行数据清洗、去重和分类,并支持私有文档的导入。
  • 🗄️ Vector Database结合Text Embedding模型对文档进行Embedding并在Milvus中存储。
  • 🔌 Connector作为调度中心负责LLM与Vector Database之间的交互调度基于Langchain技术实现。
  • 📝 Prompt Control从开发和运维角度设计为不同问题分类并为Prompt添加背景确保答案的可控性和完整性。
  • 💬 LLM默认使用GPT-3.5-turbo并为私有部署和其他涉及隐私的场景提供专有模型选择。
  • 🔤 Text Embedding默认采用OpenAI的Text Embedding模型支持私有部署和其他隐私相关场景并提供专有模型选择。
  • 🚧 SandBox对于生成的输出如代码为帮助用户判断其真实性提供了一个交互验证环境基于FaaS并支持用户进行调整。

具体实现明细见:技术路线明细

模型接入

有需要接入的model可以提issue

model_name model_size gpu_memory quantize HFhub ModelScope
chatgpt - - - - -
codellama-34b-int4 34b 20g int4 coming soon link

🚀 快速使用

请自行安装 nvidia 驱动程序,本项目已在 Python 3.9.18CUDA 11.7 环境下Windows、X86 架构的 macOS 系统中完成测试。

1、python 环境准备

  • 推荐采用 conda 对 python 环境进行管理(可选)
# 准备 conda 环境
conda create --name devopsgpt python=3.9
conda activate devopsgpt
  • 安装相关依赖
cd codefuse-chatbot
# python=3.9notebook用最新即可python=3.8用notebook=6.5.6
pip install -r requirements.txt

2、沙盒环境准备

# 构建沙盒环境的镜像notebook版本问题见上述
bash docker_build.sh

3、模型下载可选

如需使用开源 LLM 与 Embedding 模型可以从 HuggingFace 下载。 此处以 THUDM/chatglm2-6bm 和 text2vec-base-chinese 为例:

# install git-lfs
git lfs install

# install LLM-model
git lfs clone https://huggingface.co/THUDM/chatglm2-6b

# install Embedding-model
git lfs clone https://huggingface.co/shibing624/text2vec-base-chinese

4、基础配置

# 修改服务启动的基础配置
cd configs
cp model_config.py.example model_config.py
cp server_config.py.example server_config.py

# model_config#11~12 若需要使用openai接口openai接口key
os.environ["OPENAI_API_KEY"] = "sk-xxx"
# 可自行替换自己需要的api_base_url
os.environ["API_BASE_URL"] = "https://api.openai.com/v1"

# vi model_config#95 你需要选择的语言模型
LLM_MODEL = "gpt-3.5-turbo"

# vi model_config#33 你需要选择的向量模型
EMBEDDING_MODEL = "text2vec-base"

# vi model_config#19 修改成你的本地路径如果能直接连接huggingface则无需修改
"text2vec-base": "/home/user/xx/text2vec-base-chinese",

# 是否启动本地的notebook用于代码解释默认启动docker的notebook
# vi server_config#35True启动docker的notebookfalse启动local的notebook
"do_remote": False,  /  "do_remote": True,

5、启动服务

默认只启动webui相关服务未启动fastchat可选

# 若需要支撑codellama-34b-int4模型需要给fastchat打一个补丁
# cp examples/gptq.py ~/site-packages/fastchat/modules/gptq.py
# dev_opsgpt/service/llm_api.py#258 修改为 kwargs={"gptq_wbits": 4},

# start llm-service可选
python dev_opsgpt/service/llm_api.py
cd examples
# python ../dev_opsgpt/service/llm_api.py 若需使用本地大语言模型,可执行该命令
bash start_webui.sh

🤗 致谢

本项目基于langchain-chatchatcodebox-api,在此深深感谢他们的开源贡献!