AI宝库

AI宝库首页 › AI 资讯 › 在GCP上与多Agent Swararms建立对话商务:一种工作原型

在GCP上与多Agent Swararms建立对话商务:一种工作原型

来源:Google Developers · 发布时间:10-28 · 由 AI宝库每小时自动聚合

本文为一个技术博客提供出版模板和元数据结构,其重点是使用A构建对话用户界面

OCT. 27, 2026 (英语).

想象一下,像给朋友发短信一样自然地订购你的周用品:"嘿,我们没有牛奶和鸡蛋了。 周五电影之夜你还可以加点零食吗?".

我们分享了对话商业的建筑蓝图,提出三层脱钩设计(入侵、记忆和Cognition)

虽然蓝图建立了纸面架构,但生产准备需要工作软件。 在此文中,我们取出蓝图,用一个功能原型"快乐交付"(Happy Clivery)来使其活出。

使用LangGraph,Gemini,FastAPI,和Google Cloud,我们将走过代码,状态机器,确定性财务工具,以及一个自动验证套件,展示这种多agent 集群的实际操作方式。

为了建立可靠的商业集群,我们实施了三层脱钩,处理每条客户短信的行程:

让我们来检查每一层是如何用自己的专用架构在代码中运行的。

在设计对话商务时一个常见的问题是:客户在智能手机上发送的信息实际上如何降落在地层一中,而这个架构能否支持WhatsApp以外的消息平台?

终端用户不直接与您的 Google Cloud 服务器通信。 相反,客户信息在登陆您的 Webhook 之前会穿过操作员的生态系统:

每个主要的消费者留言平台都运行在完全相同的基本合同上:一个同步的HTTPS POST webhook送出,严格的HTTP确认超时:

-WhatsApp(Meta Cloud API):需要快速的HTTP 200 OK确认,并使用HMAC-SHA256验证X-Hub-Signature-256头对准您的Meta App Secret. 如果您的服务器超时或返回非200状态,Meta 将发送标记为失败并启动指数回放( 最多7天),这可以触发重复订单发送。

- Google RCS业务通讯(RBM):通过Google Cloud Pub/Sub push或通过OAuth2/服务账户JWT无记名标志或有效载荷HMAC签名验证(X-Goog-Signature)认证的HTTPS网络呼号交付。 要求快速返回 HTTP 200 以避免 Webhook 发送重试。

- Apple 业务信息(AMB):通过Apple 批准的Message Services(MSP)交付。 通过提供商webhook签名,JSON网络签名(JWS),或具有即时HTTP 200 OK确认期望的互通TLS(mTLS)认证。

- SMS / MMS (Twilio, Sinch, Infobip):标准格式编码或JSON POST webhooks 与供应商特定的HMAC令牌(如X-Twilio-Signature)签名。

虽然不同平台的有效载荷图和密码头略有不同,但第1层摘取了所有客户端的差异:

- 安全签名验证器:通过平台特定签名验证器(MetaHmacValidator,RcsJwtValidator,AppleJwsValidator,TwilioHmacValidator)发送请求。

- 有效载荷正常化适配器:将供应商专用有效载荷转换成统一、通道不可知的罐装装置(CommonMessageEvent):

{

"通道":"什么",#或"弧","apple 消息","sms"

"sender id":"+1xxxxxxxxxxxxxx",#已验证的E.164电话号码

"正文":"出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出入".

"时间戳":1773428900

"raw metadata":{...} (中文(简体) ).

}

Python

复制

- 子- 150ms 同步握手:向 Google Cloud Pub/ Sub 发送犬形信息,并返回 HTTP 200 OK in < 150ms。

这保证了系统的其他部分——Session Store(Layer 2)和Agent 集群(Layer 3)——运行在干净的、正常的数据上,而不考虑shop从iPhone、Android RCS聊天或WhatsApp线索发送信息。

消息平台是完全无序的:每个短信都作为孤立的webhook事件而来。 为了提供连贯的购物经验,系统必须立即重建客户的全部上下文,而不必在每个回合重新阅读或重新分拆聊天日志的日子。

我们使用Cloud Memorystore(Redis)按客户已核实的电话号码(会话:{phone number})键来存储活动状态:

- 同步购物旅行(暂停和恢复):在现实生活中,人们不会在一个座位上完成命令。 一个顾客可能会在早上9点发短信:“给我的推车加一加仑牛奶”,关闭WhatsApp来接火车,下午2: 00回信:“还要加面包和鸡蛋,我的总数是多少?” 由于会话状态被缓存于Redis,系统会立即恢复他们的活性手推车([Millk])并重新计算总和而不会丢失一拍。

- 上下文保护栏(Dietary Perference & addresses):如果用户的配置中指定了膳食首选:["Nut-free"],则目录Agent在推荐电影夜宵时会自动尊重这种首选——用户无需在每条短信中重新声明他们的过敏性。

- Safe,Tokenized Checkout:客户简介持有象征性的支付参考(客户名:"cust 9821",支付名:"Visa ending in 4242"). LLM只读过友好口罩标签,而交易工具则将象征性的客户ID传递给Stripe. 原始信用卡号码从来不碰聊天提示或日志。

谈话商业中一个常见的问题是,国家调查是否会引入暂时性。 以下是基线基础设施支持的内容:

- Raw Triput:一个单一的,基线的Google Cloud Memories for Redis exactory (Basic Tier, 1–5 GB memory) 很容易交付10,000至50,000+ QPS,分毫秒( < 1ms)读取/写入后缀。

– 对话式QPS:每个聊天回合需要2–3 Redis操作(会话接取,推车突变,状态承诺). 这意味着一个单一的标准Redis实例在需要Redis Cluster水平硬化或读取复制品之前,可以舒适地处理每秒3000到15000个活式对话转折。

- 内存能力:一个活动会话有效载荷(profile + 活性推车 + 偏好)需要~2 KB到5 KB的序列化JSON. 一个谦虚的5GB Redis实例可以同时持有超过1,000,000个同时运行的购物车来存储。

Key Takeaway:在实际操作中,会话和Cart Laila永远不会成为瓶颈——它很容易超越上游的webhook推论和下游的LLM推论。

与其依靠单一的单音速来处理每一项任务,不如将推理分为专用的agents:

- 主管(Gemini Flash):充当低纬度路由器,对客户的要求进行分类,并将其委托给合适的专家。

- 概况专家:获取个人喜好,并为新买家提供单一用途认证链接。

- 库存专家(Gemini Pro):与仓库工具相接;查询库存、推荐配对物品并更改车型。

- 交易专家(Gemini Pro):与支付工具挂钩;按确定性计算总额并开始收费。

现在,我们已经看到三层的高层次设计,让我们看看实际的Python原型代码,每层带来到生命。

这项服务的目标很简单:通过任何入内通道核实真实性,使有效载荷正常化为可控系统,并离开临界路径 < 150ms。

以下是我们的执行显示多条消息通道(WhatsApp, RCS, Apple Messages,短消息)如何由可插接的适配器处理:

导入 hashlib, hmac, json,时间

从打入中导入。

从 pydantic 导入基底模

类常见消息Event( BaseModel):

"""Channel-Annostic canonical 代表入境客户信息"".

频道:str #"Whatsapp","rcs","apple message","sms"

发件人 id: str # E.164 电话号码:"+1xxxxxxxxxxx"

文本:str

时间戳:浮动

原始数据:dict[str, Any]

类:

"""Omni-Channel FastAPI入侵带有密码验证和同步排队"".

def init (自,meta 密:str, rcs 密:str="):

自我。 meta 秘密 = meta 秘密

自我。 rcs secret = rcs secret

self.publisher = CloudPubSubpublisher () 维基语录链接:名人名言 - 文学作品 - 谚语 - 谚语 - 谚语

def 校验 whatsapp signition( 自我,有效载荷字节:字节,sig header: str) - > bul:

""用常时比较法验证X-Hub-Signature-256头".

如果不是 sig header 或不是 sig header. starts with ("sha256="):

返回虚假

预期( hash) = hmac. new ()

自行.meta secret.encode ("utf-8"),有效载荷字节。 hashlib.sha256

. hexdigest () (中文(简体) ).

提供 hash = sig header.split ("sha256=") [1]

返回 hmac.compare digest(预期为 hash,提供为 hash)

def commonMessage Event:) - > 可选 [CommonMessage Event]:

"""将发件人和消息文字排入犬形图".

如果频道=="whatsapp":

# Meta 图表 Webhook 结构

条目=生入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入出入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入出入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入入

更改=条目.get ("changers", [{}]) [0].get ("value", {})

消息 = 更改。 get ("messages", [{}]) [0]

返回常见消息Event ()

频道="什么app"

发送者 id=message.get (" from","")

text=message.get("text", {}).get("body", ""),

timerstamp=float(message.get ("timerstamp","timerstamp","time.time ()") 互联网档案馆的存檔,存档日期2014-12-21.

生 metadata}}“ message id”: message.get ("id" )}

)

elif频道:

# Google RCS 业务通讯结构

返回常见消息Event ()

频道="弧"

发件人 id=raw pailload.get("senderPhone Number",""")

文本=raw pailload.get("文本","")

timtamp=tim.time () 时间

生 metadata}}“ rcs message id ”:生负载。 get ( “ messageId ”) ) )

)

无

def 手柄 incoming webhook ()

本身,频道:str,有效载荷:dict[str, Any],签名:str

- > 命令[str, Any]:

""Validates signment, common schema,并卸入出到 Pub/Sub 在 < 150ms.""

有效载荷字节=json.dumps(载荷,排序键=True). encode ("utf-8").

# 1. 平台专用安全验证

如果频道:"whatsapp" 而非自已。 验证 whatsapp signation(活口-字节,签名):

返回 {"状态":"错误","消息":"无效的 HMAC 签名","http code": 403}

# 2. 规范化为可控计划

事件 = 自我正常化负载(通道、有效载荷)

如果不是事件或没有事件。 发件人( D):

返回{"状态":"错误","消息":"未识别的有效载荷格式","http code":400}

# 3. 从Cloud Pub/Sub队列上卸载的条形事件( < 150ms)

msg id = self.publisher.publish (专题="输入消息"),数据=event.model dump ().

返回{"状态":"接受","消息 id":msg id,"http code":200}

贾森

通过立即返回HTTP 200 OK,并将有效载荷交给Pub/Sub,我们完全解开下游AI推理时间中的信息摄入量,跨越所有信息生态系统。

- 部署入侵事务处(云跑或GKE):

# 提供云泡/子队列

gcloud pubsub 主题创建链接

# 将入侵的容器放入云跑

GCLUUD运行部署快乐的送货夫人

--image=gcr.io/我的-gcp-project/ress:latest=

- set-env-vars=APP SECRET="快乐机密 meta key 2026" (中文(简体) ).

...没有经过认证?

--端口为8080

纯文本

- Live runtime 校验(部署在GCP上xxxxxxx):我们把入侵者容器直接部署到了Cloud Run并验证了活的HTTP端点:

- 服务名称:快乐的送货女招待

- Live Service URL: https://happy 交付-ingress-xxxxxxxx.us-central1.run.app.

项目/xxxxx/专题/内容

- 订阅附:项目/xxxxx/订阅/入围消息-sub

我们把现场的云跑HTTPS网游摄入量作为基准

# 基准测试:5个连续直播的HTTPS webhook站点到Cloud Run端点

运行 1:状态 200 in 266.84ms - > 消息编号:21184928529503172 (已装入 Pub/Sub)

运行 2:状态 200 in 301.73ms - > 消息ID: 21181303807117012(已装入 Pub/Sub)

运行 3:状态 200 in 300.47ms - > 消息ID: 21179945883786288 (被装入Pub/Sub)

运行 4:状态 200 in 295.14ms - > 消息ID: 2182286983433170(装入Pub/Sub)

运行 5:状态 200 in 298.40ms - > 信件 ID: 21182275848770028(已装入 Pub/Sub)

# 直接Pub/Sub 发布云跑内部的封面:~95ms

这个经验性地证明了我们的建筑主张:入侵服务验证了密码签名,并立即承诺在前夕进行。

本文由 AI宝库自动抓取并翻译,版权归原作者所有;如需查看原文请点下方链接。

相关 AI 工具

相关免费羊毛

同源资讯

阅读原文(developers.googleblog.com)

标题、摘要与正文均来自该信源的公开页面,版权归原作者所有;本站自动聚合与翻译,仅作出处跳转。

← 返回 AI 资讯列表AI工具图鉴首页

返回 AI宝库首页 · 提交工具 · 商务合作 · 关于本站 · 593 款 AI 工具分类导航 · 每日 AI 热门项目与动态