strands.Agent 直接迁移,请使用 Osmosis Strands integration。
Rollout 使用此 integration 时,请安装 strands extra:osmosis-ai[strands]>=0.3.0rc1,<0.4。
集成对象
OsmosisStrandsAgent 保留常规 Strands constructor arguments,例如 tools、system_prompt、messages 和 callback handlers。
快速示例
ctx.prompt 已经是当前 sample 可直接使用的输入。如果您的数据集行包含 system_prompt 和 user_prompt,SDK 会在 workflow 运行前组装这些字段。工具
按常规方式用@tool 定义 Strands tools,然后传给 OsmosisStrandsAgent:
invoke_async() 调用就足够,因为 Strands 会在内部处理 model-tool loop。只有在需要额外停止条件,或需要跨多次调用设置硬上限时,才添加外层循环。
OsmosisRolloutModel
OsmosisRolloutModel 不接受 model_id。SDK 会在运行时使用占位符 model id openai/osmosis-rollout,并由 Osmosis 将其路由到当前策略。
请通过 params 传入 LiteLLM sampling options,与 Strands 的 LiteLLMModel 配置保持一致:
Sample 收集方式
当使用OsmosisRolloutModel 构造时,OsmosisStrandsAgent 会执行以下步骤:
1
读取 rollout context
它会从当前执行作用域读取活跃的
RolloutContext;如果没有可用 context,则抛出 RuntimeError。2
解析模型
它会创建一个直接连接到 rollout-scoped Osmosis chat-completions URL 的 LiteLLM model。
3
注册 agent
它会把自身注册到 rollout context,让 backend 可以将 Strands message history 收集为
RolloutSample。4
初始化 Strands Agent
它会用解析后的 model 委托给常规 Strands
Agent constructor。Tools、prompts、messages 和 callbacks 都会原样传递。RolloutSample.messages 会为 graders 保留 Strands 的 native message history。Integration 会另外为 ATIF persistence 执行 best-effort normalization;normalization 失败不会替换或丢弃 native sample。只有 source 提供 usage、model 和 timestamp fields 时,ATIF 才会包含它们。
完整示例
从 Strands Agent 迁移
如果您已有 Strands agent,可通过四步迁移:1
替换 agent import
将
from strands import Agent 替换为:2
替换 model
将固定 LiteLLM model 替换为 Osmosis 占位符:删除
model_id;训练集群会决定服务哪个 policy。3
替换 agent class
将
Agent(...) 替换为 OsmosisStrandsAgent(...)。保持 tools、system prompt、messages 和 callbacks 不变。4
包装到 AgentWorkflow
将 agent construction 和
await agent.invoke_async() 调用移入 AgentWorkflow.run()。Strands vs OpenAI Agents
OpenAI Agents SDK 路径请参见 OpenAI Agents 集成。
下一步
AgentWorkflow
查看共享 workflow contract。
Grader
为 Strands agent 生成的 sample 打分。
评估
为您的 Strands rollout 提交 evaluation run。
OpenAI Agents 集成
对比 OpenAI Agents SDK integration。