Mirascope
用统一接口调用不同前沿模型,并构建带工具和结构化输出的智能体。
CI 工作流将默认权限限制为 contents: read,发布任务仅单独授予 id-token: write;测试录像还会过滤授权头、API 密钥、Cookie 和组织标识,因此依赖权限与敏感信息处理有明确证据。扣分在于产品层没有展示工具权限隔离、调用前用户确认、数据保留或供应商传输说明;execute_tools 可执行用户注册工具,但没有副作用分级、恢复或回滚机制。仓库、站点、版权主体和许可证归属清楚,但没有可核实的个人维护者身份,且给定出版者身份仍属未知。
README、包脚本、CI 和测试配置共同呈现了统一调用、结构化输出及工具循环,并覆盖 Python 3.10–3.13、TypeScript 和多个运行时。锁文件检查、冻结安装和录像回放提高依赖可用性,但实际模型服务仍依赖外部供应商和凭据。可见 ToolExecutionError、ToolNotFoundError 等错误类型,不过没有提供面向用户的错误消息实现或恢复指导;README 所称四个 CI 作业也与工作流中的更多作业不完全一致。
示例覆盖普通调用、Pydantic 结构化结果、工具型代理、异步及流式能力入口,并显示 Python、TypeScript、Node、Bun、Deno 与 macOS 特例,适配面较广。装饰器、显式 tools 列表和 tool_calls 循环使触发路径较清楚。扣分在于“任何前沿 LLM”的边界没有由所给文件充分限定,供应商差异、支持矩阵、网络要求及不适用场景也未系统说明。
README 清晰划分 python、typescript、website 和 docs,并指向结构文档;快速安装、开发命令、CI 命令、语义化版本和 MIT 全文都很明确。示例质量良好,但没有所给范围内的 FAQ。已知限制仅零散提到 Bun 和 Apple Silicon;有版本号、语义化版本声明和发布流程,却没有变更日志。Mirascope, Inc.、仓库工作流和发布路径表明组织层维护责任,但没有明确联系人、支持渠道或安全报告路径。
统一模型调用、类型化结构输出、工具注册和响应恢复循环能产生可直接消费的对象与文本,具有明显的集成价值。扣分在于更高级能力主要通过外部文档声明,所给材料没有展示复杂代理编排、治理优势或与替代方案的比较;也没有令牌、延迟、供应商费用或运维成本说明,因此成本收益只能得到有限支持。
安装、示例、版本、许可和 CI 主张大多能在 package.json、工作流与测试配置之间相互核对,尤其跨来源佐证很强。扣分在于“任何前沿 LLM”等宽泛主张没有完整支持矩阵,流式、异步和多轮能力仅被指向外部文档;README 的 CI 作业数量与实际工作流不一致,使部分事实陈述和概括没有完全分离。
- 工具函数由应用代码定义并通过 execute_tools 执行;在接入具有写入、删除、支付或消息发送能力的工具前,应自行增加权限隔离、参数审查和逐次确认。
- 调用会依赖外部模型供应商和 API 密钥,但所给材料没有说明各供应商的数据保留、地域、遥测或隐私策略。
- VCR 过滤敏感请求头是积极措施,但请求体和 URI 也可能含有敏感数据;现有配置仍以 URI 和 body 匹配并可能将其写入录像。
- 不要仅凭 README 徽章推断当前修订的 CI 或覆盖率已经通过;本评估没有执行测试。
- 安装 all extra 可能扩大依赖面;部署前应审查语言子包的锁文件、传递依赖和实际需要的供应商额外项。
这个 Agent 能做什么,适合哪些场景?
Mirascope 是一个采用 MIT 许可证的 Python 与 TypeScript 单体仓库,定位为连接不同前沿大语言模型的统一编程接口。Python API 通过 `@llm.call` 把普通函数变成模型调用,并可用 Pydantic 模型约束和解析结构化结果。开发者可用 `@llm.tool` 注册函数工具,再通过 `response.tool_calls`、`execute_tools()` 和 `resume()` 驱动工具调用循环。项目还说明支持流式处理、异步执行和多轮对话,但相关用法未在所给快速入门中展开。它是供应用程序嵌入的开发库,而非独立托管的聊天产品;仓库同时包含 Python、TypeScript、网站和跨语言文档。
应用先定义一个由 @llm.call("provider/model") 装饰的 Python 函数,函数返回的字符串成为模型请求内容;调用该函数后,Mirascope 向所选模型服务发起请求并返回响应对象。设置 format=Book 等 Pydantic 类型后,可调用 .parse() 得到经过类型化的结构化对象。通过 @llm.tool 声明工具并将其传入 tools=[...] 后,代码检查 response.tool_calls,以 response.execute_tools() 执行本地工具,再用 response.resume(...) 将结果交还模型,循环至没有待处理工具。仓库还提供 Python 与 TypeScript 实现及示例;文档网站可用 bun run website:dev 启动,根目录的 bun run ci 会运行拼写检查、Python/TypeScript lint 与类型检查以及文档构建。
- Python 应用开发者需要用同一种装饰器接口调用不同模型,而不想让业务函数直接绑定某个供应商 SDK。
- 后端团队需要让模型返回符合 Pydantic 模型的对象,例如书籍、工单或领域实体,而不是自行解析自由文本。
- 智能体开发者需要把现有 Python 函数暴露为模型工具,并在应用代码中明确控制工具执行与恢复循环。
- 需要流式、异步或多轮模型交互的团队,可将 Mirascope 作为应用内库进一步评估其完整文档。
- 同时维护 Python 与 TypeScript 服务的工程团队,可评估该仓库提供的两种语言实现和统一跨语言文档。
这个 Agent 有哪些优点和局限?
- 以
@llm.call提供统一模型调用入口,仓库明确宣称可用于任意前沿大语言模型。 - 结构化输出直接结合 Pydantic 模型,并提供
.parse()获取类型化结果。 - 工具执行循环由应用代码显式控制,可检查
tool_calls、执行工具并恢复模型响应。 - 同时包含 Python 和 TypeScript 实现,以及统一的跨语言文档。
- 除基础调用外,项目明确列出流式、异步和多轮对话支持。
- 快速入门只展示了 Anthropic 模型标识,未列出其他供应商、模型适配器或各自的配置方式。
- 材料没有给出 API 凭证的环境变量名称、错误处理、重试、超时或速率限制策略。
- 示例中的工具由应用进程本地执行,采用者仍需自行处理工具权限、隔离和副作用。
- Python 安装命令使用
[all]可选依赖集合,但材料没有说明其包含内容或最小安装方式。 - TypeScript 实现存在,但所给材料没有提供对应的安装命令或首个可运行示例。
如何安装或部署这个 Agent?
在 Python 项目中运行:
uv add "mirascope[all]"该命令需要 Python 和 uv。模型调用还需要对应供应商的 API 凭证和网络连接,但所给材料没有说明凭证名称、环境变量或支持的 Python 版本,因此需按所选模型供应商补充配置。只有开发文档网站时才明确需要 Bun。
如何使用这个 Agent?
最小调用示例:
from mirascope import llm@llm.call("anthropic/claude-sonnet-4-5")
def recommend_book(genre: str):
return f"Recommend a {genre} book."response = recommend_book("fantasy")
print(response.text())如需结构化结果,定义 Pydantic BaseModel,将其传给 format,然后调用 .parse()。如需工具,使用 @llm.tool 装饰函数,通过 tools=[get_available_books] 注册,并在 while response.tool_calls: 循环中执行 response.resume(response.execute_tools())。所选 Anthropic 模型的具体凭证配置没有在材料中给出。
常见问题
Mirascope 是否包含模型使用费用?
运行示例需要哪些密钥?
anthropic/claude-sonnet-4-5,但材料没有给出凭证变量名或配置步骤。工具调用会自动完成吗?
response.tool_calls,调用 execute_tools(),再以 resume() 继续,直到工具调用结束。能否直接部署成聊天服务?
是否支持 TypeScript?
typescript/ 实现和示例,但材料没有展示 TypeScript 的安装及调用代码。