使用 Instructor 与 Cerebras 硬件加速模型构建类型安全的结构化输出

发布时间:2026/9/15 22:43:51

使用 Instructor 与 Cerebras 硬件加速模型构建类型安全的结构化输出 使用 Instructor 与 Cerebras 硬件加速模型构建类型安全的结构化输出【免费下载链接】instructorstructured outputs for llms项目地址: https://gitcode.com/GitHub_Trending/in/instructorCerebras 面向高性能计算环境提供硬件加速 AI 模型而 Instructor 负责把模型的原始输出转换为经过 Pydantic 校验的类型安全响应。本文以 docs/integrations/cerebras.md 为骨架结合仓库源码完整讲解从安装、请求参数、同步/异步调用到流式与 Hooks 的 Cerebras 集成实战读完即可在 Cerebras 上落地可靠的结构化数据提取。Cerebras 与 Instructor 的组合价值Cerebras 提供硬件加速的推理服务模型走 OpenAI 兼容的 Chat Completions 接口Instructor 在此基础上补齐了结构化这一环——通过 Pydantic 模型定义输出 Schema由客户端负责把模型响应解析、校验并重试最终返回BaseModel实例而非字符串。两者的分工让开发者可以只关注我要什么结构而把 JSON 解析、字段校验、错误重试等脏活交给 Instructor。从源码看Cerebras 在 Instructor 中属于注册在案的官方 providerinstructor/v2/core/provider_specs.py中为其登记了别名cerebras、SDK 模块cerebras.cloud.sdk以及支持的运行模式详见后文模式详解因此既可以通过instructor.from_provider(cerebras/...)一行式创建客户端也可以手动构造 Cerebras SDK 客户端后再交给from_cerebras。快速开始安装安装带 Cerebras 支持的 Instructorpip install instructor[cerebras_cloud_sdk]该 extra 会拉取cerebras-cloud-sdk。如果 SDK 缺失from_cerebras工厂会直接抛出ClientError提示先执行pip install cerebras-cloud-sdk见 instructor/v2/providers/cerebras/client.py。调用时需要 Cerebras API Key。使用from_provider创建客户端时工厂会构造Cerebras(api_keyapi_key)或AsyncCerebras(api_keyapi_key)见 instructor/v2/auto_client.pyAPI Key 默认来自CEREBRAS_API_KEY环境变量tests/llm/shared_config.py中即为该 provider 登记了此变量名。Cerebras 请求参数详解client.create(...)中的额外关键字参数会被 Instructor 原样转发给 Cerebras SDK因此无需退回泛化的 OpenAI 客户端即可使用 Cerebras 专属请求参数。官方文档给出如下示例import instructor from pydantic import BaseModel class User(BaseModel): name: str age: int client instructor.from_provider(cerebras/gpt-oss-120b) resp client.create( messages[{role: user, content: Return a short user record.}], response_modelUser, max_completion_tokens256, reasoning_effortnone, seed42, )需要特别留意的参数约束max_completion_tokens是规范的输出长度上限兼容别名max_tokens会被单独转发因此同一个请求中不要同时发送这两个字段否则可能产生歧义。temperature、top_p、stop、response_format、parallel_tool_calls、log probabilitieslogprobs以及各类 penalties 等 Cerebras 参数在所选模型支持的前提下都可以按同样方式传入。从源码机制上看from_cerebras工厂取出的是client.chat.completions.create再经由patch_v2包装后作为 Instructor 的create使用instructor/v2/providers/cerebras/client.py因此请求参数的自然透传是这一设计带来的直接结果。关于当前请求 Schema 的完整字段请以 Cerebras 官方 API 参考文档Chat Completions为准。同步调用最简单的结构化提取import instructor from pydantic import BaseModel client instructor.from_provider(cerebras/gpt-oss-120b) class User(BaseModel): name: str age: int # Create structured output resp client.create( messages[ { role: user, content: Extract the name and age of the person in this sentence: John Smith is 29 years old., } ], response_modelUser, ) print(resp) # User(nameJohn Smith, age29)response_modelUser即声明了输出 SchemaInstructor 会把它转换为模型可理解的格式JSON Schema 或工具定义并把返回内容解析、校验成User实例之后便可以直接以属性方式访问resp.name、resp.age。异步调用通过async_clientTrue获得异步客户端随后在 async 函数中await client.create(...)import instructor from pydantic import BaseModel import asyncio client instructor.from_provider( cerebras/gpt-oss-120b, async_clientTrue, ) class User(BaseModel): name: str age: int async def extract_user(): resp await client.create( messages[ { role: user, content: Extract the name and age of the person in this sentence: John Smith is 29 years old., } ], response_modelUser, ) return resp # Run async function resp asyncio.run(extract_user()) print(resp) # User(nameJohn Smith, age29)底层_build_cerebras在async_clientTrue时会构造AsyncCerebras并交由from_cerebras返回AsyncInstructor同步路径则返回Instructor两者由from_cerebras的 overload 签名与实例分派保证类型一致instructor/v2/providers/cerebras/client.py。嵌套模型一次请求提取多层结构response_model支持嵌套 Pydantic 模型Cerebras 侧会以单次调用返回完整嵌套结构from pydantic import BaseModel import instructor client instructor.from_provider(cerebras/gpt-oss-120b) class Address(BaseModel): street: str city: str country: str class User(BaseModel): name: str age: int addresses: list[Address] # Create structured output with nested objects user client.create( messages[ { role: user, content: Extract: Jason is 25 years old. He lives at 123 Main St, New York, USA and has a summer house at 456 Beach Rd, Miami, USA , } ], response_modelUser, ) print(user) # { # name: Jason, # age: 25, # addresses: [ # { # street: 123 Main St, # city: New York, # country: USA # }, # { # street: 456 Beach Rd, # city: Miami, # country: USA # } # ] # }嵌套 列表组合list[Address]适合地址簿、订单、简历等一对多数据的单次抽取。流式支持Instructor 提供两种流式方式适用场景不同Iterables流式返回同类型对象的列表适合一次抽取多个实体如多个用户Partial Streaming流式返回单个对象并在响应到达时立即开始处理字段逐步填充。重要前提目前 Cerebras 的 partial streaming 是通过解析原始文本补全raw text completion实现的基于函数调用的流式尚未实现。因此使用 partial streaming 时必须设置modeinstructor.Mode.MD_JSON。import instructor from pydantic import BaseModel client instructor.from_provider( cerebras/gpt-oss-120b, modeinstructor.Mode.MD_JSON, ) class Person(BaseModel): name: str age: int resp client.create_partial( messages[ { role: user, content: Ivan is 27 and lives in Singapore, } ], response_modelPerson, streamTrue, ) for person in resp: print(person) # nameNone ageNone # nameIvan ageNone # nameIvan age27可以看到流式迭代过程中字段逐渐从None被填充为最终值——这适合对延迟敏感、需要边接收边渲染的场景。Iterable 示例批量提取同构对象import instructor from pydantic import BaseModel client instructor.from_provider( cerebras/gpt-oss-120b, modeinstructor.Mode.MD_JSON, ) class Person(BaseModel): name: str age: int resp client.create_iterable( messages[ { role: user, content: Extract all users from this sentence : Chris is 27 and lives in San Francisco, John is 30 and lives in New York while their college roommate Jessica is 26 and lives in London, } ], response_modelPerson, streamTrue, ) for person in resp: print(person) # Person(nameChris, age27) # Person(nameJohn, age30) # Person(nameJessica, age26)create_iterable返回一个个独立的Person实例适合新闻实体抽取、批量分类等场景。Instructor Hooks校验失败回调Instructor 提供钩子机制用于定制行为。例如监听parse:error事件在解析/校验失败时得到回调import instructor def validation_hook(error: Exception) - None: print(fValidation failed: {error}) client instructor.from_provider(cerebras/gpt-oss-120b) client.on(parse:error, validation_hook)当模型输出无法被解析成目标 Pydantic 模型时validation_hook会被触发便于接入告警、日志或自定义兜底逻辑。模式Mode详解与推荐Instructor 为 Cerebras 提供了多种模式以适配 Cerebras 支持的响应方式instructor.Mode.MD_JSON将原始补全解析为合法 JSON 对象instructor.Mode.TOOLS使用 Cerebras 的工具调用tool calling能力返回结构化输出。一般推荐使用Mode.TOOLS它最灵活、最具前瞻性能支持的 Schema 表达范围最大使用上也更省心。源码层面印证了这一点from_cerebras的默认模式即为Mode.TOOLSinstructor/v2/providers/cerebras/client.pyCerebras 使用 OpenAI 兼容 API其 handler 复用instructor.v2.providers.openai.handlersprovider 规格表中 Cerebras 支持TOOLS、JSON_SCHEMA、MD_JSON、PARALLEL_TOOLS四种模式不支持RESPONSES_TOOLSinstructor/v2/core/provider_specs.py历史遗留的Mode.CEREBRAS_TOOLS、Mode.CEREBRAS_JSON会被自动归一化为Mode.TOOLS、Mode.MD_JSON见 instructor/v2/core/mode.py 与 provider_specs 的legacy_modes映射旧代码无需改动即可继续工作。源码架构Cerebras provider 是如何实现的兼容门面instructor/providers/cerebras/目录是面向旧 import 路径的兼容层client.py直接转导出 v2 的from_cerebrasinstructor/providers/cerebras/client.py同时instructor/__init__.py也把from_cerebras注册为可选导出v2 客户端工厂from_cerebras依次完成 SDK 存在性检查、模式归一化与注册校验、客户端类型校验必须是Cerebras或AsyncCerebras实例、取出client.chat.completions.create并patch_v2最后按客户端类型返回Instructor或AsyncInstructor统一自动客户端instructor.from_provider(cerebras/...)会走到auto_client._build_cerebras自动构造带api_key的 Cerebras 客户端并调用from_cerebrasSDK 缺失时抛出带安装提示的ConfigurationErrorinstructor/v2/auto_client.pyprovider 注册表Cerebras 的别名、SDK 模块、默认 provider 字符串cerebras/gpt-oss-120b、支持/不支持的模式等均登记在 instructor/v2/core/provider_specs.py内置模型候选instructor/models.py 中内置了cerebras/llama-4-scout-17b-16e-instruct、cerebras/llama3.1-8b、cerebras/llama-3.3-70b等模型供自动客户端选用具体可用模型以你的 Cerebras 账号配额为准测试佐证仓库通过tests/coverage/test_provider_clients_coverage.py断言 Cerebras 走/v1/chat/completions端点、tests/coverage/test_auto_client_tail_coverage.py验证_build_cerebras的导入与构造路径以及tests/docs/test_current_provider_guides.py校验本文档与实现的一致性共同保障集成正确性。注意事项与最佳实践API Key通过CEREBRAS_API_KEY环境变量提供或在from_provider时显式传入SDK 未安装时按提示pip install cerebras-cloud-sdk即可。参数互斥max_completion_tokens与max_tokens不要同时发送。流式模式约束partial streaming 与create_iterable当前需配合modeinstructor.Mode.MD_JSON基于函数调用的流式尚未实现使用前请确认这一点。模式选择无特殊需求优先Mode.TOOLS其 Schema 表达能力最强且是默认模式已有代码中的CEREBRAS_TOOLS/CEREBRAS_JSON旧模式会自动归一化无需迁移。模型选择文档示例使用cerebras/gpt-oss-120b也可按需改为cerebras/llama-3.3-70b等型号只要模型支持对应的请求参数即可。【免费下载链接】instructorstructured outputs for llms项目地址: https://gitcode.com/GitHub_Trending/in/instructor创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/15 22:43:51

手搓教程:AI时代工程师的可复现性生存技能

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/15 22:43:51

Django零售店铺管理系统开发实战:从需求分析到部署上线

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/15 23:29:05

2026示波器怎么选:从信号可信度看8通道真伪与三大隐藏维度

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/15 23:29:05

2026年业财一体ERP品牌盘点:8大主流产品与选型指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/15 23:29:05

AI命令行编程工具四类架构与本地CLI环境实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/15 23:29:05

基于元胞自动机的收费广场仿真:MATLAB实现与拥堵量化分析

简介:面向2017年美国大学生数学建模竞赛B题收费广场交通管理问题,这份压缩包收录了基于元胞自动机的MATLAB仿真代码,适合参赛者、交通流建模学习者以及需要快速上手CA模拟的工程师。代码共9个文件,包含8个.m脚本和1个辅助文件&…

2026/9/15 23:24:04

CSS引入方式全解析:行内、内嵌、外链与@import的选型与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/15 4:54:30

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/15 0:01:16

AI英语单词APP开发:自适应学习算法与移动端优化实践

1. 项目概述 作为一名在移动应用开发领域摸爬滚打多年的老手,我最近完成了一个AI英语单词APP的开发项目。这个项目将传统单词记忆方法与现代AI技术相结合,打造了一款能够智能适应不同用户学习习惯的英语学习工具。 市面上大多数单词APP都存在一个通病&a…

2026/9/15 0:01:16

Flutter与OpenHarmony结合开发手语学习APP实战

1. 项目背景与核心价值作为一名同时接触过Flutter和OpenHarmony的开发者,最近我完成了一个基于Flutter for OpenHarmony的手语学习APP实战项目。这个项目最大的特点在于实现了跨平台框架与国产操作系统深度结合的创新实践——用Flutter开发的应用能完美运行在OpenHa…

2026/9/15 0:01:16

六个月成为机器人工程师:从ROS2到SLAM的实战路径

1. 六个月的紧迫感从哪来:先搞清楚你要成为哪种机器人工程师说实话,六个月的期限并不是一个宽松的时间线。市面上任何一本正经的机器人学教材都超过五百页,ROS2的官方文档可以翻到你怀疑人生,再加上ABB、KUKA这些工业机器人厂家动…

2026/9/15 14:22:53

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/15 21:31:11

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/15 11:42:23

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码