AI应用的先导篇

AI应用的先导篇,简单介绍大语言模型和一些好的框架。

Posted by catmai on August 22, 2024

前言

​ 其实很早就想分享这些内容了,AI的风头很好,很多人和公司都在往这个方向走。我从去年下半年开始就接触AI应用(不是直接开发大语言模型而是AI的再应用,我没这么牛TAT),关注一个新兴产业的发展并且投入其中的感觉很神奇,以前从未有过这样的感受,期间遇到很多的问题其实并没有人能够解答,很多时候都需要自己摸索或者和其他人一起讨论,解决问题的过程是一种很奇妙的感觉。记录这些过程也是很有趣的事情,所以我准备在接下来几篇文章里,分享过程中遇到的问题、心得和看法,点个关注不迷路。

大语言模型

现在市面上流行的大语言模型有很多,大家可以按自己的喜好和条件去选择使用。这里简单推荐几个,其实还有更多的选择。

大语言模型商业版:

  • ChatGPT (大名鼎鼎 https://openai.com/chatgpt/)
  • 智谱清言(ChatGLM服务版 https://chatglm.cn/)
  • 文心一言(百度旗下 https://yiyan.baidu.com/)
  • 豆包(字节旗下 https://www.doubao.com/chat/)
  • 通义千问 (阿里旗下https://tongyi.aliyun.com/)

大语言模型开源版:

  • ChatGLM (https://github.com/THUDM/ChatGLM-6B)
  • llama (https://github.com/meta-llama/llama)

开源的大语言模型我了解得不多,大多都是python环境,并且本地部署对GPU要求不低,虽然github上有一些基于CPU的或者低性能要求的大语言模型,那些对我们C端应用来说还是不够,那些大语言模型可能在嵌入式设备会发光发热。

不同的大语言模型之间都有不同的特点,特别是商用版的,几家为了竞争都拿出了各自的特色。除了ChatGPT之外国内的几家都在多模态上面下了很多功夫,虽然ChatGPT更新到gpt-40版本也支持了多模态,甚至在我写这篇内容的时候(24/08/09)gpt免费用户也可以每天使用DALL·E 3创建两张图片了。阿里也在今天推出了新的千问大模型Qwen2-Math(开源版),宣传数学能力超过gpt-4o。

使用

基础使用

那么如何使用大语言模型呢,其实各家平台都有自己的API文档,可以直接按照接口文档接入。以智谱清言为例,可以前往:https://bigmodel.cn/dev/api 查看API,当然很多平台也会给sdk,但是基本都是python可用的。

除此之外,也可以去找找github上有没有开源的已经封装好的java sdk。基本上就是封装请求、返回值,变成方法暴露出来之类的,自己做一个也不复杂。

进阶使用

进阶使用才是重点,我强烈推荐大家使用这种方式,封装性是sdk无法比拟的,而且可以拓展更多的内容。那么如何进阶使用呢?

langchain4j

首当其冲的就是langchain,有人可能要问了,langchain不是python的么?下面隆重介绍langchain4j~~~~

github地址:https://github.com/langchain4j

文档地址:https://docs.langchain4j.dev/intro

sdk文档:https://docs.langchain4j.dev/apidocs/index.html

这里有几个概念需要明确一下:

  • LLM(指的是大语言模型)
  • Embedding Store(向量数据库 例如milvus,elasticsearch等)
  • Vector(向量)

LangChain4j began development in early 2023 amid the ChatGPT hype. We noticed a lack of Java counterparts to the numerous Python and JavaScript LLM libraries and frameworks, and we had to fix that! Although “LangChain” is in our name, the project is a fusion of ideas and concepts from LangChain, Haystack, LlamaIndex, and the broader community, spiced up with a touch of our own innovation.

We actively monitor community developments, aiming to quickly incorporate new techniques and integrations, ensuring you stay up-to-date. The library is under active development. While some features are still being worked on, the core functionality is in place, allowing you to start building LLM-powered apps now!

翻译:

LangChain4j 在 ChatGPT 的炒作下于 2023 年初开始开发。我们注意到大量 Python 和 JavaScript LLM 库和框架缺乏 Java 对应项,我们必须解决这个问题!虽然我们的名字中有“LangChain”,但该项目融合了 LangChain、Haystack、LlamaIndex 和更广泛社区的想法和概念,并融入了我们自己的创新。

我们积极监控社区的发展,旨在快速融入新技术和集成,确保您保持最新状态。该库正在积极开发中。虽然某些功能仍在开发中,但核心功能已经就位,让您现在就可以开始构建由 LLM 驱动的应用程序!

langchain4j目前的版本是0.33.0,基本上每个月都会有一个版本更新,大家可以即使关注了解框架最新动态。

Spring Ai

spring也是紧随其后推出了自己的springboot-ai-starter,spring的优势就是启动方便,风格也延续了springboot的传统,很多东西都可以配置,上手应该比langchain4j简单(为什么是应该呢,因为我没有正儿八经用过),目前版本是1.0.0,类似langchain也继承了相当多的向量数据库和LLM

文档:https://spring.io/projects/spring-ai

开源项目推荐:https://github.com/NingNing0111/spring-ai-zh-tutorial

解决了什么问题?

​ 那么目前给出的两个框架都解决了什么问题?无论是spring ai 和langchain4j都是为了更好的使用大语言模型,并且希望能够拓展一些额外功能和内容。

​ 我们有时希望能够让LLM说一些我们希望让它能够知道的问题,例如:明天天气如何?景区门票多少钱?此时如果我们不借助框架需要怎么做?各个大语言模型平台有自己的规则,有些需要上传文档到平台内,然后这个文档可以作为补充知识在LLM回答的时候带上,需要每次请求接口声明file_id之类的,如果我们借助框架则完全不需要这样。框架会帮助我们完成这一过程,包括需要让LLM“执行”一些复杂的脚本,都可以在框架的帮助下完成。

结语

在未来的几篇文章中,我将着重介绍langchain4j的使用,希望看完之后你也可以做出简单的AI应用,并且对目前AI的能力有一个大致的认识。以上都是我个人对AI应用的看法,如果有其他想法欢迎在评论中讨论。

ps:近期更新会很慢,不(zhi)要(mian)着(tian)急(ming)。