AI函数-用自然语言的形式编程

过往系列:

Marvin·这个开源项目好像提出一种很新的东西 – AI函数 – 知乎 (zhihu.com)

前言

在前一篇文章中,我向各位介绍一种新的AI应用开发框架,Marvin。

如果是第一次看到这篇文章或者已经忘记Marvin是什么项目的看官稍微复习。

AI函数-用自然语言的形式编程插图

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

AI函数-用自然语言的形式编程插图1

如果使用Langchain开发过AI 应用程序的朋友当看到这张代码片段时,一定会非常惊讶,并且感叹其精简。

说实话当初,我就是被这么一个代码片段所吸引的,并且敏锐的察觉到了一丝不同寻常,不过直到看了官方文档和更多用例后,才明白段代码的厉害之处。

在这里我先卖个关子,为了能更有对比性,我在下面写个Langchain的伪代码给大家比较一下。prompt并不严谨请见谅。

LangChain

#这是一种解析类,他可以解析字符数组, #parse将会用于解析LLM的输出。将格式化文本转换为数据实例 parser = StringListParser(pydantic_object=Location) #这就是prompt了,决定LLM输出质量的神奇咒语 #注意format_instruction参数,这是LLM格式输出要求,在这里

原文链接:https://zhuanlan.zhihu.com/p/629927203

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享