返回文章

文章 2023

啊鸡入坑 AI 之《LangChain 上手》

初次上手 LangChain

AILLMsLangChainOpenAI
本文目录15
  1. 简介
  2. 起因
  3. LangChain 简介
  4. 申请 OpenAI Token 小坑
  5. 开搞
  6. 1. 申请 Azure OpenAI
  7. 2. 创建 Deployment
  8. 3. 简单上手(LangChain 中文入门教程)
  9. 3.1 创建代码
  10. 3.2 改写 OpenAI 调用方式
  11. 3.3 调试第一次问答
  12. 3.4 对超长文本进行总结
  13. 3.5 构建本地知识库问答机器人
  14. 3.6 用 Zapier 连接万种工具
  15. Reference

简介

起因

最近看了一个《基于 Langchain 与 ChatGLM 等语言模型的本地知识库问答》项目,想搞来玩一下,但是该项目的本地部署大语言模型对显卡有要求,并且 docker 镜像也有 30G,所以暂时用 OpenAI 的接口来学习 LangChain。

LangChain 简介

LangChain 是一个基于大语言模型(LLMs)用于构建端到端语言模型应用的框架,它可以让开发者使用语言模型来实现各种复杂的任务,例如文本到图像的生成、文档问答、聊天机器人等。 langchain的主要特点有: 提供了一套工具、组件和接口,可以简化创建由LLMs和聊天模型提供支持的应用程序的过程。

申请 OpenAI Token 小坑

在申请 OpenAI 账号的时候遇到很多坑:

  • 要清空缓存翻墙,而且还要多换几次,因为翻墙的 IP 有可能已被拉入黑名单(这个可以忍)

  • 需要绑定国外的手机号(忍了)

  • 需要有国外的信用卡,虚拟信用卡还被封(怎么搞都搞不好,去他妹的)

而且我之前就申请过 OpenAI 账号,所以免费的使用额度已经过期了,所以还是另想他法吧。

开搞

1. 申请 Azure OpenAI

微软的 Azure OpenAI Service 服务允许绑定国内的信用卡,具体的教程可以看这个:

https://www.youtube.com/watch?v=-RI2pXNfOKQ&ab_channel=AI%E5%AD%A6%E9%95%BF%E5%B0%8F%E6%9E%97

2. 创建 Deployment

在申请完 Azure OpenAI 之后,需要创建部署:

Untitled-c0879bb8.png

可选模型如下:

  • gpt-35-turbo

  • gpt-35-turbo-16k

  • text-embedding-ada-002

  • 其中 GPT-4 需要额外申请资格,见申请链接

3. 简单上手(LangChain 中文入门教程)

💡 Azure OpenAI 的模型返回时不时会被 Content filtering 挡掉,想关掉的话需要去额外申请 Modified Content Filters and Abuse monitoring

Untitled-a2abdc16.png

Untitled-8ac61d03.png

3.1 创建代码

参考https://github.com/liaokongVFX/LangChain-Chinese-Getting-Started-Guide,复制一份:

LangChain 中文入门教程(Azure OpenAI)

本地运行代码见:https://github.com/JiyuShao/LangChain-Azure-OpenAI-Chinese-Guide

3.2 改写 OpenAI 调用方式

主要改写有以下几点:

挂载 Google Drive

Untitled-a3448d22.png

从 Google Drive 中读取环境变量
切换 LangChain OpenAI LLM 为 Azure OpenAI LLM

3.3 调试第一次问答

在使用 LangChain 的 AzureOpenAI* *官方示例改写完成后发现仍然报错如下:

Untitled-db2db4c2.png

原来是由于示例中使用的是较旧的模型`text-davinci-003`,而新的模型`gpt-35-turbo-16k` 不支持 Completion 操作导致的,需要从[ AzureOpenAI 切换到 AzureChatOpenAI](https://python.langchain.com/docs/integrations/chat/azure_chat_openai)。

Untitled-4572abf7.png

3.4 对超长文本进行总结

在挂载好之后则可以进行代码执行了,《孔乙己》执行成功

Untitled-210e0082.png

Untitled-6c6c4afb.png

但是发现输出的结果是英语,所以打算定制一下 Prompt(见[链接](https://www.tizi365.com/topic/3640.html))

Untitled-329ddb72.png

Untitled-3e36844c.png

结果发现第一次还是用的我们定制的 prompt,第二次就不是了

原来是提问的 prompt 和 refine 的 prompt 是不同的,修改一下就可以了,顺便打印出了中间产物

Untitled-77c83b12.png

Untitled-d2d52c91.png

3.5 构建本地知识库问答机器人

首先要有一个 text-embedding-ada-002 模型部署

运行试一下,发现报错,应该是 Azure OpenAI 的 Embedding 模型有 Token 限制

Untitled-81d33be3.png

Untitled-3652f914.png

限制一下 Embedding 的 Chunk Size 就可以了,网上人遇到类似的[问题](https://www.kingname.info/2023/05/13/langchain-azure-openai/)

Untitled-e6bd0379.png

Untitled-7f5f0e09.png

3.6 用 Zapier 连接万种工具

添加 [Zapier NLA Provider](https://nla.zapier.com/providers/)

Untitled-763da482.png

添加 Actions,注意 Require preview before running AI Action 要取消选中

Untitled-d4c95daf.png

Untitled-1bd4738d.png

执行代码,成功发送邮件

Untitled-46c7a7b7.png

Untitled-d5919b4b.png

Untitled-d9653fbf.png

Untitled-916f046c.png

Reference

https://github.com/JiyuShao/LangChain-Azure-OpenAI-Chinese-Guide

返回首页
上一篇Mometa 低码前端编辑器原理学习下一篇基于 QuickJS、BOM 规范的基于 Flutter 的跨 APP、WEB 的跨端动态渲染机制 — FlutterDOM

Discussion

留言与讨论

想法、补充和不同意见都欢迎。