基于 ChatGPT 的客服系统

基于 ChatGPT 的客服系统

在 OpenAI 放出 gpt-3.5-turbo 模型之后,我们决定使用 AI 来加速目前我们重复率最高的工作:客服.

不过考虑到我们的帮助手册及FAQ总字数已经超过30万字,而 gpt-3.5-turbo 每次对话最多只能支持 4096 个 Token (经过我们的测试,这大概是三千多个简中字),还需要考虑客户的问题,回答和系统配置占用的字符.所以我们需要一个办法来让 gpt-3.5-turbo 可以在 2000 字左右时了解我们的的帮助手册.

在参考了 OpenAI Cookbook:Question_answering_using_embeddings , OpenAI Cookbook:web-crawl-q-and-a 以及 paul-graham-gpt 之后,我们决定按照以下方法来实现:

  1. 使用语雀的 API 获取我们的帮助手册及FAQ
  2. 获得到每篇文章后,按照 markdown 的标题进行分割,每个小标题对应一块语料.并在数据库中记录对应的网址和锚点,方便后续输出时同步给出参考文档.
  3. 使用 openai embeddings 获取每块语料的向量表示.
  4. 对用户的提问也使用 openai embeddings 提取向量.
  5. 使用 余弦相似度 计算用户提问和每块语料的相似度,并返回相似度最高10块的语料.
  6. 对每块语料按照相似度从高到低的顺序 对 token 进行求和,获取小于 2000 时的语料列表.
  7. 按照以下格式给与 gpt-3.5-turbo 的 system role 输入.
     你是 $$$ 系统的客服,请按照后续给予的使用手册回答用户的问题.
     使用手册内容如下:
    
  8. 获取 gpt-3.5-turbo 的输出.

目前处于安全考虑, gpt-3.5-turbo 的输出仅发送到客服汇总群,并由客服人员进行回复.同时给与客服相关语料的标题及链接,方便客服人员进行回复.

Written on March 6, 2023