本次项目实训我们小组的任务要点为使用GLM4-LangChain开发一款金融方面的智能大模型问答助手
预期功能有:
1、 上传文档、创建知识库;
2、 选择知识库,检索用户提问的相关片段;
3、 提供专业的金融解读和分析,获取大模型回答;
4、 历史对话记录;
5、 web UI
在本次项目实训中,我主要负责langchain开发工作,前端实现和web组件优化和前端完善。本周我们小组经过讨论初步确定了现阶段的分工和任务,开始着手准备工作。我主要了解了大模型开发的相关知识和LangChain的相关知识,并进行了前端环境的搭建。
一、大模型开发相关知识的了解和学习
我们了解到,开发大模型相关应用,其技术核心点虽然在大语言模型上,但一般通过调用 API 或开源模型来实现核心的理解与生成,通过 Prompt Enginnering 来实现大语言模型的控制,因此,虽然大模型是深度学习领域的集大成之作,大模型开发却更多是一个工程问题。
在大模型开发中,我们一般不会去大幅度改动模型,而是将大模型作为一个调用工具,通过 Prompt Engineering、数据工程、业务逻辑分解等手段来充分发挥大模型能力,适配应用任务,而不会将精力聚焦在优化模型本身上。
同时,以调用、发挥大模型为核心的大模型开发与传统的 AI 开发在整体思路上有着较大的不同。大语言模型的两个核心能力:指令遵循与文本生成提供了复杂业务逻辑的简单平替方案。
传统的 AI 开发:首先需要将非常复杂的业务逻辑依次拆解,对于每一个子业务构造训练数据与验证数据,对于每一个子业务训练优化模型,最后形成完整的模型链路来解决整个业务逻辑。
大模型开发:用 Prompt Engineering 来替代子模型的训练调优,通过 Prompt 链路组合来实现业务逻辑,用一个通用大模型 + 若干业务 Prompt 来解决任务,从而将传统的模型训练调优转变成了更简单、轻松、低成本的 Prompt 设计调优。
同时,在评估思路上,大模型开发与传统 AI 开发也有质的差异。
传统 AI 开发:需要首先构造训练集、测试集、验证集,通过在训练集上训练模型、在测试集上调优模型、在验证集上最终验证模型效果来实现性能的评估。
大模型开发:流程更为灵活和敏捷。从实际业务需求出发构造小批量验证集,设计合理 Prompt 来满足验证集效果。然后,将不断从业务逻辑中收集当下 Prompt 的 Bad Case,并将 Bad Case 加入到验证集中,针对性优化 Prompt,最后实现较好的泛化效果。
二、LangChain的学习与了解
LangChain是一个框架,用于开发由大型语言模型(LLM)驱动的应用程序。
他主要拥有 2 个能力:
- 可以将 LLM 模型(大规模语言模型)与外部数据源进行连接
- 允许与 LLM 模型进行交互
具体而言,该框架由以下开源库组成:
langchain-core
:基本抽象和 LangChain 表达式语言。langchain-community
:第三方集成。- 合作伙伴包(例如
langchain-openai
、langchain-anthropic
等):一些集成被进一步拆分为仅依赖于langchain-core
的轻量级包。
- 合作伙伴包(例如
langchain
:构成应用程序认知架构的链、代理和检索策略。- langgraph:通过将步骤建模为图中的边和节点,使用 LLM 构建健壮且有状态的多参与者应用程序。
- langserve:将LangChain链部署为REST API。
基础功能
- 支持多种模型接口,比如 OpenAI、Hugging Face、AzureOpenAI …
- Fake LLM,用于测试
- 缓存的支持,比如 in-mem(内存)、SQLite、Redis、SQL
- 用量记录
- 支持流模式