NSDT工具推荐Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - AI模型在线查看 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割 - 3D道路快速建模

Marvin是一个用于构建 AI 驱动软件的Python库。 Marvin 的工作是将 AI 直接集成到你的代码库中,使其看起来和感觉起来与任何其他功能一样。

Marvin 引入了一个新概念,称为 AI 函数(AI functions)。 AI函数与传统函数的不同之处在于,它们不依赖于源代码,而是通过使用 LLM 作为运行时,使用 AI 按需生成源代码。 借助 AI 函数,你不必为从网页中提取实体、对情绪评分或对数据库中的项目进行分类等任务编写复杂的代码。 只需描述你的需求,调用函数,即可大功告成!

AI 函数与原生数据类型一起工作,因此你可以将它们无缝集成到任何代码库中,并将它们链接到复杂的管道中。 从技术上讲,Marvin 将使用 AI 的签名从 (str) -> str 转换为 (**kwargs) -> Any。 我们称之为“函数式提示工程”(functional prompt engineering)。

除了 AI 函数,Marvin 还引入了更灵活的机器人(bots)。 机器人是功能强大的 AI 助手,可以为其提供特定的指令和个性或角色。 他们可以使用自定义插件并利用外部知识,并自动创建每个线程的历史记录。 在幕后,AI函数实际上是一种机器人。

为了方便使用机器人,Marvin 提供了一个功能齐全的 TUI。 TUI 跨多个机器人跟踪线程,甚至允许你通过对话界面管理你的机器人。

开发人员可以使用 Marvin 在最有影响力的地方添加 AI 功能,而无需从头开始。 Marvin 的文档可在 askmarvin.ai 上找到。

1、Marvin快速上手

创建一个机器人:

marvin bots create ObiWanKenoBot -p "knows every Star Wars meme"

与机器人交谈:

marvin chat -b ObiWanKenoBot

2、AI函数

AI 函数是在本地定义但使用 AI 大模型生成其代码的函数。 与普通函数一样,AI 函数接受参数并返回结构化输出,如列表、字典甚至 Pydantic 模型。 与普通函数不同,它们不需要任何源代码!

考虑以下示例,其中包含一个生成水果列表的函数。 该函数是用描述性名称、带注释的输入和返回类型以及文档字符串定义的——但似乎实际上没有做任何事情。 尽管如此,由于 @ai_fn 装饰器,它可以像普通函数一样被调用并返回一个水果列表。

from marvin import ai_fn


@ai_fn
def list_fruits(n: int) -> list[str]:
    """Generate a list of n fruits"""


list_fruits(n=3) # ["apple", "banana", "orange"]

AI 功能对于难以编码、耗时或无法编码的活动特别有用。 它们在解析和处理字符串方面特别强大,但几乎可以用于任何数据结构。 这里还有几个例子。

提取文本中的动物列表:

@ai_fn
def extract_animals(text: str) -> list[str]:
    """Returns a list of all animals mentioned in the text"""

文本情感分类:

@ai_fn
def classify_sentiment(tweets: list[str]) -> list[bool]:
    """
    Given a list of tweets, classifies each one as 
    positive (true) or negative (false) and returns 
    a corresponding list
    """

文章标题建议:

@ai_fn
def suggest_title(article: str, style: str=None) -> str:
    """
    Suggest a title for the provided article, optionally in 
    the style of a publication (such as the AP, NYTimes, etc.)
    """

提取文本中的关键词:

@ai_fn
def extract_keywords(text:str, criteria:str=None) -> list[str]:
    """
    Extract important keywords from text, optionally only including 
    those that meet the provided criteria (for example, "colors", 
    "proper nouns", or "European capitals")
    """

原文链接:A batteries-included library for building AI-powered software

BimAnt翻译整理,转载请标明出处