Skip to content

制作懂人情世故的大语言模型 | 提示词工程、RAG、Agent、微调全流程教程

License

Notifications You must be signed in to change notification settings

SocialAI-tianji/Tianji

Repository files navigation

天机 Tianji

English

日本語

🍵 在线体验懂人情世故的天机 prompt应用知识库应用Agent应用

在上海人工智能实验室 OpenXLab 体验人情世故微调模型:送祝福模块敬酒礼仪文化

📚 查看 使用文档

🍓 在 🤗 huggingface 获取天机的 所有数据

💡 有疑问或功能请求,欢迎 创建一个 issue ,或者加入我们的 微信社区群

对标 OpenAI 的 SocialAI 首页

📰 News

🔥🔥 News: 2024.10.08: 我们完成了第一阶段所有知识库对话的更新,数据更新至 huggingface,你可以直接在该链接进行体验。

🔥 News: 2024.10.05: 我们重构了天机的Agent 模块,加入网络搜索功能及功能可配置参数表,具体可见源码

🔥 News: 2024.09.02: 我们更新了第一款专注敬酒场景的知识库对话模型

🔥 News: 2024.08.31: 我们重构了仓库组织结构,更新了相关工具代码以及README。彻底更新了 langchain 知识库问答 相关内容以及对应 demo,让项目更适合一键学习使用。

🔥News: 2024.07.16: 我们发布了第一款们发布了第一款专注敬酒场景的天机模型, 对应敬酒语料

🔥News: 2024.07.14: 更新了新版的送祝福模块 支持更多风格切换,数据已开源至 huggingface

🔥News: 2024.05.04: 我们发布了以《化解"尴尬"场合》为例的微调数据获取、制造教程,对应数据开源至 huggingface

🔥News: 2024.05.02: 我们发布了有关人情世故大模型-送祝福的数据收集到微调过程的全流程可复现文档及其对应数据配置辅助脚本

🍵 News: 2024.02.01: 🧑‍🚀 我们发布了有关 promptAgent应用、知识库x、模型微调(基于InternLM2)的初版体验地址,将仓库转为开放。

⭐ 运行示例

天机虽不可泄漏,但总有一款适合你

运行prompt版本天机,感受放飞自我的答复

prompt应用1 prompt应用2

运行知识库版本天机,获得详细的人情世故指导

化解尴尬场合

化解尴尬场合

如何说对话

如何说对话

敬酒礼仪文化

敬酒礼仪文化

矛盾冲突应对

矛盾冲突应对

请客礼仪文化

请客礼仪文化

送礼礼仪文化

送礼礼仪文化

运行微调后送祝福天机,一片真诚送出祝福

送祝福天机

你将在该项目中学会 🍉

学完全部内容,你将获得大语言模型入门级全栈应用开发能力。

目录

快速开始 💫

环境安装

在本项目中,执行下列指令即可完成项目的安装

pip install -e .

key配置

为确保项目正常运行,请在项目内新建.env文件,并在其中设置你的API密钥,你可以根据下列例子写入对应的 key,即可成功运行调用,目前默认使用 siliconflowZhipuAI,你可以获取对应token即可使用。

当前 Pormpt demo 使用 ZhipuAI api,rag 与 agent demo 使用 Siliconflow api,你可以填写这两者调用密钥,即可使用 tianji 的全部功能。

OPENAI_API_KEY=
ZHIPUAI_API_KEY=

如果在从Hugging Face下载模型时遇到速度极慢或无法下载的问题,请在.env文件中设置HF_ENDPOINT的值为https://hf-mirror.com。请注意,某些Hugging Face仓库可能需要访问权限(例如Jina Ai)。为此,请注册一个Hugging Face账号,并在.env文件中添加HF_TOKEN。你可以在这里找到并获取你的token。

HF_HOME='temp/huggingface_cache/'
HF_ENDPOINT='https://hf-mirror.com'
OPENAI_API_KEY=
OPENAI_API_BASE=
ZHIPUAI_API_KEY=
OPENAI_API_MODEL=
HF_TOKEN=
TAVILY_API_KEY=

如果你想要结合 Agent 中的网络搜索工具给出更好的回答,你需要填写上述环境变量的 TAVILY_API_KEY 进行搜索请求,你可以在 TAVILY 官网获取体验免费密钥(个人免费额度)

运行

以下给出 prompt 以及 agent 的相关应用方式,在运行前请确保你已经新建.env文件:

# 运行prompt webui前端
python3 run/tianji_prompt_webui.py

# 运行agent前端
streamlit run run/metagpt_webui.py

# 运行langchain前端
python run/demo_rag_langchain_onlinellm.py

开发环境配置

在进行项目开发与贡献之前,在保证key的正确设定后,你还需要在提交 pull request 前进行格式检查。你可以参考下列方式进行 pre-commit 的安装,在 commit 环节将会看到变更文件格式会被自动修改。

pip install pre-commit
pre-commit install
git add .
git commit -m "提交信息"
git push

这一步,你需要反复执行下列两步,直到 commit 成功 (该过程会帮助你自动修复绝大部分格式错误,但对于某些复杂格式需要自己手动根据提示修改。)

git add .
git commit -m "提交信息"

若全部成功,你将会看到类似如下信息显示:

[main 2333] rebuild code standard
 5 files changed, 4 insertions(+), 3 deletions(-)

路线图

  • 释放最简初版(涉及prompt、aigame、agent、知识库、模型微调)
  • 完成人情世故大模型-送祝福的模型微调数据收集到微调过程的可复现文档
  • 开源人情世故语料-送祝福至huggingface
  • 迭代更好的数据制造工具与清洗方案,开源数据清洗脚本
  • 完成 Agent 部分重构
  • 完成知识库部分迭代,开源至huggingface
  • 整理多维度数据,开源较完整人情世故语料
  • 加入意图识别模块,替代主动选择场景
  • 完成 Agent 部分文档
  • 补充文档(如何参考本项目构建自己的应用prompt、agent、知识库、微调应用)

技术路线

基于整理后的人情世故数据,人情世故大模型系统-天机包括了常见人际交往中的七大领域(具体可以参考 场景分类 中的场景细化细节),其中大体可分为:

1.敬酒礼仪文化 Etiquette
  不惧碰杯,酒席桌上一条龙
2.请客礼仪文化 Hospitality
  友好地展示你的友好
3.送礼礼仪文化 Gifting
  此礼非礼,直击人心
4.送祝福 Wishes
  承包你的所有祝福语
5.如何说对话 Communication
  据说是低情商救星
6.化解"尴尬"场合 Awkwardness
  没心没肺,找回自我
7.矛盾&冲突应对 Conflict
  《能屈能伸》

结合这些领域,Tianji涉及到的技术路线共有四种:

  • 纯prompt(包括AI游戏):内置 system prompt 基于大模型自身能力对话。
  • Agent(MetaGPT等):利用 Agent 架构的得到更丰富、更定制化详细的回答。
  • 知识库:直接检索人情世故法则(比如餐桌上一般怎么喝酒)。
  • 模型训练:基于不同优秀的模型基座,在积累大量数据的情况下进行Lora微调或全量微调。

您可以在 tianji 目录下找到四种路线的对应源码,如果您想参考 Tianji 的项目架构、数据管理、技术路线复刻出属于自己的垂直领域 AI 应用,欢迎 fork 或者直接参考,我们将会开源所有包括从项目的起步、数据的方向探索、数据构建与管理、AI应用从0制作、领域(比如人情世故)与技术路线的深入结合的全过程;我们希望看到 AI 原生应用在生活中进一步的加速推进。

目录说明

assets/:静态图片文件
docs/:所有文档目录
run/: 包括了各类演示用前端
temp/:运行时临时文件目录,包含各类模型文件
test/:这里存放了各类功能的测试文件,包括核心模块以及大语言模型单独运行的单元测试
tianji/:源代码目录,包含主要逻辑与算法实现(prompt、agent、knowledges、finetune)
tools/:涵盖帮助收集数据、整理数据清洗语料的工具

如何参与本项目

提交第一个PullRequest

得益于良好的ci设施,你只需要参考示例PR,就可以很快提出自己的第一个 Prompt Pull request!

提交PR后,新的prompt将自动合并于 tianji/prompt 下的json文件中,方便一键调用。如果你不知道写什么,可以参考 场景分类 中的各类场景细化细节,写出不同人情世故领域的prompt。

如何复刻本项目

该项目的初衷,第一是为了让AI学会核心技术,第二是让更多人(领域/行业)可以构建属于自己的AI系统,加速AI对每一个领域的渗透。你可以通过以下方式来学习该项目:

你可以 fork 本项目修改,创造出新的垂直领域应用:

  • 租房助手(agent)
  • 带娃助手(数据收集与知识库)
  • 生活指南(数据收集与知识库) ......

贡献者

有些贡献者没有Github账户,我们发自内心感谢每一位贡献者,谢谢有你们!,也欢迎你一起加入!

鸣谢

感谢下列所有人对本项目的帮助(不分前后),以及你的关注:

Star History

Star History Chart