Lang Chain介绍
快速开始
JS版:langchain-ai/langchainjs (github.com)
Python版:langchain-ai/langchain: ⚡ Building applications with LLMs through composability ⚡ (github.com)
论文链接:
Automated Repair of Programs from Large Language Models
Practical Program Repair in the Era of Large Pre-trained Language Models
SKCODER: A Sketch-based Approach for Automatic Code Generation
Keeping Pace with Ever-Increasing Data: Towards Continual Learning of Code Intelligence Models
Impact of Code Language Models on Automated Program Repair
[An Empirical Study of Pre-Trained Model Reuse in the Hugging Face Deep Learning Model Registry](https://arxiv.org/pdf/2303.02552.pdf
CrossCodeBench: Benchmarking Cross-Task Generalization of Source Code Models
On the Robustness of Code Generation Techniques: An Empirical Study on GitHub Copilot
Use case:
Code understanding | 🦜️🔗 Langchain
Extraction | 🦜️🔗 Langchain
SQL | 🦜️🔗 Langchain
1 | pip install langchain[llms] |
Langchain+Next.js本地部署
使用LangChain.js + Next.js 构建的LangChain入门Demo模板。它展示了如何在多个用例中使用和组合 LangChain 模块。具体如下:
- 【聊天互动】Simple chat
- 【LLM调用的结构化输出】Returning structured output from an LLM call
- 【使用自主AI代理处理复杂多步骤问题】Answering complex, multi-step questions with agents
- 【检索增强生成】Retrieval augmented generation (RAG) with a chain and a vector store
- Retrieval augmented generation (RAG) with an agent and a vector store
环境要求:Node.js>18
0.背景介绍
Next.js
- 基于React 的开发框架
- 使用react作为前端框架底层的支持SSR(请求时渲染)、SSG(构建时渲染)等技术的全栈框架
- 提供了一种简单而强大的方式来构建服务器渲染的应用程序
1.克隆项目
1 | git clone https://github.com/langchain-ai/langchain-nextjs-template |
2.环境准备
配置nodejs,版本要求>18,如使用的旧版本,则需要下载新版本,然后可以进行多版本NodeJS的配置
1 | node -v |
配置OpenAI的Api Key
接下来,需要在存储库的 .env.local
文件中设置环境变量。将 .env.example
文件复制到 .env.local
。要从基本示例开始,您只需添加 OpenAI API 密钥,您可以在此处找到该密钥。
3.启动项目
1 | npm install & npm run dev |
4.改造项目
聊天功能
附带历史(History)聊天记录的聊天模型
由于调用openAI
具有网络限制,因此先将LLM(ChatModel)改为文心一言
。
获取文心一言的API key和Secret Key。链接:百度云控制台
1 | #在.env.local文件中配置百度云API Key |
修改源代码`\app\api\chat\route.ts
1 | /** |
修改提示模板
1 | //const TEMPLATE = `You are a pirate named Patchy. All responses must be extremely verbose and in pirate dialect. |
聊天模型测试
结构化输出
Structured Output with OpenAI functions | 🦜️🔗 Langchain
目前仅支持使用OpenAI进行函数调回。_Function calling is currently only supported with ChatOpenAI models_
功能:根据预定义的schema
模板和用户的输入生成结构化数据
1 | //使用流行的 Zod 模式库定义输出模式 |
上述定义的schema
定义了:
- tone:文本情感,枚举类 positive negative neutral
- entity:实体,字符串型,提取
input
中的实体类 - word_count:单词数量,数值类,获取
input
中的单词数量 - chat_response:对话回答,字符串类,对
input
的回答(相当于chat模型) - final_punctuation:最后标点,(可选)字符串类,提取
input
中最后的标点符号
Example:input
=”What a beautiful day!”
AI返回:
1 | { |
应用:DWF中实体类的生成。指定需要生成的JSON格式
使用百度千帆作为大模型会报错,不支持函数调用。
代理
目前仅OpenAI支持。Must be used with an OpenAI Functions model.
有些应用需要根据用户输入灵活调用 LLM 和其他工具。代理接口为这类应用提供了灵活性。代理可以使用一整套工具,并根据用户输入决定使用哪些工具。代理可以使用多种工具,并将一种工具的输出作为下一种工具的输入。
检索
可根据文档信息,进行检索。如Q&A according to documents
检索代理
部署
JavaScript部署
可能有两种方式:Node.js作为后端部署 / 集成在DWF前端的Vue框架中使用作为前端部署
Node.js
- 一般不使用node作为后端,这样还不如直接用Python部署。
前端集成
优点:
- Vue中集成,直接运行在用户浏览器,不需要考虑大量访问的问题,无后端开销。除非同一个Api_Key在同一时间被大量使用(但根据上次河北教育厅培训,好像百度讯飞模型问题不大)
- 更灵活,也能支持用户根据需求改造langchain,拓展性好。
- 可能的跨域问题,网络是根据用户环境的或无法访问OpenAI、Vercel等服务
缺点:
- 安全性差,Api_Key管理(多人共享一个/一人一个自己申请?)和获取方式(环境变量/通过api调用后端返回);前端Api_Key均有泄露风险
- 数据处理和机器学习库的支持相对较差。
Python部署
优点:
- 部署在后端,前端通过API调用即可,相对安全。
- Python拥有强大的数据处理和机器学习库支持,可进一步拓展langChain功能
缺点:
- DWF后端是Java语言,LangChain目前还没有Java版本,涉及到技术异构(Flask,Django等)的难点。部署LangChain的话需要另开一个服务单独部署。(管理起来可能比较麻烦?)
- 性能相对较差,当大量用户并发调用后端LangChain服务时,容易崩。
LLM模型选择
- LangChain有部分功能(function call等)仅支持OpenAI,OpenAI的访问需要代理🧱。选择OpenAI的话部署的时候需要处理网络环境。
Flowise 和 LangFlow 是两个不同的工具,用于自然语言处理和对话流程设计。它们各有优势和适用场景。
Flowise 是一个强大的自然语言处理平台,可以帮助开发者构建智能对话系统。它提供了丰富的语义理解和对话管理功能,可以处理复杂的对话场景,并支持多轮对话和上下文理解。Flowise 还提供了一些预训练的模型和工具,可以加速对话系统的开发过程。
LangFlow 是一个对话流程设计工具,它专注于对话流程的可视化设计和管理。LangFlow 提供了直观的界面和工具,可以帮助开发者设计和管理对话流程,包括对话节点、条件逻辑和回复等。LangFlow 还支持多语言和多渠道的对话流程设计。
因此,选择使用哪个工具取决于具体的需求和使用场景。如果需要构建复杂的对话系统,并且需要强大的语义理解和对话管理功能,那么 Flowise 可能更适合。如果只需要设计和管理对话流程,并且更注重可视化和易用性,那么 LangFlow 可能更适合。
零代码GPT:Flowise VS langflow - 知乎 (zhihu.com)
我们分析了352个使用了Langchain的项目,渗透GPT,开源codeInterpreter平替,GPT销售等12个项目串讲 - 知乎 (zhihu.com)
LocalAI
docker desktop