Task03-大模型开发流程及架构-动手学习大模型应用开发
20231120 01:40 by elderman
传统AI应用开发和基于大模型的应用开发的区别在于,从“为每一个子业务单独训练模型”变为“为每一个子业务单独设计prompt或prompt链”,难易度下降许多。
应用开发的主要流程为:
1 确定项目目标->为完成目标设计多个子功能
2 选择并搭建应用结构:大模型开发一般选择 向量数据库+prompt+通用大模型。为了方便开发,可以使用langchain等架构。后续做改进的话,可以尝试多个领域大模型组成多智能体结构。 一个知识库问答应用的整体流程一般为:用户输入->读取数据库相关信息->大模型基于上下文和数据库信息进行输出。
3 搭建数据库:大模型需要对语义向量进行检索,所以一般用向量数据库。本学习文档给的例子时chroma
4 prompt初始化:先收集关于业务的诸多可能问答,构建出一个小型验证/评估集。基于此验证集初步撰写一个具有基础功能的prompt,后续prompt的迭代也可以通过这个验证集来评估。
=== 小型验证集的概念 from gpt4 ===
小型验证集是一个用于评估和优化模型性能的数据集,它通常包含了一些实际业务场景中可能遇到的问题和对应的理想答案。这个数据集的目的是为了在开发过程中提供一个快速、有效的反馈机制,帮助我们理解模型的表现,并根据这些反馈进行迭代优化。
以"基于大模型的个人知识库助手"为例,小型验证集可能包括以下内容:
1. 问题:这些问题应该覆盖知识库助手可能遇到的各种类型的查询,例如关于特定主题的事实查询、对某个观点的解释、对某个概念的定义等。问题应该尽可能地模拟实际用户可能提出的问题。
2. 理想答案:对于每个问题,都应该有一个或多个理想的答案。这些答案应该是准确、全面、清晰的,能够满足用户的信息需求。
例如:
问题:什么是机器学习?
理想答案:机器学习是一种人工智能(AI)的应用,它提供了系统能力通过经验学习和改进。在大量数据的输入下,机器学习算法会找出数据的模式,并根据这些模式做出预测或决策,而无需人为编程来执行特定任务。
问题:我应该如何开始学习编程?
理想答案:学习编程的方法有很多,以下是一些常见的步骤:1. 选择一种编程语言开始学习,例如Python或Java。2. 使用在线教程、书籍或编程课程来学习基础知识。3. 通过实践项目来提高技能,例如编写自己的程序或参与开源项目。4. 不断学习新的编程语言和技术,以适应不断变化的技术环境。
通过这样的小型验证集,我们可以评估知识库助手在处理各种类型问题时的表现,并根据结果进行优化。
======
5 prompt迭代:不断的试错,找出当前prompt下会产生糟糕回复的案例/提问,用这种”bad case”优化prompt。(还可以塞少量对话样本?)
6 前后端搭建:一个重头戏,也是我这次要重点学习的步骤。此次学习,将给出Gradio和streamlit两种快速开发demo的框架。虽然我没学过,但这两个名称真是老熟人了。
7 上线,体验,优化:如果你用的是openai chatgpt接口,那你还得想想怎么在服务器上搞端口转发。蹲万能的群友给一个教程。
此次学习文档中结合【基于个人知识库的问答助手】项目,对上面的步骤给处理比较具体的内容。