MODEL & API DOCUMENTATION
维多乐布亲子成长大模型
面向成年家长与幼教工作者的课程编制与领域模型服务。本文介绍从课程目标、课时活动到自然语言调整的完整流程,以及对应 API 的接入方法。
vidolebu-parenting-1Authorization: Bearer/v1当前实现以豆包基础模型 API 为生成引擎,在服务端加入领域任务、年龄范围与输出边界。公共标识是本服务的调用别名,不表示本公司持有独立训练的模型权重。本文中的请求与响应样例用于解释接口,均不是实际运行记录、模型测评结果或效果承诺。
01 / GET STARTED
快速开始
接入前需要一个已部署、配置好上游模型且使用 HTTPS 的服务地址,以及控制台创建的有效密钥。下方域名为占位符,请替换为实际部署地址。
- 创建服务密钥
登录开发者控制台,为当前应用创建 API Key。将首次展示的完整值保存到服务端密钥管理或私有环境变量中。
- 配置服务地址
将
VIDOLEBU_BASE_URL设为https://YOUR_SERVICE_DOMAIN/v1,将VIDOLEBU_API_KEY设为已创建密钥。不要使用上游火山方舟密钥替代本平台密钥。 - 创建课程并完善课时
提交主题、目标和组织条件,取得课程与课时编号后生成活动。需要调整时向课程助手提交具体要求,预览变化,再明确应用;课程 API 参考见课程 API 与结构。
curl --request POST "${VIDOLEBU_BASE_URL}/courses" \
--header "Authorization: Bearer ${VIDOLEBU_API_KEY}" \
--header "Content-Type: application/json" \
--data '{
"title": "轮流与等待:家庭活动",
"topic": "共同游戏中的轮流与表达",
"goal": "提供表达选择和交接材料的活动机会",
"age_group": "5-6",
"audience": "parent",
"lesson_count": 4,
"session_minutes": 15,
"materials": "积木和彩纸,由成人带领"
}'
密钥由环境变量读取;示例不包含真实凭证。调用示例未执行,不代表当前部署已可访问。
02 / MODEL CARD
领域模型卡
模型卡描述当前服务实现,而非尚未完成的训练计划。将公共标识用于请求路由,将模型名称用于面向用户的说明。
| 服务名称 | 维多乐布亲子成长大模型 |
|---|---|
| 公共标识 | vidolebu-parenting-1 |
| 运营主体 | 上海维多乐布智能科技有限公司 |
| 生成引擎 | 服务端配置的豆包模型 API,默认通过火山方舟境内接口接入;具体上游模型版本由运营配置决定。 |
| 领域适配方式 | 服务端任务提示词、使用者场景、年龄参数、证据表述要求,以及输入和输出规则过滤。 |
| 已实现输入 / 输出 | 对话:文本消息 → 文本回复;课程:目标与条件 → 结构化课程草稿与活动方案。不接收图像、音频、文件附件或工具调用。 |
| 目标使用者 | 年满 18 周岁的家长、其他监护人与幼教工作者;开发者对同一服务范围内的应用进行服务端集成。 |
| 内容范围 | 3—12 岁儿童的家庭情境、成人带领的互动与叙事素材;幼教场景主要面向 3—6 岁,并可按现有年龄参数组织其他适龄任务。 |
| 当前能力限度 | 没有联网文献检索、RAG、个体诊断或标准化量表评分;生成内容可能遗漏信息或出错。 |
| 领域训练进度 | 资料准备与任务编制不等于完成微调。当前实现不宣称已完成 SFT / LoRA 或拥有独立领域权重。 |
| 质量与评估 | 本版本未发布可复现的领域基准、人工抽检达标结果或模型安全评估通过结论。 |
如何理解“领域模型”
领域范围体现在任务分类、上下文组织和回答规范:把可观察行为与推测分开,将互动建议放回具体情境,对引用和效果描述保持审慎。这些约束会参与每次模型请求,但不构成正确性保证。应用仍需由使用者审阅输出。
03 / TASK TAXONOMY
任务与年龄参数
task 指定当前任务,age_group 提供年龄背景,audience 区分家庭和幼教场景。切换参数不会建立儿童档案,也不会产生发展水平判定。
| 任务 | 建议输入信息 | 期望内容结构 |
|---|---|---|
insight情绪与行为观察 | 发生了什么、场景和频次、成人已作出的回应、需要厘清的问题。 | 已知观察、可能及替代解释、情境化建议、适用条件与不确定性。 |
interaction亲子互动策略 | 可用时间和材料、家庭场景、互动目标、参与限制。 | 所需条件、可执行步骤、沟通表达、观察过程与调整办法。 |
story叙事素材构建 | 主题、篇幅、故事背景和需要避开的情节。 | 虚构故事正文、开放式共读问题、家长讲述提示。 |
3-45-67-910-12家庭与幼教场景
audience: parent 侧重家庭中的成人与孩子互动;audience: educator 侧重幼教工作者带领的小组活动、材料准备、参与组织和过程观察。接口仍面向成人,不改变儿童独立使用的边界。幼教用户需要补充参与人数、场地与材料条件,不提交幼儿名单或个体档案。
输入信息的组织
将年龄放在参数中,将具体情境放在消息中。用“孩子”“家长”等称谓替代身份信息。陈述实际发生的行为,避免直接把“叛逆”“不正常”等标签当作已证实事实。
{
"task": "interaction",
"age_group": "5-6",
"messages": [{
"role": "user",
"content": "我们有15分钟和几块积木。想练习轮流等待,请提供一个家长可以带领的游戏,以及孩子不愿参与时的调整方式。"
}]
}任务片段;发送时还需包含 model。上述“期望内容结构”是领域提示原则,接口不保证固定段落或结构化 JSON 输出。
COURSE PLATFORM / OVERVIEW
课程项目
课程平台把一个成人带领的活动目标组织为连续课时:先生成结构化大纲,再为选定课时生成活动方案,最后由家长或幼教工作者审阅、编辑和安排实施。课程保存为账户中的草稿项目,可持续修改。
draft| 课程构成 | 用途 | 编制建议 |
|---|---|---|
| 主题与目标 | 界定连续活动围绕什么展开,以及成人希望提供哪些参与机会。 | 用“尝试轮流”“表达选择”等过程性目标,避免保证儿童达到特定发展分数。 |
| 课时大纲 | 为连续活动安排各课时标题、目标和重点。 | 由熟悉场景的成人检查衔接与难度,再逐课时完善。 |
| 活动步骤 | 说明材料、时间安排和执行方式。 | 检查场地、材料安全及参与人数,删改不适合当前条件的步骤。 |
| 观察线索 | 提示成人注意参与、沟通和调整过程。 | 作为定性观察提示,不是儿童能力评分或诊断量表。 |
| 练习与反思 | 连接课时之间的尝试,整理下一次需要调整的内容。 | 记录活动设计是否适合,而不是给儿童贴上成功或失败的标签。 |
生成大纲和课时都实际调用上游模型。大纲通过结构校验后保存;无法解析或字段不符合约定时返回错误,不以固定模板冒充生成结果。draft 表示待成人选用的草稿,不表示已经经过课程效果验证、获得教学资质或适合所有儿童。
COURSE PLATFORM / DESIGN GUIDE
课程编制工作流
以实际参与条件组织课程,比先追求复杂的大纲更有助于形成可执行安排。家庭与幼教场景共用项目结构,但活动组织和观察方式需要分别考虑。
| 设计环节 | 家庭 · parent | 幼教 · educator |
|---|---|---|
| 目标 | 围绕一个日常情境,例如共同收拾、轮流或睡前共读。 | 围绕成人可组织的小组活动,明确参与方式与交流机会。 |
| 课时安排 | 保持短而可重复,适应家庭节奏和孩子是否愿意参与。 | 安排引入、示范、分组尝试和收尾,考虑人数与场地转换。 |
| 材料 | 列出家中实际已有物品,避免依赖复杂采购或制作。 | 说明材料数量、共享方式、等待安排和成人协助条件。 |
| 活动观察 | 关注互动是否可持续、成人表达是否清楚、是否需要缩短或调整。 | 关注参与机会、等待和材料流转,以及不同参与方式的支持。 |
| 延伸与反思 | 选择一个可在日常生活再次尝试的简单步骤。 | 整理可与家庭沟通的活动提示,避免把家庭练习变成儿童考核。 |
- 明确目标与条件
填写主题、目标、使用者场景、年龄、课时数量、时长和材料。目标应能指导活动设计,不要求模型推断儿童的发展水平。
- 生成并审阅大纲
检查课时之间的重点是否重复、顺序是否合适,以及活动难度与场景是否匹配。课程保存后仍是草稿。
- 逐课时生成活动
选择一个课时生成详细活动。检查说明是否完整、材料是否可用、时间安排是否合理,并补充成人实际需要的协助方式。
- 编辑与实施准备
修改标题、目标、步骤、观察线索或反思问题。若修改课程目标或材料,已生成课时不会自动重写,需要自行调整或再次生成。
- 根据活动过程调整
把反思用于优化课程安排。是否继续、缩短或更换活动,由负责带领的成人依据实际情况决定。
家庭目标可以是“共同搭建时尝试表达下一步选择”;幼教目标可以是“小组共同使用材料时练习表达与交接”。两者可使用相同主题,但成人组织方式、材料数量和观察线索应分别设计。
COURSE PLATFORM / AI ASSISTANT
在课程中用自然语言调整
课程 AI 助手围绕当前项目工作:理解已保存的课程与选定课时,回答设计问题,或提出具体字段修改。生成建议不会立即改写课程;只有用户查看变更并明确应用后,修改才保存到项目。
- 选定课程或课时
选择“当前课时”处理活动细节,或选择“课程”处理整体目标、材料与课时大纲。手动编辑中尚未保存的内容必须先保存,助手只读取服务端已保存版本。
- 提出具体要求
说明想保留什么、改变什么,以及家庭或幼教场景的实际条件。对活动的建议应保持既有课时时长。
- 查看实际变更
助手说明建议并展示逐字段的修改前后内容。没有修改需求时只返回说明,不产生待应用提案。
- 应用或放弃提案
确认内容后应用,或放弃此次提案。有待处理提案时,先处理它再继续发送要求,避免把不同修改混在一起。
- 继续编辑保存后的课程
应用成功的回执包含最新课程,编辑区据此更新。之后可以手动调整,或基于最新保存内容再提出新要求。
| 场景 / 范围 | 可以提出的具体要求 | 需要预览的内容 |
|---|---|---|
| 家庭 · 当前课时 | “保留当前总时长,改成家长和孩子共同参与;把步骤写清楚,保留已有材料。” | 活动步骤、各段分钟数、家长协助方式与总时长。 |
| 幼教 · 当前课时 | “改成四人小组共享材料,补充材料交接方式和等待时的替代参与方式。” | 活动组织、具体说明与适应调整。 |
| 家庭 · 课程大纲 | “把课程目标写成可观察的互动过程,减少大纲中的重复表述。” | 课程目标,以及相关课时的标题、目标和重点。 |
| 幼教 · 当前课时 | “把观察点改为成人可记录的参与过程,删除对幼儿能力的评分表述。” | 观察提示与反思问题是否属于过程观察。 |
修改范围
“当前课时”可提出该课时允许编辑的八个内容字段变更;活动分钟数之和仍必须等于课程设置。“课程”可调整课程标题、目标和材料,并调整已有课时的大纲标题、目标与重点,不会批量重写所有活动。
助手不能更改年龄、课时时长、课时数量、课时编号、顺序或项目状态,也不能删除课程。若需要这些变动,应按课程功能当前支持的方式组织新项目,而不是用提示词要求绕过字段约定。
基于保存版本处理冲突
提案对应生成时的已保存课程。若随后手动编辑课程、重新生成课时或发生其他项目变化,应用旧提案会返回 409 COURSE_CHANGED,不会覆盖较新的内容。取得最新课程后,放弃旧提案并重新提出要求。
助手接口
| 公共路径 | 用途 | 模型调用 |
|---|---|---|
GET /v1/courses/{id}/assist | 恢复当前课程待处理提案,返回 {"proposals": [...]},最多 30 条。 | 否 |
POST /v1/courses/{id}/assist | 获取上下文回答或待应用修改提案。 | 是 |
POST /v1/courses/{id}/assist/{proposalid}/apply | 明确应用已有提案,保存课程。 | 否 |
POST /v1/courses/{id}/assist/{proposalid}/discard | 将已有提案标记为放弃。 | 否 |
网站端点将 /v1 替换为 /api,使用网站 Cookie;公共端点使用 Bearer 密钥。提案属于当前账户与课程。
{
"message": "把课时目标改成可观察的活动过程,并把反思问题整理为两条。",
"scope": "lesson",
"lesson_id": "<当前课时编号>",
"history": [
{"role": "user", "content": "这次活动由一名家长带领。"},
{"role": "assistant", "content": "可以围绕共同选择和回应组织活动。"}
]
}
| 字段 | 规则 |
|---|---|
message | 必填,1—2000 字符的非空文本。 |
scope | 必填,lesson 或 course。 |
lesson_id | lesson 范围必填,必须属于当前课程;course 范围省略。 |
history | 可选,最多 6 条。每条只含 role(user / assistant)与 content(1—2000 字符的非空文本)。 |
无需把课程全文作为消息提交。服务器读取当前账户拥有的课程版本,history 仅提供对话背景,不能替代保存课程或获得系统指令权限。
{
"reply": "建议将目标聚焦为共同选择,并用两条问题回顾活动安排。请查看变更后决定是否应用。",
"proposal": {
"id": "example-proposal-id",
"courseId": "example-course-id",
"scope": "lesson",
"lessonId": "example-lesson-id",
"status": "pending",
"createdAt": "2026-10-11T08:00:00+00:00",
"changes": [{
"target": "lesson",
"lessonId": "example-lesson-id",
"field": "objective",
"label": "课时目标",
"before": "练习表达与轮流",
"after": "在共同活动中提供表达选择和回应对方的机会"
}, {
"target": "lesson",
"lessonId": "example-lesson-id",
"field": "reflectionPrompts",
"label": "反思问题",
"before": ["活动是否顺利?"],
"after": ["哪些说明有助于参与?", "下一次需要调整哪些安排?"]
}]
}
}before 与 after 保留字段原有类型:文本为字符串,反思或观察点为字符串数组,活动为完整活动数组。课程字段变更的 target 为 course、lessonId 为 null。只回答问题而没有字段变化时返回 {"reply": "...", "proposal": null}。
明确应用或放弃
curl --request POST \
"${VIDOLEBU_BASE_URL}/courses/${COURSE_ID}/assist/${PROPOSAL_ID}/apply" \
--header "Authorization: Bearer ${VIDOLEBU_API_KEY}" \
--header "Content-Type: application/json" \
--data '{}'
# 放弃提案时,将最后的 /apply 改为 /discard。应用成功返回 {"course": {...}, "proposal": {"id": "...", "status": "applied"}};放弃返回 {"proposal": {"id": "...", "status": "discarded"}}。重复应用同一已应用提案返回当前课程与已应用状态,不覆盖后来人工修改;重复放弃已放弃提案仍成功。已应用提案不能通过放弃操作回退,已放弃提案也不能再应用,这两种情况返回 409 PROPOSAL_NOT_PENDING。放弃是状态变更,不是删除提案记录。
刷新后恢复待处理提案
打开课程时,工作台通过 GET 助手接口读取当前课程最新的待处理提案,恢复真实的修改前后内容;返回对象保留提案字段类型,并可包含该提案的 reply。刷新不会丢失服务端已保存的提案,但不会恢复仅存在于页面内存中的完整助手对话。
存在待处理提案时,先应用或放弃再发新要求;有多个历史待处理提案时,处理当前提案后继续处理下一个。旧提案若与课程版本冲突,放弃后基于最新课程重新提出要求。
失败与留存
不符合约定的模型提案返回 422 ASSISTANT_INVALID_RESPONSE,课程保持原状,不使用预设修改作为替代。请求文本的类型、长度或 HTML 内容不符合要求时返回 400 INVALID_ASSISTANT_FIELD;输入安全拦截仍可能返回 CONTENT_BLOCKED 或 PERSONAL_DATA_BLOCKED。助手生成与课程大纲、课时生成和独立对话共用账号的模型频率与并发限制;读取、应用、放弃不会调用模型。
浏览器中按课程显示的助手对话保留在当前页面内存,可作为 history 提交;不会自动成为独立聊天会话。修改提案的回复与变更内容保存在服务端,课程或账户删除时随之删除。每账户最多保留 30 条待处理提案,不自动删除;达到上限返回 409 PROPOSAL_LIMIT,先处理已有提案再提出新修改。公共 /v1/ 助手请求也进入有效密钥请求元数据统计。
COURSE PLATFORM / REST REFERENCE
课程 API 与结构
公共课程 API 使用 /v1/courses 和 Bearer 密钥;网站课程功能使用 /api/courses 和账户 Cookie。两者操作当前账户的同一组课程,不能读取或修改其他账户项目。
| 公共路径 | 用途 | 响应 / 模型调用 |
|---|---|---|
GET /v1/courses | 列出当前账户的课程元数据与 generatedLessonCount。 | {"courses": [...]} / 否 |
POST /v1/courses | 生成课程大纲并保存项目。 | 201 {"course": {...}} / 是 |
GET /v1/courses/{id} | 获取课程与全部课时。 | {"course": {...}} / 否 |
PATCH /v1/courses/{id} | 编辑标题、目标或材料。 | {"course": {...}} / 否 |
DELETE /v1/courses/{id} | 删除课程及所属课时。 | {"ok": true} / 否 |
POST /v1/courses/{id}/lessons/{lessonid}/generate | 为指定课时生成活动方案。 | {"course": {...}, "lesson": {...}} / 是 |
PATCH /v1/courses/{id}/lessons/{lessonid} | 编辑课时内容。 | {"course": {...}, "lesson": {...}} / 否 |
网站端点具有相同路径后缀,将 /v1 替换为 /api。Cookie 管理端点仍要求网站登录及同源请求,不使用 Bearer 认证。
创建课程
/v1/courses真实模型大纲生成{
"title": "轮流与等待:家庭互动活动",
"topic": "在共同游戏中表达选择与尝试轮流",
"goal": "提供表达想法、听取回应和交接材料的活动机会",
"audience": "parent",
"age_group": "5-6",
"lesson_count": 4,
"session_minutes": 15,
"materials": "积木、两张不同颜色的纸;由一名成人带领"
}
| 字段 | 类型 | 说明 |
|---|---|---|
title | string | 课程名称,1—100 字符。 |
topic | string | 课程围绕的主题,1—300 字符。 |
goal | string | 期望成人组织的活动机会或课程目标,1—1000 字符。 |
audience | string | parent 或 educator。课程创建必须显式指定;对话接口可缺省为 parent。 |
age_group | string | 3-4、5-6、7-9、10-12。 |
lesson_count | integer | 3—8 个课时。 |
session_minutes | integer | 每课时安排 10—45 分钟。 |
materials | string | 可用材料和组织条件,最多 2000 字符,可为空字符串但不能省略字段;不填写参与儿童的身份信息。 |
课程与课时对象
创建请求的八个字段均必须提交;每账户最多保存 50 门课程。请求使用 age_group 等下划线字段,返回的课程对象使用 ageGroup 等驼峰字段。以下展示完整字段形态,课时仅列一个结构片段;示例不是实际生成结果。
{
"id": "example-course-id",
"title": "轮流与等待:家庭互动活动",
"topic": "共同游戏与轮流",
"goal": "提供表达与交接材料的活动机会",
"audience": "parent",
"ageGroup": "5-6",
"lessonCount": 4,
"sessionMinutes": 15,
"materials": "积木、彩纸",
"status": "draft",
"createdAt": "2026-10-11T08:00:00+00:00",
"updatedAt": "2026-10-11T08:00:00+00:00",
"lessons": [{
"id": "example-lesson-id",
"order": 1,
"title": "共同决定第一步",
"objective": "为成人带领的共同选择提供步骤",
"focus": "表达选择与回应",
"activities": [{
"title": "选择一种搭建方式",
"minutes": 5,
"instructions": "【结构示意】成人提出两个可行选择,邀请参与者表达想法。"
}, {
"title": "共同尝试",
"minutes": 5,
"instructions": "【结构示意】按照选定方式尝试,成人留出回应时间。"
}, {
"title": "收尾与交流",
"minutes": 5,
"instructions": "【结构示意】共同整理材料,用简短问题回顾过程。"
}],
"homePractice": "【结构示意】在下一次共同活动中再次尝试表达选择。",
"reflectionPrompts": ["哪些表达有助于活动继续?"],
"observationPoints": ["注意成人是否留出回应的时间。"],
"adaptations": "【结构示意】可用图示或指认表达选择。",
"generatedAt": "2026-10-11T08:05:00+00:00"
}]
}
generatedAt: null 表示尚未完成课时活动生成;时间戳表示生成完成时间,不能当作人工审核时间。generatedLessonCount 表示已生成活动的课时数量,不是完成教学或效果达标的数量。
编辑课程与课时
课程 PATCH 只接受 title、goal、materials。课时 PATCH 接受 title、objective、focus、activities、homePractice、reflectionPrompts、observationPoints、adaptations;提交需要更改的字段,其余内容保留。列表类字段作为整体替换,不是逐条追加。
{
"objective": "围绕当前材料组织一个简短的轮流活动",
"observationPoints": [
"活动说明是否足够清楚?",
"是否需要减少等待或改变材料交接方式?"
]
}编辑标题、目标或材料不会自动重新生成课时。生成接口应由明确的用户操作触发;查看、列表与编辑不调用模型。大纲或活动未通过结构校验时返回 422 COURSE_INVALID_RESPONSE,不保存模板替代结果。涉及模型的课程请求与网站 / API 对话共用账号的并发与频率限制。再次生成成功时会覆盖该课时的活动内容及生成时间,包括此前手动修改的内容;生成失败时保留原内容。
编辑字段约束
| 字段 | 课时编辑规则 |
|---|---|
title | 1—100 字符。 |
objective / focus | 各 1—1000 字符。 |
activities | 1—8 项,每项只包含 title(1—100 字符)、minutes(1—45 的整数)、instructions(1—2000 字符);所有项的分钟数之和必须等于课程的 sessionMinutes。 |
homePractice / adaptations | 各最多 2000 字符,人工编辑时可设为空字符串。 |
reflectionPrompts / observationPoints | 各 0—6 条字符串,每条 1—500 字符;人工编辑可提交空数组。 |
generatedAt / 编号与排序 | 服务端管理,不能通过 PATCH 改写。 |
每次 PATCH 至少提交一个允许字段。课程标题、目标和材料采用创建时相同的长度规则。模型生成的课时必须具有全部八个内容字段,文本非空、反思与观察各 1—6 条;人工编辑允许上述特定字段留空。结构校验确认的是字段和时长约定,不是活动效果或年龄适宜性的验证。
课程错误码
| HTTP / code | 说明与处理 |
|---|---|
400 INVALID_COURSE_FIELD | 检查必填字段、允许编辑字段、长度、枚举与活动时长之和。 |
404 COURSE_NOT_FOUND404 LESSON_NOT_FOUND | 编号不存在或不属于当前账户;从当前课程详情获取正确编号。 |
409 COURSE_LIMIT | 达到每账户 50 门课程上限;删除不再使用的项目后创建。 |
409 CHAT_IN_PROGRESS | 同账户另一个模型任务尚未结束,等待后再提交。 |
422 COURSE_INVALID_RESPONSE | 上游输出未通过课程结构校验,当前生成结果不保存;调整目标或条件后由用户决定是否重新生成。 |
课程接口同时可能返回既有的认证、内容过滤、限流与上游模型错误,参见错误处理。
课程调用示例
curl --request POST "${VIDOLEBU_BASE_URL}/courses" \
--header "Authorization: Bearer ${VIDOLEBU_API_KEY}" \
--header "Content-Type: application/json" \
--data '{
"title": "小组轮流活动",
"topic": "共享材料与表达选择",
"goal": "为参与者提供交流和轮流使用材料的机会",
"audience": "educator",
"age_group": "5-6",
"lesson_count": 4,
"session_minutes": 20,
"materials": "共享积木;四人小组;成人现场带领"
}'
# 保存返回的 course.id 与目标 lessons[].id 后,获取当前项目:
curl "${VIDOLEBU_BASE_URL}/courses/${COURSE_ID}" \
--header "Authorization: Bearer ${VIDOLEBU_API_KEY}"
# 为选定课时生成活动;不要重复提交未结束的生成请求:
curl --request POST \
"${VIDOLEBU_BASE_URL}/courses/${COURSE_ID}/lessons/${LESSON_ID}/generate" \
--header "Authorization: Bearer ${VIDOLEBU_API_KEY}" \
--header "Content-Type: application/json" \
--data '{}'
04 / AUTHENTICATION
认证与密钥管理
公共 API 使用 Bearer 密钥认证,与网站账户的 Cookie 登录分开。每个密钥关联创建它的账户;同一账户下的密钥共享模型生成限流。
Authorization: Bearer <YOUR_API_KEY>
| 生命周期 | 当前行为 | 集成建议 |
|---|---|---|
| 创建 | 在登录后的控制台创建;每账户最多 5 个有效密钥。 | 按应用或环境命名,分开开发与生产用途。 |
| 展示 | 完整密钥仅创建成功时返回一次;后续列表显示识别信息。 | 首次保存到私有密钥存储;遗失后撤销并新建。 |
| 保存 | 服务端保存密钥摘要,不保存可恢复的完整密钥。 | 不要把密钥提交到仓库、日志或对话内容。 |
| 撤销 | 已撤销密钥不能用于新的有效认证;已被上游接受的请求可能仍完成。 | 疑似泄露时立即撤销,再更新应用配置。 |
| 轮换 | 当前版本使用手动创建与撤销,不承诺自动轮换或自动到期。 | 先创建新密钥,更新服务端配置,再撤销旧密钥。 |
控制台管理端点
| 方法与路径 | 用途 | 认证 |
|---|---|---|
GET /api/api-keys | 密钥列表与请求元数据统计 | 网站登录 Cookie |
POST /api/api-keys | 创建密钥 | 网站登录 Cookie 与同源请求要求 |
DELETE /api/api-keys/{id} | 撤销指定密钥 | 网站登录 Cookie 与同源请求要求 |
创建请求提交 {"name": "应用名称"},名称最长 60 字符;成功时 HTTP 201 返回 {"key": {...}, "secret": "..."}。secret 是首次展示的完整值;key 是管理元数据,包含 id、name、prefix、createdAt、lastUsedAt、revokedAt。列表返回 keys 数组与 usage 请求统计,不返回 secret。统计字段为 requests、successfulRequests 和 failedRequests。撤销使用管理编号 id,不把完整密钥放入 URL。
这些是控制台内部端点,不能用 Bearer 密钥调用。业务应用应调用 /v1/ 接口,不需要模拟网站登录。API 不提供跨域浏览器接入;把模型请求放在自有服务端,避免将密钥放入网页脚本或移动应用客户端。
05 / API REFERENCE
对话生成
/v1/chat/completionsBearer 认证创建一次非流式文本生成。接口不保存 API 对话历史;如需连续对话,由调用方在 messages 中提交必要上下文。
{
"model": "vidolebu-parenting-1",
"messages": [
{"role": "system", "content": "请面向成年家长或幼教工作者,用简洁中文回答。"},
{"role": "user", "content": "5岁孩子结束游戏时不愿收拾。请给出可观察线索和两步回应建议。"}
],
"task": "insight",
"age_group": "5-6",
"audience": "parent",
"max_tokens": 1200,
"stream": false
}
消息对象
| 字段 | 类型 | 规则 |
|---|---|---|
role | string | system、user、assistant 三选一。 |
content | string | 1—4000 字符,不能为空白;不支持数组、多模态内容或附件。 |
| 其他字段 | — | 不允许。每条消息必须恰好具有 role 和 content。 |
调用方的 system 消息作为补充任务背景处理,进入上游时降为 user 上下文。服务端领域与安全提示始终先于调用方消息;调用方不能用自己的消息覆盖服务规则。
{
"id": "chatcmpl-example",
"object": "chat.completion",
"created": 1791676800,
"model": "vidolebu-parenting-1",
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": "【格式示意】先观察孩子是在舍不得结束游戏,还是不知道从哪里开始收拾,再根据具体情境安排简短回应。"
},
"finish_reason": "stop"
}],
"usage": {"prompt_tokens": 320, "completion_tokens": 95, "total_tokens": 415},
"ai_generated": true
}
| 响应字段 | 说明 |
|---|---|
id | 本次响应标识;不是可用于恢复 API 会话的历史记录编号。 |
created | 响应时间的 Unix 秒值。 |
choices[0].message.content | 生成文本。当前返回单个候选,不支持 n 参数。 |
finish_reason | 采用上游返回的有效结束原因;缺少有效值时可能为 null。收到 length 时应将内容视为可能截断。 |
usage | 可选。只有上游返回完整、有效且总数一致的 token 统计时出现;缺省时不要据字符数伪造统计。 |
ai_generated | 固定为 true,表示 AI 生成内容;应用展示时应保持用户可识别的生成内容提示。 |
06 / MODEL DISCOVERY
模型列表
/v1/modelsBearer 认证返回当前公开的服务模型标识。此端点不生成文本,不计入聊天次数窗口,但记录在有效密钥的 API 请求统计中。
curl "${VIDOLEBU_BASE_URL}/models" \
--header "Authorization: Bearer ${VIDOLEBU_API_KEY}"{
"object": "list",
"data": [{
"id": "vidolebu-parenting-1",
"object": "model",
"owned_by": "vidolebu",
"created": 1791676800
}]
}owned_by 标识提供该接口服务的一方,不是上游权重所有权声明。created 对应公共 API 契约引入日期,不表示豆包模型的训练或发布日期。模型列表可用也不意味着上游模型配置完整;未完成配置的生成请求会返回 MODEL_NOT_CONFIGURED。
07 / PARAMETERS
参数与限制
| 参数 | 类型 / 必需 | 默认值 | 范围与行为 |
|---|---|---|---|
model | string / 是 | 无 | 必须为 vidolebu-parenting-1。 |
messages | array / 是 | 无 | 1—12 条;每条 1—4000 字符;总文本不超过 16000 字符。 |
task | string / 否 | insight | insight、interaction 或 story。 |
audience | string / 否 | parent | parent(家庭)或 educator(幼教工作者)。 |
age_group | string / 否 | 5-6 | 3-4、5-6、7-9 或 10-12。 |
max_tokens | integer / 否 | 1800 | 128—1800;传入 JSON 整数。此值是生成 token 上限,不是汉字数。 |
stream | boolean / 否 | false | 只接受 false;true 或其他值返回 400。 |
传输与资源限制
| 限制 | 当前实现 |
|---|---|
| HTTP 请求体 | 后端 /v1/ JSON 最大 131072 字节(128 KiB);反向代理可设置更低上限。字节上限与文本字符上限分别检查。 |
| 请求编码 | Content-Type: application/json,提供 Content-Length;不接收 Transfer-Encoding 分块请求。 |
| 账号生成频率 | 每 60 秒最多 12 次、每 86400 秒最多 120 次;网站聊天、API 对话、课程大纲与课时生成与课程助手按账户共享。 |
| 并发 | 同一账户同一时刻只处理一个模型请求;服务端最多 8 个上游模型调用。繁忙时拒绝,不承诺排队。 |
| 限流状态 | 单进程内存中的滑动窗口,重启后重置;不是持久额度、计费规则或多实例统一配额。 |
| 未列出参数 | temperature、top_p、tools、tool_calls、response_format、n 等当前不支持。 |
只有通过参数、内容和配置检查并进入生成阶段的请求才进入聊天限流窗口;进入后即使上游失败,也可能已经消耗窗口次数。另有按客户端来源的请求频率保护,不能通过新增密钥绕过账号限制。
08 / CODE EXAMPLES
调用示例
以下代码仅使用明确支持的字段。JSON 响应兼容常见对话接口的基本结构,当前接口不是所有 OpenAI 参数或工具功能的完整实现。
Python 标准库
import json
import os
from urllib.error import HTTPError, URLError
from urllib.request import Request, urlopen
base_url = os.environ["VIDOLEBU_BASE_URL"].rstrip("/")
api_key = os.environ["VIDOLEBU_API_KEY"]
payload = {
"model": "vidolebu-parenting-1",
"task": "story",
"age_group": "5-6",
"max_tokens": 1200,
"stream": False,
"messages": [{
"role": "user",
"content": "写一则关于等待的短故事,供家长讲述,附两个开放式共读问题。"
}]
}
request = Request(
base_url + "/chat/completions",
data=json.dumps(payload, ensure_ascii=False).encode("utf-8"),
headers={
"Authorization": "Bearer " + api_key,
"Content-Type": "application/json"
},
method="POST"
)
try:
with urlopen(request, timeout=120) as response:
result = json.load(response)
text = result["choices"][0]["message"]["content"]
finish_reason = result["choices"][0].get("finish_reason")
usage = result.get("usage") # 可能缺省,不补造 token 数
# 由应用在合适位置展示 text,并保留 AI 生成内容提示。
except HTTPError as error:
try:
detail = json.loads(error.read()).get("error", {})
code = detail.get("code", "HTTP_ERROR")
except (ValueError, UnicodeDecodeError):
code = "HTTP_ERROR" # 代理错误不一定返回 JSON
raise RuntimeError(f"模型请求失败:HTTP {error.code} / {code}") from None
except URLError:
raise RuntimeError("网络连接失败,请检查服务地址与连接状态。") from None
连续对话请求
将上一轮需要保留的用户问题和模型回答放回消息数组,然后追加新问题。客户端自行维护历史;不要把无关会话、原始敏感记录或全部文档作为背景重复发送。
"messages": [
{"role": "user", "content": "结束积木游戏时,孩子总想再玩一会儿。"},
{"role": "assistant", "content": "【示意】可以先明确后续安排,再提供一个具体的收尾选择。"},
{"role": "user", "content": "如果提前提醒之后仍不愿意结束,下一步可以怎么回应?"}
]上下文格式示意;实际集成应使用本应用收到的真实上一轮回复。请求超时后不要立即无限重试,服务端可能仍在处理原请求。
09 / ERRORS
错误处理
公共 API 的错误响应采用以下结构。反向代理、连接中断等情况可能没有该 JSON 响应;客户端应同时处理 HTTP 状态与 JSON 解析失败。
{
"error": {
"message": "请选择 vidolebu-parenting-1 模型标识。",
"type": "invalid_request_error",
"code": "MODEL_NOT_SUPPORTED",
"param": null
}
}
| HTTP | code | 处理方式 |
|---|---|---|
| 400 | UNSUPPORTED_PARAMETERMODEL_NOT_SUPPORTEDSTREAM_NOT_SUPPORTED | 删去不支持的字段、修正模型标识、设置非流式请求。 |
| 400 | INVALID_MESSAGESMESSAGES_TOO_LONGINVALID_CHAT_OPTIONSINVALID_MAX_TOKENS | 依据参数表修正类型、枚举或长度后再发送。 |
| 400 | INVALID_JSONINVALID_REQUEST | 提交合法 JSON 对象,检查请求长度和传输编码。 |
| 401 | INVALID_API_KEY | 检查 Bearer 格式及密钥是否撤销。不要将密钥写入报错日志。 |
| 403 | INVALID_HOST | 使用正式配置的服务域名,检查反向代理传递的 Host。 |
| 404 / 405 | NOT_FOUNDMETHOD_NOT_ALLOWED | 检查路径和请求方法;本版本只提供本文列出的公共端点。 |
| 409 | CHAT_IN_PROGRESS | 等待该账户中的其他模型请求结束,再提交下一请求。 |
| 413 / 415 | REQUEST_TOO_LARGEINVALID_CONTENT_TYPE | 缩小 JSON 请求体、提供正确 Content-Type。空请求体也会被拒绝。 |
| 422 | CONTENT_BLOCKEDPERSONAL_DATA_BLOCKEDMODEL_OUTPUT_BLOCKED | 重新组织合适的任务,删除身份信息;不要尝试规避过滤或自动原样重发。 |
| 429 | RATE_LIMITED | 降低频率、串行组织同账户任务,并采用有上限的退避等待。 |
| 503 | MODEL_NOT_CONFIGURED | 运营方尚未完成上游配置;客户端反复重试不能解决。 |
| 503 | MODEL_BUSYSERVICE_BUSY | 减少并发,稍后进行有限重试。 |
| 502 / 504 | MODEL_UPSTREAM_ERRORMODEL_INVALID_RESPONSEMODEL_TIMEOUT | 处理为生成失败;设置有限重试和用户可理解的失败状态。 |
| 500 | INTERNAL_ERROR | 保留不含密钥或任务正文的故障信息,联系运营方。 |
type 分为 authentication_error、rate_limit_error、server_error 和 invalid_request_error;param 当前为 null。不承诺提供 Retry-After 或请求幂等去重,重试可能产生新的上游请求。
10 / APPLICATION PATTERNS
上下文与工作流
情境分析:先保留事实,再补充假设
将发生时间、可观察行为和成人回应组织为短文本,让模型区分已有事实与可能解释。需要进一步沟通时,接续一个具体问题,而不是每轮要求完整报告。模型提供的解释是待观察的假设,不是针对儿童的评估结论。
互动安排:用执行条件约束建议
明确可用时间、材料和参与方式。例如“只有十分钟、没有打印材料、由一名家长参与”比笼统要求“提高自我调节能力”更有助于形成可执行的方案。输出后由家长根据实际状态决定尝试、调整或停止。
故事工作流:素材生成与家长选用分开
指定主题、年龄和篇幅,生成之后由成年用户审阅故事、调整情节并选用共读问题。虚构人物的行为不能用于推断儿童性格,故事也不构成治疗或行为改善的证据。
应用端建议
- 将消息保留在 12 条和 16000 字符以内;长会话可由调用方整理为简短背景,注明其为概括而非原文。
- 按账户串行提交生成,明确显示等待、失败和完成状态,避免重复点击触发并发。
- 将模型回复作为文本处理;不要直接将其作为可信 HTML、可执行代码或系统指令。
- 收到截断回复时,提示内容可能未完成;不要自动把半段文字当作完整建议。
- 应用若需要固定字段,自行设计人工审阅流程;当前对话接口没有 JSON Schema 强制输出或工具调用能力;课程接口按单独定义的结构校验和保存。
11 / EVIDENCE & REFERENCES
证据与研究资料
当前回答由基础模型与领域提示生成,没有实时文献检索、引用匹配或逐条来源核验。应用不应把所有回答标成“有研究验证”,也不应自动将下列文献挂在无关输出之后。
引用的使用原则
- 区分研究原文、机构工作论文、活动指南和模型生成建议。
- 引用具体结论时核对作者、年份、研究人群、任务和局限;相关性不等于因果关系。
- 模型不能确认书目信息时,应说明无法确认,不能补造 DOI、样本量或效果数据。
- 向模型提供资料片段时,说明来源和摘录范围;针对片段的解释不能代表完整论文结论。
Young Children Develop in an Environment of Relationships
Working Paper No. 1 · 机构工作论文
关注儿童发起信号与成人回应之间的往返互动,强调关系和具体发展情境。可用于理解回应性互动概念,不是本平台的效果评估。
Enhancing and Practicing Executive Function Skills with Children from Infancy to Adolescence
活动指南 · 年龄与活动组织参考
按年龄提供活动示例,讨论工作记忆、抑制控制和认知灵活性的练习机会。活动参考不能直接转化为对个体发展结果的承诺。
Value added: Digital modeling of dialogic questioning promotes positive parenting during shared reading
Journal of Family Psychology, 36(6), 1010–1020 · DOI: 10.1037/fam0000932 · 2021 年在线发表
73 组美国 3—4 岁儿童家庭参与的两周随机研究,考察数字绘本对话提问示范与共读互动。研究中的工具、样本和观察期与本服务不同,不能据此宣称本服务已经验证有效。
公开来源作为独立延伸阅读列示,不表示机构合作、内容授权、模型训练来源或对本服务的认证。
12 / ARCHITECTURE
服务架构
网页与公共 API 共用领域任务规则和上游生成调用;账户、认证及留存由本服务处理。API 客户端不直接接触服务端配置的上游密钥。
- 校验服务域名和 API Key,确认账户及密钥状态。
- 检查任务参数、消息角色、长度及规则过滤条件。
- 获取账号请求锁,检查生成配置和聊天滑动窗口。
- 将服务端领域提示、任务与年龄参数、调用方上下文发送给上游。
- 检查返回文本,转交有效的结束原因及可选 token 统计。
- 记录有效密钥请求的路径、时间、状态与错误码;对话 API 不保存正文,课程 API 将生成内容保存到课程项目。
当前是 Python 标准库服务与 SQLite 的单实例实现。无分布式限流、任务队列、检索服务或异步作业接口。多实例、高并发及统一配额需求应在另行设计后接入,不能直接据当前接口推断已经支持。
13 / SERVICE SCOPE
使用范围
服务输出面向成年家长、监护人和幼教工作者。允许年龄参数描述儿童的发展背景,不表示儿童可以独立注册或直接使用本服务。
| 场景 | 服务处理原则 |
|---|---|
| 日常情境与互动 | 解释可能的情境因素,提供可由成年用户审阅和尝试的建议。 |
| 医疗、心理与其他专业判断 | 不形成疾病判断、人格标签、治疗方案或专业诊断结论;必要时建议联系适当的专业支持。 |
| 持续儿童陪聊 | 不以本服务构建直接面向儿童的持续拟人陪伴。 |
| 紧急危险 | 不继续提供伤害实施信息,提示联系当地急救或专业求助。 |
| 身份与敏感信息 | 不要求儿童姓名、学校、住址、证件、联系方式或详细健康记录;规则可能拦截可识别信息。 |
| 不适宜内容 | 对违规或危险任务进行拒绝或过滤;不输出色情、儿童性剥削、违法操作、仇恨或自伤实施指导。 |
当前安全措施包括有限的输入 / 输出规则与模型提示约束,不是完整风险覆盖证明。开发者应保留内容审阅和反馈渠道,不把过滤存在等同于完成安全评估或消除全部风险。
14 / DATA HANDLING
数据处理
输入上下文需要发送至配置的上游模型接口才能生成回答。“本服务不存储 API 正文”不能理解为“内容从未离开调用方”或“上游一定不留存”。
| 数据类别 | 本服务当前处理 | 开发者需要知道 |
|---|---|---|
| 网页会话 | 关联账户保存用户消息与模型回复,可通过网站删除会话或注销账户。 | 网页对话与课程项目是不同的数据路径。 |
| API 对话输入与输出正文 | /v1/chat/completions 用于当前生成,不写入本地会话库;课程 API 另按课程项目保存。 | 需要连续对话时由调用方提交上下文;自有应用的留存由开发者安排。 |
| 课程 AI 修改提案 | 关联账户和课程保存助手回复、逐字段变更及提案状态;应用后将变更写入课程。 | 不同于不保存正文的独立对话 API;放弃提案只更新状态,删除课程或账户才级联删除提案。 |
| 课程项目与课时 | 家庭和幼教课程都关联账户保存,包括生成大纲、活动正文、后续编辑与项目元数据。 | /api/courses 与 /v1/courses 使用同一账户项目库;删除课程会删除所属课时。 |
| API 请求元数据 | 有效密钥校验后记录路径、方法、时间、HTTP 状态及错误码;包括模型列表请求与失败请求。 | 统计不是计费账单,不包含网站聊天,也不是生成成功次数。 |
| API 密钥 | 保存摘要、名称、显示前缀、创建 / 最近使用 / 撤销时间。 | 完整值只在创建时返回一次;不能通过密钥列表恢复。 |
| 上游处理 | 任务提示及必要消息经配置的上游接口进行推理。 | 上游留存、日志和训练使用规则以实际供应商配置与协议为准,不能从本地实现推出。 |
| 限流状态 | 保存在当前服务进程内存。 | 没有持久日额度;重启或不同实例的状态不共享。 |
保留与删除
当前本地实现未提供自动到期清理策略。网页会话可由用户主动删除;注销账户会删除账户关联的会话、课程及课时、课程修改提案、密钥与 API 请求元数据。已提交举报按网站说明处理。删除行为针对本服务数据,不是对供应商数据、调用方日志或其他存储的删除保证。
请求统计的含义
控制台的成功 / 失败次数来自有效密钥请求的 HTTP 结果,含 GET /v1/models。它不等于 token 消耗、聊天额度剩余、计费金额或效果质量。上游 token 统计仅在生成响应中按可用性返回。
15 / RELEASE INFORMATION
版本与服务状态
本版本提供非流式对话、结构化课程草稿、课时生成与预览后应用的课程 AI 修改、公共模型列表、控制台 API Key 管理及请求元数据记录。OpenAPI 描述用于机器可读字段参考;本文解释领域任务与接入语义。
兼容性与变化
/v1 表示当前接口契约;公共模型别名不固定上游模型权重或永久保证输出行为一致。当前未发布长期兼容承诺、固定弃用周期或 SLA。集成应忽略未来增加的非必要响应字段,对必需字段缺失或格式异常进行失败处理,并留意发布说明后再采用新增参数。
备案信息
本项目处于材料准备阶段,尚未取得本服务备案编号。第三方基础模型的备案信息与本项目服务状态分别列示,不能把基础模型编号作为本项目获批证明。
火山方舟官方公示的文本基础模型为“云雀”,编号 Beijing-YunQue-20230821。该编号属于第三方基础模型;当前实际接入版本和合作资料仍以运营配置与供应商证明为准。查看火山方舟官方公示 ↗
机器可读描述采用 OpenAPI 3.1.0,当前契约文档版本 1.2.0,包含公共接口与控制台密钥管理端点。