训练模式 (Training)
训练模式让 Agent 的所有者用代码和自己的 Agent 对话——就像在网页端「训练」页里聊天一样,Agent 运行在创造 / 训练态,可以根据你的反馈调整技能、知识和人设。 适合把「批量喂反馈」「定期回归训练」这类操作自动化。
训练对话会真实修改 Agent 的能力。对已经发布、正在服务用户的 Agent,请像在网页端训练一样谨慎。
和普通对话的区别
普通对话 (client.sendMessage) | 训练模式 (client.training()) | |
|---|---|---|
| 谁能用 | 任何能访问该 Agent 的人 | 仅 Agent 所有者和协作者 |
| Agent 的状态 | 服务态,按已发布配置回复 | 创造 / 训练态,可以修改自己 |
| 对话怎么区分 | 每段对话一个 conversationId | 每个 Agent 一条训练对话,Agent id 就是对话标识 |
| 可用令牌 | 个人 API Key、会话令牌 | 所有者的个人 API Key |
用工作区签发的会话令牌访问训练接口,会得到 404 Agent not found——对非所有者来说,这个 Agent 的训练入口是不存在的。
发一条训练消息
import { OpenhexClient, extractText, isTurnComplete } from '@openhex-ai/agent-sdk';
const client = new OpenhexClient({
apiKey: process.env.OPENHEX_API_KEY!, // 所有者的个人 API Key(mysta_…)
agentId: '你的-agent-id',
});
const training = client.training(); // 或 client.training('另一个-agent-id')
for await (const record of training.runTurn('以后回答价格问题时,先说明以官网为准。')) {
if (record.sender === 'assistant' || record.sender === 'agent') {
process.stdout.write(extractText(record));
}
if (isTurnComplete(record)) break;
}
runTurn 发送消息后读取最新一轮,读到结束事件为止;和普通对话一样,默认允许 180 秒没有事件(idleTimeoutMs 可调)。
方法
| 方法 | 说明 |
|---|---|
runTurn(message, opts?) | 发送并流式产出这一轮的记录 |
send(message, opts?) | 只发送,立即返回 { ok, msgId },回复需另外读流 |
stream(opts?) | 训练对话的原始记录流(先回放再实时),支持 lastEventId、turns |
messages(opts?) | 训练对话的历史,{ entries, hasMore };传 before 往前翻页 |
interrupt() | 打断正在进行的训练轮 |
// 只发送,自己读流
await training.send('把这条规则也记到知识库里');
for await (const record of training.stream({ turns: 1 })) {
if (isTurnComplete(record)) break;
}
// 读历史
const { entries, hasMore } = await training.messages();
// 打断
await training.interrupt();