註冊並分享邀請連結,可獲得影片播放與邀請獎勵。

檢索結果 真实代入
真实代入 貼吧
一個關鍵字就是一個貼吧,路徑全站唯一。
建立貼吧
用戶
未找到
包含 真实代入 的搜尋結果
平时温柔贤惠端庄的老婆如果变成视频里的女主角……她被坏学生们用木枷锁链牢牢固定在教室木架上,玩具深深埋进去嗡嗡震动,几个男生轮流从后面猛撞……黑丝被粗暴撕开,红高跟鞋还挂在脚踝上,被一群坏学生绑在课桌上轮流侵犯,她会不会也先咬着唇忍着不叫出声,然后被操到哭着求饶,却又忍不住主动抬屁股迎合?从一开始的挣扎求饶,到眼神彻底迷离、身体不受控制地颤抖痉挛,最后完全臣服的样子,那种被彻底填满、无法逃脱的羞耻快感……光是想想我都硬了。 兄弟们,如果是你,你最想先对她做什么?让她在教室里怎么浪叫? 想看我家骚妻被这样真实调教的,点赞+转发+关注 @FQMsexywife ,一起走进我们夫妻M的私密绿帽世界~ 黑丝情趣、绳缚露出、酒店多人、日常幻想……完整无码都在电报群,等你来一起玩弄! #Hotwife# #绿帽# #校园调教# #制服束缚# #多人轮奸# #真实代入# #夫妻分享#
顯示更多
0
4
3.1K
178
轉發到社區
在菜市场买的真狗链,这样我才能代入母狗的角色,而不是普通的情趣用品能带来的真实感
0
5
4.9K
386
轉發到社區
重庆极有韵味的人妻少妇 首次独家亮相 感谢粉丝的真实投稿生活淫乱日常 第一视角代入 人骚活好 超强互动体验 情趣制服诱惑口交 小腹纹身把撸点推到高潮
顯示更多
【存在感零】隐形人设定玩出新花样 男主隐身潜入房间,Coser正对镜补妆毫无防备,下一秒胸口被凭空揉住,惊得眼翻口水直流,腿一软直接跪地。4K无修正中字,全程第一视角代入,那种看不见的压迫感太真实了。 【完整版】 #Ai成人# #成人短剧# #杨幂# #Ai短剧# #存在感零#
顯示更多
和朋友交流,他分享了他对于两性关系的一些观点 好的关系,即使没有结果,也会对之后的人生,产生很多积极的影响 多年后,每每回想起来,不是抱怨,而是一种回味,一种被理解、被珍惜、被温柔对待过的证明 好的关系,颜值吸引只是第一步,真正持续的,是相互欣赏、信赖与安全感 这种安全感会带来很多的惬意,也会让人在关系里变得更松弛,更真实 我问他,有哪些值得回味的地方 朋友说,一些很多经验、观点,甚至一些小的生活技巧,都对他的人生产生了一些积极的影响 尤其是他认为,国人大多数人的这一生,生活在外,为了所谓的面子和“圣母心”,不好意思提要求、不好意思追求本该属于自己的权利、不好意思反抗 举了一些例子,比如: 1、一定要经常去各种不同的地方体验,生命在于体验,身临其境与书上的描述带来的感受是不一样的 2、要尝遍各种美食,也仍然是体验,喜欢吃不一定要吃得多,点到为止即可 3、去餐厅点餐,尤其是一些高级的餐厅,如果菜品不合胃口,或者不满意,不要不好意思说,给服务员提出来具体是哪里不满意,厨师一般会换新的 4、酒店的价格,尤其是高级酒店,一般至少有一半以上的价格是服务溢价,自己有任何需要,打个电话给前台就解决了,解决不了,再想其它办法,但实际上大部分都能得到解决 5、对于很多生活或者旅行上的安排,能花小钱找专业人士解决的,就花钱,比如找导游、找旅行顾问、找专职司机,花不了多少钱,但是行程会安排得更专业 6、很多金融产品实际上是有不少权益的,一般人不怎么去关注,就忘掉了,比如如果是金卡,会有高尔夫、航班贵宾厅这些权益,只需要花个3分钟研究下APP的各个入口,找到对应的权益位置,虽然确实一般会隐藏得比较深,但这3分钟的研究还是很划算的 7、在陌生环境里,凡是入口的东西,比如说水、饮料或者是吃的,不要离开自己的眼睛,和或者是视野 8、去人文景观旅行,还是有必要提前看一下相关的历史,去浏览的时候,代入感会更强,也会更容易理解那些人文建筑艺术背后的故事 …… 好的关系,确实能相互滋养,拓宽一个人的生命半径 它不只提供情绪价值,也会把另一个人多年积累的生活经验、判断方式、边界意识、审美方式,悄悄带进你的生命里 当然,关系也不只有美好的一面 一个人经历过好的关系之后,也会更清楚什么样的人值得靠近,什么样的人应该远离 比如,长期关系里,有几类人尤其需要谨慎 对于男性,要警惕有赌性的人、长期长不大的人、情绪极不稳定的人 对于女性,也要警惕感情关系混乱的人、极度拜金或习惯贪小便宜的人、长期过度补贴原生家庭并牺牲小家庭边界的人 这些问题的本质,其实都指向同一件事:一个人是否有责任感、边界感、稳定性和基本的善意 选择伴侣,不能只看一时的吸引,更要看长期相处中的底层品质,以及是否能相互长期滋养 但更重要的是,在具备了一定的判断力的前提下,自己首先也要努力成为一个值得被优秀伴侣选择的人
顯示更多
如果你经常使用豆包,这30条指令,让豆包写得比我还像人!(亲测有效,建议收藏,也适用于其他AI大模型) 别再骂AI写的东西像“机器人念经”了,别说豆包写的文章的AI味很重了!其实问题不在豆包,在于我们给她的指令到底像不像人味。 我见过太多人,对着豆包输入“写一篇职场文章”“写一个带货文案”,然后看着输出的干巴巴、冷冰冰、全是套话的内容,摇摇头说“AI根本不行”。 其实不是AI不行,是你根本不会给它像人的指令。 同样是用豆包,有人写出来的东西没人看,有人靠AI日更10篇,篇篇10万+,评论区全是“太真实了”、“说到我心坎里了”。 我的好友莉莉用豆包写了3个月内容,从一开始写啥都像机器,到现在我看她写的文章,都说“你写的东西比真人还真”。莉莉小姐姐则跟我说,她全靠整理的这30条“拟人化指令”。 今天我把她深藏的30条拟人化的指令,毫无保留分享给大家,只要复制粘贴,你也能让豆包写出有血有肉、有情绪、有温度的文字。 先搞懂一个核心:为什么AI写得不像人? 答案很简单:你只告诉了AI“写什么”,却没告诉它“以什么身份写、用什么语气写、写给谁看、要达到什么效果” AI是个超级听话的执行者,但它没有自我意识。你给的指令越模糊,它写出来的东西就越通用、越没有灵魂。 反过来,你给的指令越具体、越细节,它写出来的东西就越像一个活生生的人。 下面精选出来的最常用、最有效的6大类30条指令,你可以直接拿去用。 一、身份代入指令:让AI变成“具体的人” 这是所有指令里最重要的一条,没有之一。 不要让AI当“万能专家”,要让它当一个有年龄、有职业、有经历、有缺点的普通人。 ✅ 直接复制用: 1. 请你扮演一个在工厂打工10年的70后大叔,用你朴实的语言,写一篇关于攒钱的文章,不要讲大道理,只说自己的真实经历。 2. 请你扮演一个刚辞职创业失败的95后女生,用你和闺蜜吐槽的语气,写一篇关于创业踩坑的帖子,情绪可以低落一点,但不要太消极。 3. 请你扮演一个退休在家带孙子的60后阿姨,用你唠家常的口吻,分享3个带娃的实用小技巧。 4. 请你扮演一个月薪5000的北漂打工人,写一篇关于周末宅家的日常,加入吃泡面、追网剧、不想上班这些细节。 心得:用了身份代入后,文章的评论率直接提升了3倍。读者喜欢看的不是专家的说教,而是和自己一样的普通人的故事。 二、语气风格指令:写出不同的“说话感觉” 同样的内容,用不同的语气说出来,效果天差地别。 ✅ 直接复制用: 1. 用“过来人语重心长”的语气,给刚毕业的大学生提5个忠告,不要说教,要像哥哥姐姐一样说话。 2. 用“怼人不带脏字”的语气,反驳一下“年轻人就该多加班”这个观点,要犀利但不要骂人。 3. 用“碎碎念”的语气,写一篇关于女生出门前的准备工作,加入各种纠结和小抱怨。 4. 用“严肃认真”的语气,写一篇关于食品安全的提醒,要让读者感觉到事情的重要性。 5. 用“幽默搞笑”的语气,写一篇关于减肥失败的经历,让读者看了能笑出声。 三、细节填充指令:让内容“有血有肉” AI写的东西空泛,最大的问题就是没有细节。 人会注意到豆浆的温度、油条的酥脆声、老板递餐时手上的油渍,而AI不会,除非你告诉它。 ✅ 直接复制用: 1. 在描述场景的时候,加入视觉、听觉、嗅觉、触觉的细节,比如饭菜的香味、下雨的声音、风吹在脸上的感觉。 2. 不要只说“我很开心”,要通过动作和神态来表现,比如“我激动得跳了起来,手里的奶茶都洒了一半”。 3. 在文章里加入1-2个具体的小例子,不要全是理论。比如写省钱,就写“我昨天买青菜,对比了三家超市,最后省了5毛钱”。 4. 加入一些生活化的口语和语气词,比如“哎”“对吧”“说实话”“你懂的”,但不要太多。 四、情绪共鸣指令:写出“真情实感” 能打动人的永远是情绪,而不是道理。 ✅ 直接复制用: 1. 在文章开头加入一个自己的亲身经历,引出主题,让读者一开始就有代入感。 2. 在描述困难的时候,加入一点无助和委屈的情绪;在描述成功的时候,加入一点喜悦和感慨。 3. 不要写完美的人,要写有缺点、会犯错的人。比如“我当时也犯了一个很傻的错误,现在想起来都后悔”。 4. 在文章结尾,说出大多数人心里想说但没说出来的话,引发共鸣。比如“其实我们努力工作,不是为了大富大贵,只是为了能过上普通人的生活”。 五、平台适配指令:专门写给头条用户看 不同平台的用户喜好不一样,指令也要跟着变。 ✅ 头条专属指令: 1. 按照头条爆款文的结构写,开头用痛点引入,中间分3-5点,每点配一个真实案例,结尾引导评论互动。 2. 标题要包含数字和结果,比如“我靠这3个方法,一个月涨粉1万”。 3. 段落要短,每段不要超过3行,手机阅读体验好。 4. 多用加粗和小标题,突出重点,让读者一眼就能看到核心内容。 5. 结尾一定要加一个互动问题,比如“你有没有过这样的经历?评论区聊聊”。 六、改稿润色指令:把“机器文”变成“真人写的” 如果你已经有了一篇AI写的初稿,用下面这些指令,一键改成真人风格。 ✅ 直接复制用: 1. 把下面这段文字改得像一个普通人在分享自己的亲身经历,去掉所有书面化的表达和专业术语。 2. 把这段文字里的所有“笔者”“我认为”改成“我”,加入一些口语化的词,让它更自然。 3. 给这段文字增加一些细节和情绪,让它更有感染力。 4. 把这段长文拆成短段落,加上小标题,适合在头条发布。 最后说几句: 真的,AI不是洪水猛兽,它是普通人最好的工具。 以前写一篇文章要花3个小时,现在用对指令,10分钟就能搞定,而且质量比自己写的还好。 不要再说自己文笔不好、不会写东西了。在这个时代,会用工具,比会写文章更重要。 你平时用AI写东西遇到过什么问题?评论区说说。
顯示更多
这几天总是刷到一部国剧「早春晴朗」,还以为又是流量堆出来的,看了几眼后才发现好像是我浅薄了,是真有点东西。 很多观众在评论区聊真人感,认为越是在AI横行的年代,就越是需要这样的剧集来洗眼睛,而制片方甚至配置了亲密戏指导,给性萧条久矣的年轻人点了一把火。 然后我眼瞅着「早春晴朗」播出首周又拿下了Netflix全球非英语剧集周榜Top 2,如果我没记错,这应该是国产剧有史以来冲到的最高名次。 以前能够挤进Netflix热播榜单的华语剧集,大多数都要靠奇观题材,比如古装、犯罪和民俗是最受欢迎的三大类。 这倒没什么不好,但它也难免给中国影视「贴标签」,好像离了那些吸引围观的要素,就不剩下多少有价值的内容了。 「早春晴朗」讲了一个正常的爱情故事,没有刀光剑影,没有古墓奇谭,没用凶杀悬疑,年轻孤独的男女在大城市打拼,租房、加班、求爱、直到寻得归属感。 然而就是普通人想要过好日子这件事情,打动了全球的观众,不但国内登顶热度榜,让剧集大盘水位持续飙升,在Netflix也跻身了54个国家和地区的日榜前10,连巴西都冲到了日榜第2。 就像我们以前看美国的「老友记」,看日本的「东京爱情故事」,看韩国的「浪漫满屋」,都是同样的逻辑,扎实的剧本,优秀的演技,认真把故事讲好,文化就不会存在边界。 同一个世界,同一个梦想,这句话永远不会过时。 尊重从来都是站着得来的,而且我觉得最标志性的转折在于,国剧出海这件事情,终于从满足奇观想象的赛道,顺利切到了文化共情输出的赛道。 尤其是在这个爽感可被算法批量制造的「末法」时代,我的建议是,还得多珍惜愿意沉下来去拍活人感的剧吧,这个市场并没有萎缩,更不会被取代,它只是被亏欠了太多。 真诚是能被感受到的,人类之所以会被他者的故事打动,是因为能从里面看到自己的处境,共鸣很重要。 不过,拍出「活人感」其实是个技术活。当整个行业都在被效率裹挟,忙着拥抱AI、虚拟角色和低成本短剧时,「早春晴朗」反而在提醒一件事:演员真实的表演,才是长剧的核心资产。 一句话说出口前的停顿,一次明明在意却不愿完全表露的克制,这些只有真人才能演出来的细腻,才决定了观众能不能代入。 你看井柏然和孙千在剧里的状态,贼细腻,观众刷个片段都上头,看正片更是连呼吸都得屏住。 短内容可以快速制造情绪,AI可以提高生产效率,但一部真正能穿透观众的剧,依然是表演、文本、镜头和节奏达到平衡后共同托举的结果。 所以「早春晴朗」这次的大出圈,更像是优酷坚持精品内容战略的一次集中呈现。选题有现实温度,创作者有稳定表达,演员能把人物落到生活里,平台又能把热度推向海外讨论。 我看「早春晴朗」的编剧高小娴说,希望观众能从这部剧里得到片刻的治愈,所以没有设计爱情大过天的那种浪漫剧情,也不走「灰姑娘」的反差叙事,就是为了尽可能的贴近现实主义,让大家知道成为对的人、找到对的人是可行的人生。 真好啊,快来接吧。
顯示更多
0
68
99
10
轉發到社區
AWS 资深专家解决方案架构师 Daniel Abib 在官方博客里算了一笔账:同步调用时,Lambda 的计费时长几乎等于 agent 思考的时长,等待本身在按全量计算计费。 《在无服务器流水线中异步调用 Amazon Bedrock AgentCore agent 的模式》 在无服务器流水线里异步调用 Amazon Bedrock AgentCore agent,可以消除你的 AI agent 处理请求期间的空转计算成本。一个常见的例子是文档校验:在房地产融资的后台办公室里,agent 可以读取房产记录或贷款合同,推理信息是否完整、一致,然后返回一个下游步骤据此行动的结论。Amazon Bedrock AgentCore 提供了一个平台,让你能用任意框架或模型大规模地构建、连接和优化 agent。 这类 agent 带来一个传统流水线步骤没有的特性:它们在回答之前要思考一会儿。思考多久取决于提示词、模型和文档,但很少是即时的,而这个延迟改变了你调用它的方式。最常见的首版实现是用一个计算服务(比如 AWS Lambda 函数)调用 agent 并等待响应。函数等待期间什么都不做,但它仍在运行,每一秒都在计费。 值得看清成本到底落在哪里,因为调用的两侧计费方式不同。Amazon Bedrock AgentCore runtime(Amazon Bedrock AgentCore 的一项能力)采用基于消耗的计费模型,agent 空闲时不收 CPU 费用。例如,在等待大语言模型生成响应、或等待工具或 Model Context Protocol(MCP)调用返回的这段时间里,你只按内存计费,不按 CPU 计费。调用 agent 的那个计算服务没有这种特性。发出同步调用的 Lambda 函数、容器或 Amazon EC2 实例会一直阻塞,在 agent 响应之前始终持有(并支付)完整的计算配额。所以浪费不在 agent 一侧,而在调用方——它挂在一个打开的连接上空转。 这就让调用方的成本跟着 agent 的运行时间走。阻塞在 agent 上的函数,计费时长几乎等于整个处理时间;而启动 agent 后立即返回的函数,只按短暂的派发计费。解法是在等待期间释放调用方的计算资源,等 agent 出了结果再恢复流水线。本文展示三种做到这一点的模式(task-token 回调、直接服务集成、durable function),并与阻塞式反模式对比。 示例流水线 为了让各模式在同等条件下比较,我们把每个模式都跑在同一条流水线上,只更换调用 agent 的那一步。这条流水线是一个刻意简单、虚构的场景(房地产融资文档校验),选它只是为了把编排讲清楚。它不是本文的重点,它代表任何先调用 agent(或其他慢服务)、再对结果采取行动的流程,你可以把自家用例代入。 流水线有五个阶段: 1. Extract:一个 Lambda 函数对文档做 OCR 和文本提取。(提取是模拟的,所以场景不需要真实文档。) 2. Identify:一个 Lambda 函数对文档分类并设置路由标志(shouldOrganize、shouldValidate)。 3. Route:一个 Choice 状态根据这些标志决定流程走向。 4. Organize and Validate:一个 Parallel 状态在组织文档的同时,让 Amazon Bedrock AgentCore agent 在另一个分支里做校验。这个 Validate 分支是各模式之间唯一变化的部分。 5. Result:一个 Lambda 函数处理 agent 的结论,决定下一步动作(批准,或退回修改)。 图示如下:水平流程依次是 Start、Extract、Identify、Route(Choice)、并行的 Organize-and-Validate 阶段、Result、End,Validate 分支被标为可更换,图例列出了它的四种实现方式:阻塞反模式、模式 1(task token)、模式 2(直接集成)、模式 3(durable function)。流水线本身在每种情况下保持不变,只有 Validate 分支被换掉来演示各自的调用模式。 同一个 Amazon Bedrock AgentCore agent 服务全部四种情况。agent 检查每次调用并选择如何响应:如果收到 AWS Step Functions 的 task token,就在完成时唤醒那个执行;如果收到 durable function 的 callback ID,就唤醒那个 durable function;两者都没收到,就直接在响应里返回结论。这意味着你可以更换编排模式,而不必修改或重新部署 agent。 agent 如何不阻塞调用方就把控制权交回来 机制是 agent 的 action group 里的一个"归还控制权"动作。agent 推理结束后,调用一个 Lambda,把结果和 task token 发回 Step Functions。(后面的模式 2 会让 Step Functions 直接与 AgentCore 集成,完全省掉这个 Lambda。) 下面这段代码是这个 Lambda 的核心: The tool the agent calls once it reaches a verdict @tool def conclude_validation(approved: bool, issues: list, summary: str) -> str: verdict = {"approved": approved, "issues": issues, "summary": summary, "source": "agentcore"} # A Step Functions task token was passed: resume that execution if task_token: sfn.send_task_success(taskToken=task_token, output=json.dumps(verdict)) return "Step Functions resumed." # A durable-function callback ID was passed: resume the durable function if callback_id: lambda_client.send_durable_execution_callback_success( CallbackId=callback_id, Result=json.dumps(verdict).encode("utf-8")) return "Durable function resumed." # Neither was passed: this is a synchronous call, return the verdict inline return "Verdict recorded." 入口函数根据同样的信号决定在后台跑还是同步跑: @app.async_task async def validate_document_async(prompt, document, extracted_text): # Background work; conclude_validation fires the right callback when done agent = build_agent() await agent.invoke_async(message(prompt, document, extracted_text)) @app.entrypoint async def handler(event): task_token = event.get("taskToken") # passed by the task-token pattern callback_id = event.get("callbackId") # passed by the durable-function pattern # Asynchronous: start the work and return "accepted" right away if task_token or callback_id: asyncio.create_task(validate_document_async(...)) return {"status": "accepted"} # Synchronous: run now and return the verdict in the response agent = build_agent() await agent.invoke_async(message(...)) return verdict agent 就位之后,本文剩下的部分聚焦于调用它的四种方式。代码和基础设施定义都是示例中的摘录,用来演示每种模式。 调用 agent:四种方式 先讲阻塞式反模式以确立基准成本,再展示避开它的三个模式。 阻塞式反模式 最直接的实现:在同一个 Lambda 函数里调用 agent 并等待答案。它能用,而且实现简单——这正是它如此常见的原因——但函数在 agent 思考的整个期间一直活着。 // The Lambda function blocks here until the agent responds const response = await agentcore.send( new InvokeAgentRuntimeCommand({ agentRuntimeArn: AGENT_RUNTIME_ARN, payload: new TextEncoder().encode(JSON.stringify(payload)), runtimeSessionId: sessionId, }) ); // The function stays alive and billed for the entire time the agent is thinking. 函数的计费时长最终大约等于 agent 的处理时间。后面三个模式消除这段空闲成本,各自做出不同的取舍。特别是模式 2 使用 Step Functions 对 AgentCore Harness (InvokeHarness) 的优化集成,完全去掉 Lambda。 模式 1:task-token 回调 + 派发函数 这个模式在路径里保留一个 Lambda 做自定义逻辑,但去掉空闲成本。Step Functions 用 waitForTaskToken 集成调用这个函数——传入一个 task token 后暂停执行。函数用这个 token 启动 agent,然后在几秒内返回。执行保持暂停,不产生任何计算计费,直到 agent 用这个 token 调用 SendTaskSuccess 恢复它。 // Start the agent, pass the task token, and return without waiting const response = await agentcore.send( new InvokeAgentRuntimeCommand({ agentRuntimeArn: AGENT_RUNTIME_ARN, payload: new TextEncoder().encode(JSON.stringify({ ...payload, taskToken })), runtimeSessionId: sessionId, }) ); // Returning here does not complete the step. Step Functions stays paused until // the agent calls SendTaskSuccess with this task token. return { dispatched: true }; 对应的状态从上下文取出 token,并设置超时和心跳作为安全网——这样沉默的 agent 会让执行干净地失败,而不是无限期停在那里: "ValidateDispatch": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke.waitForTaskToken", "Parameters": { "FunctionName": "${ValidateDispatcherFunctionArn}", "Payload": { "taskToken.$": "$$.Task.Token", "document.$": "$.document", "extractedText.$": "$.extract.extractedText", "executionId.$": "$$.Execution.Id" } }, "TimeoutSeconds": 120, "HeartbeatSeconds": 60, "Next": "AgentCoreValidation" } 成本。 Lambda 函数仍然会跑,但只跑到启动 agent 并返回为止:几秒钟,无论 agent 之后要跑多久。你只为这次短暂派发付费,不为等待付费——因为函数在 agent 干活时已经关掉了。等待由暂停的 Step Functions 执行承担,它不为空闲计算计费。这是与阻塞版本的关键区别:阻塞版本里函数的计费时间跟着 agent 的处理时间走。 模式 2:直接服务集成 当你不需要围绕 agent 调用写自定义代码时,可以去掉派发函数,让 Lambda 完全离开路径。Step Functions 可以通过 AWS SDK 服务集成直接调用 Amazon Bedrock AgentCore,所以 agent 的响应直接流入下一个状态。Validate 分支于是变成单个 Task 状态: "ValidateDirect": { "Type": "Task", "Resource": "arn:aws:states:::aws-sdk:bedrockagentcore:invokeAgentRuntime", "Parameters": { "AgentRuntimeArn": "${AgentRuntimeArn}", "RuntimeSessionId.$": "States.Hash($$.Execution.Id, 'SHA-256')", "Payload.$": "States.JsonToString($.prep.agentInput)" }, "ResultSelector": { "raw.$": "$.Response" }, "TimeoutSeconds": 120, "Next": "ParseVerdict" } 成本。 路径里没有 Lambda,所以没有空闲的 Lambda 计算可付。Step Functions 承担等待,Standard 工作流按状态转换计费而不是按等待时长计费——处理期间的实质成本只有 agent 本身。 模式 3:Lambda durable function 如果你更愿意用代码而不是状态机来表达编排,Lambda durable function 给你同样的成本行为。用 @aws/durable-execution-sdk-js SDK,流水线阶段变成 context.step 调用,并行工作变成 context.parallel,等待 agent 变成 context.waitForCallback。等待期间函数挂起,不计计算费。agent 用 SendDurableExecutionCallbackSuccess 恢复它。 // Suspend the function until the agent calls back const result = await ctx.waitForCallback( "validate-agentcore", async (callbackId) => dispatchAgentCore(callbackId, document, extractedText, executionId), { timeout: { seconds: 120 } } ); 成本。 一个函数承载整条流水线,但挂起等待 agent 期间不按计算计费。你只为挂起之间短暂爆发的那几次执行付费——与 task-token 模式相同的经济性——而不是为等待付费。 测量差异 重点不是某个具体数字。agent 的运行时间随提示词、模型和文档变化。重要的是 task-token 模式里两个值之间的关系:Validate 状态活跃了多久,对比派发函数实际被计费了多久。我们测试中的单次运行让这个关系可见: Step Functions, ValidateDispatch state Returned (TaskSubmitted): 14:08:19 <- the function returned and shut down Resumed (TaskSucceeded): 14:08:34 <- the agent woke the execution State active ........ 19.6s Lambda, dispatcher function (CloudWatch REPORT) Billed duration ..... 4.8s Result: the state was active for 19.6s, but the function was billed for 4.8s. The ~14.8s in between is wait time with no Lambda function running. 在 Step Functions 的事件历史里也能看到同样的事:task-token 模式下,TaskSubmitted 事件(函数返回)与 TaskSucceeded(agent 恢复流程)之间隔着 agent 的处理时间。同步调用没有这样的间隔。 下表总结了每种模式下 Validate 分支(前面图示中高亮的部分)的实现方式: • 编排器:阻塞=Step Functions;模式 1=Step Functions;模式 2=Step Functions;模式 3=Lambda(代码) • 路径中的 Lambda:阻塞=有,存活且计费;模式 1=有,但提前返回;模式 2=无;模式 3=durable function 本身(挂起) • 等待期间的空闲 Lambda 计算:阻塞=为整个等待付费;模式 1=无;模式 2=无;模式 3=无 • agent 调用周围的自定义代码:阻塞=有;模式 1=有;模式 2=有限(状态转换);模式 3=有 • 调用方与 agent 解耦:阻塞=否;模式 1=是;模式 2=否;模式 3=是 • 相对复杂度:阻塞=最低;模式 1=较高(token 和回调的 IAM);模式 2=最低;模式 3=中等(检查点/重放) 读这张表时有一个提醒:总流水线时长不是有用的比较指标,因为它被 agent 自己的推理时间主导——每次运行都不同,而且在所有场景里基本相同。有意义的差异是等待期间你为多少计算付了钱,这由上表和计费时长读数体现。agent 运行时间增长时,派发函数的计费时间保持平稳。上面的数字来自单次运行,把它们当作这个关系的示意而非基准,请测量你自己的负载。 如何选择模式 下表总结了取舍,帮你选择模式: • 调用方成本:阻塞=整个 agent 处理时间;模式 1=几秒(仅派发);模式 2=零(无 Lambda);模式 3=几秒(仅派发) • 集成工作量:阻塞=低;模式 1=中高(IAM、心跳、超时);模式 2=低(单个 Task 状态);模式 3=中等(检查点-重放模型) • 业务逻辑位置:阻塞=在 Lambda(前 + 后);模式 1=在 Lambda(前 + 后);模式 2=只在 Amazon States Language(ASL)(内置函数);模式 3=在 Lambda(顺序代码) • 最适合:阻塞=原型、短 agent;模式 1=自定义前后处理逻辑;模式 2=纯编排、无自定义代码;模式 3=单个函数里的复杂异步工作流 最佳实践 防 agent 永不回答。 给每个 waitForTaskToken 状态设置 TimeoutSeconds,让执行以 States.Timeout 失败,而不是无限期挂起。如果你的 agent 发送心跳,也设置 HeartbeatSeconds 以更快发现死掉的 agent。捕获错误并路由到失败或人工审核路径。 重试时使用稳定的会话 ID。 把 sessionId 设为从执行上下文派生的值(比如 Step Functions 执行名),这样重试会恢复同一个 agent 会话,而不是重新开始。task-token 模式里在派发函数中设置;直接集成模式里在 Task 状态参数中设置。 打开 AWS X-Ray。 在 Step Functions 和 Lambda 配置中启用 Tracing: Active。X-Ray 会精确显示 agent 思考了多久、调用方等待了多久,确认你的模式确实在间隔期间释放了计算。 按速度而不是按 agent 的负载来配派发函数。 派发函数只序列化请求并调用端点。256 MB 内存和 30 秒超时通常就够。重活都在 agent 那边。 成本 这些模式会产生 Lambda 计算、Step Functions 状态转换、durable function 执行存储的费用,以及所有方案共有的 Amazon Bedrock AgentCore runtime 和 Amazon Bedrock 模型推理费用。agent 和模型成本在四种情况下相同。架构只改变编排开销,以及阻塞反模式中浪费的空闲 Lambda 计算。当前价格请查看各服务的定价页。 结论 把 AI agent 放进流水线是简单的部分。让它被经济地调用,才是区分原型与生产设计的地方。阻塞在 agent 上的 Lambda 函数实现简单,却在悄悄烧钱——计费时间里的大部分都在等待。本文展示了三种规避方式:需要在路径里保留 Lambda 时用 task-token 回调;最简单的情况用直接服务集成;偏好用代码表达编排时用 durable function。三者由同一个 Amazon Bedrock AgentCore agent 驱动,它会根据被调用方式调整自己的响应。 完整示例(完整的 agent、状态机定义和 durable function)在 GitHub 的 sample-bedrock-agentcore-async-stepfunctions 仓库。想深入的话,可以看 Amazon Bedrock AgentCore 关于异步任务处理的文档。生产部署请使用 Amazon Bedrock Guardrails,对 agent 的输入输出实施负责任 AI 控制。 原文: #Bedrock# #Serverless# #StepFunctions#
顯示更多