背景
大概两年前,gpt 刚出来不久,在听播客的时候,听到一个 ai 客服系统的构建过程
安装软件之后,用户和之前一样,正常的和客户沟通、聊天,Ai 会在这个过程中持续学习。在收集一定语料之后,客服人员在沟通时候,会出现选项,5s 倒计时结束,最佳选项会被发送出去。如果觉得不满意,可以取消,客服自己重写。基于反馈的自动优化,这个系统越来越先进,人工的介入越来越少。
cursor 在今年推出了 Bugbot,研究发现,他使用了 max mode 模式,token 消耗很高,上下文达到了 200k。收费 40$/月。
系统设计
sequenceDiagram participant User as 用户 participant System as 审查系统 (CI/CD) participant AI_Model as AI 模型 participant Vector_DB as 向量数据库 %% --- 首次 Review 流程 --- Note over User, Vector_DB: 场景一:首次或无相似代码的 Review User->>+System: 提交代码 (触发 Review) System->>AI_Model: 1. 请求代码审查 (含上下文) System->>Vector_DB: 2. 存储代码片段 (用于未来匹配) AI_Model-->>System: 3. 返回 Review 建议 System-->>-User: 4. 显示 Review 建议 User->>+System: 5. 提交反馈 (有效/无效) System->>Vector_DB: 6. 将反馈与代码片段关联存储 deactivate System %% --- 基于反馈的下一次 Review 流程 --- Note over User, Vector_DB: 场景二:利用历史反馈的增强 Review User->>+System: 提交新代码 (触发 Review) System->>Vector_DB: 1. 检索相似代码片段和历史反馈 Vector_DB-->>System: 2. 返回匹配结果 System->>AI_Model: 3. 请求增强审查 (含新代码、相似代码、历史反馈) AI_Model-->>System: 4. 返回更精准的建议 System-->>-User: 5. 显示增强后的 Review 建议
在 cursor 和 github 的绑定中,是能够获取完整代码的。本身我们也是冲着完整代码去提交的,但是遇到问题比较多:
1. 上下文限制
2. 网络不通,我不能方便的获取代码。
webhook?
不太行,webhook 只有代码片段,不能提供足够的上下文,注定不会有好的结果。最终我们的业务形态变成了 chrome 插件。不管什么网络条件,总需要提交代码,web 操作。那通过 chrome 插件就能够无障碍的访问并获取相关的上下文。
通过 chrome 插件,也能方便的去操作用户的界面,和用户产生交互行为。
向量化
向量存储 mysql 肯定是不行的,pg 有一些插件能实现,资源有一定要求,最终我们选择了 Chroma
去实现。
Embeddings
选择的是 Gemini
, 可能后续也会考虑国内的模型,还需要测试效果。
总结
这个过程中遇到挺多的问题的,网络访问都搞了好几套方案。
实现比完美更重要,去做比等待更实际。
不要犹豫,有想法就去做,问题是可以解决的,我们注定就是要实现别人没有做过的产品,去实现别人没有实现的想法。