过往系列:
Marvin·这个开源项目好像提出一种很新的东西 – AI函数 – 知乎 (zhihu.com)
前言
在前一篇文章中,我向各位介绍一种新的AI应用开发框架,Marvin。
如果是第一次看到这篇文章或者已经忘记Marvin是什么项目的看官稍微复习。
Marvin,一个构建于Pydantic, FastAPI, Langchain, and Prefect之上的AI应用程序框架
该项目目前的主要特点就是代码足够简洁,并且指定输出格式,就能保证LLM回复结构化的格式输出。
相比较于Langchain来说,Marvin看起来非常的神奇,仅仅只需要添加一个装饰器就能保证LLM输出同class相同的数据格式。
不过好像除了这个神奇的装饰器之外,也没有什么特别之处,那为什么我还要介绍这个项目呢,甚至连英伟达的科学家都赞叹不已。
不要着急,随我慢慢看下去。
Marvin框架
在Marvin的官方文档中主要介绍了以下几个概念
- AI function
- 重头戏 AI函数
- AI model
- 也就是上图中ai_model,可以指定封装类为结构化输出目标
- Bots
- 聊天机器人,同OpenAI的聊天接口
- Loader
- 外部数据载入模块,比如pdf,文本,csv等等
- Infrastructure
- 基础设施,比如向量数据库
- Plugins
- 插件,也就Langchain中的工具,联网工具,wolfram…
在我看来其实际上Marvin最重要的两个概念就在AI function和AI model.
其他概念或多或少都在其他开源软件中有所提及。甚至于由于Marvin是构建在Langchain 之上的框架,你可以在Langchain中找到所有与之对应的名词。
AI Function
如果使用Langchain开发过AI 应用程序的朋友当看到这张代码片段时,一定会非常惊讶,并且感叹其精简。
说实话当初,我就是被这么一个代码片段所吸引的,并且敏锐的察觉到了一丝不同寻常,不过直到看了官方文档和更多用例后,才明白段代码的厉害之处。
在这里我先卖个关子,为了能更有对比性,我在下面写个Langchain的伪代码给大家比较一下。prompt并不严谨请见谅。
LangChain
#这是一种解析类,他可以解析字符数组, #parse将会用于解析LLM的输出。将格式化文本转换为数据实例 parser = StringListParser(pydantic_object=Location) #这就是prompt了,决定LLM输出质量的神奇咒语 #注意format_instruction参数,这是LLM格式输出要求,在这里
原文链接:https://zhuanlan.zhihu.com/p/629927203