Agent 开发框架

Marvin|Python 结构化抽取与语言模型任务库

Marvin

Prefect 出品的 Python 库,用 Pydantic AI 在语言模型上做结构化抽取、分类、生成与带工具的异步任务。

获取与使用

需要部署

按官方资料自行安装或部署

使用难度待核验
国内可用性待核验

2026-11-09 更新 · 本站尚未实测

项目介绍

Agent 开发框架 · 2026-11-09 更新 · 本站尚未实测

Marvin 是一个 Python 库,用于从文本中提取结构化数据,并用语言模型执行任务。README 说明它构建在 Pydantic AI 之上,由 Pydantic AI 负责模型访问,Marvin 在其上增加类型化任务、工具与对话历史能力,项目由 Prefect 出品。

它不是独立客户端,也不是可下载的 Agent 工作流文件,而是一个需要写 Python 代码调用的开发库。仓库 topics 含 agents、structured-outputs、llm 等,但按 README,核心定位是「structured data + tasks」的库。

核心能力

点击能力名称查看输入、输出和原文依据。

README 明确列出以下入口:

  • cast:产出单个类型化值;
  • extract:按给定 Pydantic 模型找出一个列表;
  • classify:在候选标签中做选择;
  • generate:生成示例;
  • 以上每个入口都有对应的异步版本。

对需要指令、上下文或工具的任务,可用 marvin.run 传入任务描述、result_type 与 tools 列表。README 示例用 stock_level 函数作为工具,并把返回值约束为 int。

Agent 用于复用模型设置、指令与工具;Thread 在多轮调用间共享对话历史并存入数据库。

实际应用场景

适用场景

  • 从邮件、文本等非结构化内容中抽取联系人等字段(README 示例为从一句话中抽取 name 与 email);
  • 对文本做标签分类;
  • 让模型按给定类型返回结果,减少解析成本;
  • 需要工具调用与多轮上下文的 Python 任务;
  • 希望借助 Pydantic 类型约束模型输出的工程场景。

安装与接入

README 要求 Python 3.10 或更高版本,以及所用模型提供方的凭据。安装命令原文为:

uv add marvin
export OPENAI_API_KEY="your-api-key"

Marvin 默认使用 OpenAI;其他提供方的配置见官方文档的 model configuration 页面。

参与开发时可使用 uv sync、uv run pytest tests/basic、uv run pre-commit run --all-files;tests/ai 下的测试会发起模型请求并需要提供方凭据,可用 MARVIN_HOME_PATH 指向临时目录以隔离本地历史。

文档位于仓库 docs/ 目录,发布在 askmarvin.ai;仓库元数据中的 homepage 为 marvin.mintlify.app。使用前建议核对两处站点内容是否一致。

使用条件与限制

是否需要部署
需自行准备运行环境,具体要求见正文
是否需要注册
账号和认证要求见正文;未明确说明的项目仍待核验
是否需要 API Key
待核验
费用与额度
费用边界见正文,项目许可不代表模型或托管服务免费
所需权限
待核验
许可证与服务条款
待核验

权限费用与限制

  • 费用:库本身是否收费需向官方核验;调用模型产生的费用由所选模型提供方按其条款计费,公开仓库的开源许可不等于模型或云服务免费。
  • 凭据:需要模型提供方 API Key,README 示例使用 OPENAI_API_KEY;是否支持其他提供方及具体配置,以官方 model configuration 文档为准,本页未逐一核验。
  • 数据:Thread 会把对话历史存入数据库,存放位置、保留策略与合规要求需自行确认。
  • 限制:需要 Python 编程;README 未给出性能、上下文长度、并发、安全审计等结论,均待核验。

国内使用情况

网友核验 用户经验分享

与站长实测独立,不代表官方认证或本站已实测。

我要核验
0 位参与者0 份有效分项记录

最近核验:暂无有效核验。参与人数按当前项目有效身份去重;不同核验项分别统计,不合并成用户总结果。仅统计审核通过且未过期的记录。

分项统计、有效期与样本量
核验项目有效人数成功 / 部分 / 失败 / 无法判断成功率最近核验 / 有效期
官方网站访问00 / 0 / 0 / 0样本不足暂无 / 7 天
GitHub 仓库访问00 / 0 / 0 / 0样本不足暂无 / 7 天
安装与运行00 / 0 / 0 / 0样本不足暂无 / 30 天
官方服务国内连接 / MCP 连接00 / 0 / 0 / 0样本不足暂无 / 30 天
国内网络情况00 / 0 / 0 / 0样本不足暂无 / 7 天
国内模型兼容性00 / 0 / 0 / 0样本不足暂无 / 30 天
自定义 API00 / 0 / 0 / 0样本不足暂无 / 30 天
海外服务依赖
00 / 0 / 0 / 0样本不足暂无 / 30 天
海外账号要求
00 / 0 / 0 / 0样本不足暂无 / 30 天
中文界面
00 / 0 / 0 / 0样本不足暂无 / 30 天
客户端兼容性00 / 0 / 0 / 0样本不足暂无 / 30 天
账号及费用信息
00 / 0 / 0 / 0样本不足暂无 / 30 天

成功率 = 成功 ÷(成功 + 部分成功 + 失败);无法判断不计入分母。至少 5 份可判断结果才显示成功率。账号、费用、海外依赖与语言等事实项,成功表示核查结论与资料吻合,具体观察另行统计;不表示免费或没有海外依赖。不同网络、客户端和版本的结果不能直接等同。

最近有效核验

暂无审核通过且未过期的网友核验。欢迎提交真实使用记录。

查看全部有效核验 →

国内实测状态:国内可用性待核验。协议兼容和官方资料说明不等于国内网络可用。

官方网站访问
尚未实测 待核验
GitHub 仓库访问
尚未实测 待核验
官方服务国内连接
尚未实测 待核验
国内网络情况
尚未实测 待核验
国内模型兼容性
尚未实测 待核验
自定义 API
尚未实测 待核验
海外服务依赖
尚未实测 待核验
海外账号要求
尚未实测 待核验
中文界面
尚未实测 待核验
国内最后核验时间
尚未实测

许可与国内使用

仓库代码采用 Apache License 2.0(LICENSE 文件与 GitHub 元数据一致)。该许可仅覆盖本仓库代码,不覆盖 Pydantic AI、模型提供方、数据库或其他第三方组件;这些组件各有自己的许可与条款。

README 未说明国内网络可访问性、国内模型支持或境内部署情况,默认 OpenAI 也意味着需要相应的境外服务与密钥,实际可用性待核验。README 未说明项目已归档或停止维护;仓库元数据 archived 为 false。

以上内容依据仓库 README、LICENSE 与 GitHub 元数据整理,未经实测。

项目资料与来源

官方网站 ↗

GitHub 仓库 ↗

官方文档 ↗

字段依据与待核验事项

access:来源确认 · uv add marvin

project_type:来源确认 · Marvin is a Python library for extracting structured data and running tasks with language models.

原始 README(折叠技术参考)
![Marvin](docs/assets/img/quotes/it_hates_me.png)

# Marvin

Marvin is a Python library for extracting structured data and running tasks with language models. It builds on [Pydantic AI](https://ai.pydantic.dev/) for model access and adds typed tasks, tools, and conversation history. Made by [Prefect](https://www.prefect.io/).

## Install

Requires Python 3.10 or later and credentials for your model provider.

```bash
uv add marvin
export OPENAI_API_KEY="your-api-key"
```

Marvin uses OpenAI by default. See [model configuration](https://askmarvin.ai/guides/configure-llms) for other providers.

## Use

```python
import marvin
from pydantic import BaseModel

class Contact(BaseModel):
    name: str
    email: str

contacts = marvin.extract("Email Ada at ada@example.com", Contact)
print(contacts)
```

Use `cast` to produce one value, `extract` to find a list of values, `classify` to choose labels, and `generate` to create examples. Each has an async counterpart.

For work that needs instructions, context, or tools, use a task:

```python
import marvin

def stock_level(product: str) -> int:
    """Return the number of units in stock."""
    return {"notebook": 12, "pen": 30}[product]

count = marvin.run(
    "Check how many notebooks are in stock",
    result_type=int,
    tools=[stock_level],
)
```

An `Agent` holds model settings, instructions, and tools you want to reuse. A `Thread` shares conversation history across calls and stores it in a database. See the [quickstart](https://askmarvin.ai/quickstart) and [examples](examples/) for both.

## Develop

```bash
uv sync
uv run pytest tests/basic
uv run pre-commit run --all-files
```

Tests under `tests/ai` make model requests and require provider credentials. Keep test data separate from your local history by setting `MARVIN_HOME_PATH` to a temporary directory.

## Docs

The documentation lives in [docs/](docs/README.md) and is published at [askmarvin.ai](https://askmarvin.ai). See [releases](https://github.com/PrefectHQ/marvin/releases) for changes between versions.

## License

[Apache 2.0](LICENSE).
历史前置条件说明(补充参考)

Python 3.10 或更高版本;已安装 uv(README 使用 uv add);所用模型提供方的凭据,README 示例为 OPENAI_API_KEY;模型调用费用由提供方收取,库本身费用待核验;Thread 历史需数据库,具体支持类型待核验;国内网络与国内模型支持待核验。

项目来源与清单版权许可

https://github.com/PrefectHQ/marvin/

https://askmarvin.ai/

整理来源:https://github.com/slavakurilyak/awesome-ai-agents

清单版权与许可:

MIT License

Copyright (c) 2024 Slava Kurilyak

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.