当前位置: 首页 > article >正文

MCP Sampling接口调用流拆解:从零到生产就绪仅需15分钟,附可复用的6层拦截校验模板

第一章MCP Sampling接口调用流的全景认知与核心价值MCPModel Control ProtocolSampling 接口是现代大模型服务编排中实现可控采样策略的关键契约层。它不仅封装了温度temperature、top-k、top-p、重复惩罚repetition_penalty等核心采样参数更通过标准化的 HTTP/JSON 协议抽象使推理引擎、调度器与前端应用解耦支撑多模型、多场景下的动态采样策略下发。调用流的核心组成环节客户端构造符合 MCP-Sampling v1 规范的 JSON 请求体网关层完成身份鉴权、配额校验与采样策略路由后端模型服务解析 sampling_config 字段注入至底层推理内核如 vLLM 或 Transformers.generate响应中返回 token_ids、logprobs可选及采样元信息如 actual_temperature、effective_top_p典型请求示例{ model: qwen2-7b-instruct, prompt: 解释量子纠缠, sampling_config: { temperature: 0.7, top_p: 0.9, top_k: 40, repetition_penalty: 1.15, max_new_tokens: 256 } }核心价值维度对比维度传统硬编码采样MCP Sampling 接口策略灵活性需重新部署模型服务运行时热更新支持 A/B 测试跨模型兼容性各模型实现不一致统一 schema屏蔽底层差异可观测性日志分散无结构化采样元数据响应含 actual_* 字段便于监控与归因graph LR A[Client] --|POST /v1/sampling| B[API Gateway] B -- C{Auth Quota} C --|Pass| D[Sampling Router] D -- E[vLLM Engine] D -- F[Transformers Engine] E -- G[Response with sampling_meta] F -- G第二章采样请求生命周期拆解从客户端发起至服务端响应2.1 请求构造层基于OpenAPI规范的标准化Payload生成含Go/Python双语言模板核心设计原则请求构造层将OpenAPI v3.0文档中的schema定义自动映射为类型安全的请求体规避手写JSON导致的字段遗漏与类型错位。Go语言模板示例// 自动生成结构体支持required校验与默认值注入 type CreateUserRequest struct { Name string json:name validate:required,min2 Email string json:email validate:required,email Age *int json:age,omitempty // 可选字段 }该模板通过go-swagger或oapi-codegen从openapi.yaml生成字段标签直连OpenAPI的required、default及format语义。Python实现对比特性GoPython运行时校验编译期结构检查 运行时validatePydantic v2模型验证默认值注入struct tag 自定义UnmarshalJSONField(defaultguest)2.2 协议适配层HTTP/2 gRPC双模传输选型与TLS双向认证实践双模协议动态协商机制服务端通过 ALPNApplication-Layer Protocol Negotiation在 TLS 握手阶段识别客户端意图自动切换 HTTP/1.1、HTTP/2 或 gRPC 流量srv : http.Server{ Addr: :8443, TLSConfig: tls.Config{ NextProtos: []string{h2, http/1.1}, ClientAuth: tls.RequireAndVerifyClientCert, ClientCAs: caPool, }, }NextProtos指定协议优先级顺序RequireAndVerifyClientCert强制双向认证确保客户端持有合法证书。TLS双向认证关键配置项配置项作用ClientAuth启用并验证客户端证书链ClientCAs信任的根证书集合用于验证客户端签名证书生命周期管理服务端证书需绑定 SANSubject Alternative Name支持多域名与 IP客户端证书须嵌入唯一标识如 SPIFFE ID供服务端鉴权2.3 流量路由层基于TraceID与SamplingRate的动态分流策略实现核心分流逻辑动态分流依赖 TraceID 的哈希一致性与采样率阈值双重判定确保同一链路请求始终路由至相同灰度集群。func routeByTraceID(traceID string, samplingRate float64) bool { hash : fnv.New32a() hash.Write([]byte(traceID)) return float64(hash.Sum32()%100) samplingRate*100 }该函数对 TraceID 做 FNV32 哈希取模 100将结果映射至 [0,99] 整数区间采样率如 0.15等价于允许前 15 个整数命中保障统计意义上精准分流且具备确定性。分流策略配置表环境SamplingRate目标集群预发1.0gray-v2生产0.05canary-stable执行流程→ 解析 HTTP Header 中的 trace-id→ 计算哈希并比对采样阈值→ 匹配路由规则注入 x-env: canary→ 交由 Service Mesh Sidecar 执行转发2.4 上下文注入层SpanContext跨进程透传与W3C Trace Context兼容性验证跨进程透传核心机制SpanContext需在HTTP/GRPC等协议头中序列化传递关键字段包括trace-id、span-id、traceflags采样标志及tracestate多供应商上下文扩展。W3C标准兼容性实现// 从HTTP Header提取W3C Trace Context func Extract(ctx context.Context, carrier propagation.TextMapCarrier) context.Context { traceID : carrier.Get(traceparent) // 格式: 00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01 if traceID ! { sc, _ : w3c.ParseTraceParent(traceID) return trace.ContextWithRemoteSpanContext(ctx, sc) } return ctx }该函数解析traceparent字符串提取版本、trace-id、parent-id、trace-flags四元组并构造标准化SpanContext。其中01末尾表示采样启用是OpenTelemetry SDK默认行为。兼容性验证要点支持traceparent单头模式与tracestate扩展头协同解析向后兼容Zipkin B3格式通过适配器桥接2.5 响应解析层Streaming采样结果的增量解码与错误码语义化映射增量式JSON流解码采用 json.Decoder 的 Token() 接口逐词法单元解析避免完整缓冲导致的延迟与内存抖动decoder : json.NewDecoder(stream) for decoder.More() { var sample SamplingResult if err : decoder.Decode(sample); err ! nil { // 处理单条解析失败不中断整个流 log.Warn(partial decode failed, err, err) continue } emit(sample) // 实时转发至下游 }该模式支持毫秒级首包响应且对超长流具备 O(1) 内存驻留能力decoder.More() 判断流是否活跃Decode() 自动跳过空白与分隔符。错误码语义化映射表原始码语义标签重试策略0x8001DEVICE_TIMEOUT指数退避0x800ASENSOR_CALIBRATION_LOST需人工干预第三章6层拦截校验体系的设计哲学与工程落地3.1 第1-2层客户端侧Schema校验与采样率合法性熔断含JSON Schema动态加载机制双层防护设计动机前端需在请求发出前拦截非法数据与危险配置避免无效流量冲击后端。第1层执行JSON Schema静态结构校验第2层对sample_rate字段做数值范围业务语义双重熔断。动态Schema加载机制async function loadSchema(version) { const res await fetch(/schemas/v${version}.json); return await res.json(); // 支持灰度版本热更新 }该函数按服务端发布的schema版本号动态拉取避免硬编码配合ETag缓存策略降低重复加载开销。采样率熔断规则表场景阈值动作调试模式1.0拒绝上报抛出InvalidSampleRateError生产环境0.001自动提升至0.001并告警3.2 第3-4层网关侧Token鉴权与租户级配额限流集成OAuth2.1 RedisCell原子计数双模鉴权流程网关在路由前同步验证 OAuth2.1 Token 有效性并提取tenant_id与scope字段为后续限流提供上下文。租户级滑动窗口限流采用 RedisCell 的CL.THROTTLE命令实现原子性计数规避 Lua 脚本竞态res, err : redisClient.Do(ctx, CL.THROTTLE, fmt.Sprintf(quota:%s, tenantID), // key 100, // max allowed requests 60, // window in seconds 1, // increment per request ).Slice() // res[0]allowed (0/1), res[1]total, res[2]remaining, res[3]reset_in_sec, res[4]retry_in_sec配额策略对照表租户等级QPS上限突发容量重置周期free102060spro10015060s3.3 第5-6层服务端侧Trace完整性校验与采样决策一致性审计基于HMAC-SHA256签名比对签名生成与比对流程服务端在接收Span时提取关键字段traceID、spanID、parentID、serviceName、sampled、timestamp构造规范化签名原文使用共享密钥计算HMAC-SHA256摘要。func computeTraceSignature(span *Span, secret []byte) []byte { data : fmt.Sprintf(%s:%s:%s:%s:%t:%d, span.TraceID, span.SpanID, span.ParentID, span.ServiceName, span.Sampled, span.Timestamp) h : hmac.New(sha256.New, secret) h.Write([]byte(data)) return h.Sum(nil) }该函数确保签名输入严格有序、无空格/换行secret为服务间预分发的静态密钥Sampled布尔值强制转为小写字符串以消除序列化歧义。一致性审计机制校验失败时标记trace_integrity_violatedtrue并上报审计队列连续3次不一致触发采样策略熔断临时降级为全量采样字段是否参与签名说明duration否非传播字段仅本地计算tags是键值排序后拼接防止篡改业务上下文第四章生产就绪加速包15分钟接入流水线实战4.1 初始化一键拉取MCP Sampling SDK与6层校验中间件支持K8s InitContainer注入一键集成流程通过 Helm Chart 的initContainers配置自动拉取并校验 SDK 与中间件镜像initContainers: - name: mcp-init image: registry.example.com/mcp/sampling-sdk:v2.4.0 args: [--verify, --level6]该配置触发 InitContainer 在主容器启动前执行完整校验链镜像签名 → 文件哈希 → 证书链 → 配置Schema → 策略白名单 → 运行时沙箱检测。六层校验能力对比层级校验目标失败响应1OCI镜像签名拒绝挂载4YAML Schema合规性退出码127SDK初始化钩子自动注入MCP_SAMPLING_CONFIG环境变量生成带时间戳的校验摘要文件/var/run/mcp/verify.log4.2 配置化YAML驱动的拦截规则热更新支持Consul KV自动同步与版本回滚声明式规则定义# rules/traffic-policy-v1.2.yaml version: 1.2 rules: - id: auth-header-missing match: method: [GET, POST] path: ^/api/v1/.* action: reject reason: Missing X-Auth-Token该 YAML 结构将拦截逻辑与执行策略解耦version 字段为 Consul KV 路径与回滚锚点提供唯一标识。数据同步机制Watch goroutine 持久监听config/rules/下所有*.yaml前缀键变更触发 SHA256 校验 AST 解析校验失败则保留旧版本内存实例成功后原子替换atomic.StorePointer(activeRules, newRules)版本回滚能力操作Consul KV 路径生效方式回滚至 v1.1config/rules/traffic-policyv1.1PUT TTL 刷新触发热加载4.3 验证本地Mock Server 自动化合规性测试套件覆盖OWASP API Security Top 10场景轻量级Mock Server快速启动npm install -g msw-cli msw init ./public --save npx json-server --watch db.json --port 3001 --middlewares ./mocks/handler.js该命令链初始化MSW拦截规则并启动JSON Server作为可编程Mock后端--middlewares注入自定义响应逻辑支持动态模拟未授权、越权、注入等异常状态。OWASP Top 10自动化测试覆盖API密钥硬编码检测通过AST扫描源码批量注入Payload验证SQLi/XSS/SSRF敏感数据泄露检查响应体正则匹配身份证、邮箱等模式测试结果概览漏洞类型命中数修复建议等级Broken Object Level Authorization3CRITICALUnrestricted Resource Consumption1HIGH4.4 发布灰度流量染色与采样决策AB实验看板集成Prometheus Grafana实时观测流量染色与标签注入服务网关在入口处依据AB实验策略对请求注入X-Experiment-ID与X-Traffic-Weight头func InjectExperimentHeader(r *http.Request, expID string, weight float64) { r.Header.Set(X-Experiment-ID, expID) r.Header.Set(X-Traffic-Weight, strconv.FormatFloat(weight, f, 2, 64)) }该函数确保每条请求携带唯一实验标识与动态权重供下游服务做采样决策及指标打标。Prometheus指标采集配置通过自定义Exporter暴露染色流量统计指标名类型用途ab_request_total{exp_id,group,route}Counter按实验分组统计请求数ab_sample_ratio{exp_id}Gauge实时采样率反馈0.0–1.0Grafana看板联动逻辑实时看板自动订阅ab_request_total并按exp_id与group维度聚合支持下钻至单个灰度集群的P95延迟对比。第五章演进路径与边界思考在微服务架构向服务网格Service Mesh演进过程中边界并非技术栈的简单替换而是控制面与数据面职责的重新切分。某金融平台将 Istio 1.18 升级至 1.21 后发现 Envoy 代理内存泄漏导致连接复用率下降 37%根源在于自定义 WASM Filter 中未正确释放 HTTP header 引用计数。可观测性边界的实践约束OpenTelemetry Collector 配置中采样率超过 0.8 会显著增加 Prometheus remote_write 延迟Jaeger UI 展示的 span duration 与实际 gRPC server 端日志存在 ±12ms 偏差需启用 envoy.tracing access log format 进行对齐策略执行的收敛临界点策略类型生效延迟毫秒可观测粒度RBACClusterRoleBinding85–142Per-connectionWASM-based rate limit3–9Per-request header value代码注入的生命周期陷阱// 错误在 WasmPlugin Init() 中直接调用 runtime.GC() // 正确通过 onTick 回调触发轻量级内存清理 func (p *plugin) onTick() { if p.allocCount%1000 0 { // 触发局部 GC避免阻塞主线程 debug.FreeOSMemory() } }→ ServiceMesh 控制面 → Envoy xDS API → Wasm Runtime → Go SDK Bridge → 应用层 Filter某电商大促期间将 12 个核心服务从 Spring Cloud Gateway 迁移至 eBPF 加速的 Cilium GatewayAPI P99 延迟从 210ms 降至 43ms但 TLS 握手失败率上升至 0.7%最终定位为内核版本 5.10.162 中 XDP_REDIRECT 对 ECDSA 证书链解析异常。

相关文章:

MCP Sampling接口调用流拆解:从零到生产就绪仅需15分钟,附可复用的6层拦截校验模板

第一章:MCP Sampling接口调用流的全景认知与核心价值 MCP(Model Control Protocol)Sampling 接口是现代大模型服务编排中实现可控采样策略的关键契约层。它不仅封装了温度(temperature)、top-k、top-p、重复惩罚&#…...

FireRed-OCR Studio一文详解:Qwen3-VL多模态模型在文档理解中的突破

FireRed-OCR Studio一文详解:Qwen3-VL多模态模型在文档理解中的突破 1. 引言:当文档“开口说话” 想象一下这个场景:你手头有一份几十页的纸质报告,里面充满了复杂的表格、数学公式和精心排版的段落。老板要求你在两小时内把它变…...

4个维度提升论文效率:CQUThesis重庆大学LaTeX模板全攻略

4个维度提升论文效率:CQUThesis重庆大学LaTeX模板全攻略 【免费下载链接】CQUThesis :pencil: 重庆大学毕业论文LaTeX模板---LaTeX Thesis Template for Chongqing University 项目地址: https://gitcode.com/gh_mirrors/cq/CQUThesis CQUThesis作为重庆大学…...

3步解决Navicat密码遗忘难题:开源解密工具全流程使用指南

3步解决Navicat密码遗忘难题:开源解密工具全流程使用指南 【免费下载链接】navicat_password_decrypt 忘记navicat密码时,此工具可以帮您查看密码 项目地址: https://gitcode.com/gh_mirrors/na/navicat_password_decrypt 数据库管理工作中,忘记N…...

OllyDBG逆向分析入门:手把手教你调试微信程序(附常用快捷键大全)

OllyDBG实战指南:从零开始掌握Windows程序调试艺术 最近有不少朋友在后台留言,问我怎么开始学习逆向分析。说实话,这个领域确实有点门槛,但只要你掌握了正确的工具和方法,其实并没有想象中那么难。今天我就以大家最熟悉…...

新手必看:PDF-Parser-1.0快速入门指南,开箱即用的文档解析神器

新手必看:PDF-Parser-1.0快速入门指南,开箱即用的文档解析神器 你是不是经常被PDF文档搞得头疼?想从一份技术报告里复制个表格,结果格式全乱了;想提取白皮书里的关键数据,却要手动一页页翻找;或…...

Hunyuan-MT-7B快速上手:从下载到使用,全程保姆级教学

Hunyuan-MT-7B快速上手:从下载到使用,全程保姆级教学 你是不是也遇到过这样的烦恼?想体验一下最新的AI翻译模型,结果光是下载几十GB的模型文件就要等上大半天,好不容易下完了,又要面对复杂的Python环境配置…...

仅限头部客户获取的Dify异步节点调试秘钥:3行代码定位阻塞点,5分钟修复99.99%的任务堆积问题

第一章:仅限头部客户获取的Dify异步节点调试秘钥:3行代码定位阻塞点,5分钟修复99.99%的任务堆积问题 Dify 的异步任务队列(基于 Celery Redis)在高并发场景下偶发任务堆积,但默认日志无法暴露底层执行瓶颈…...

WAN2.2文生视频镜像多行业落地:文旅宣传、职业教育、新媒体运营真实案例

WAN2.2文生视频镜像多行业落地:文旅宣传、职业教育、新媒体运营真实案例 用文字描述就能生成高质量视频,WAN2.2正在改变多个行业的视频制作方式 1. 为什么WAN2.2让视频制作变得如此简单? 想象一下,你只需要用文字描述想要的视频内…...

Wan2.1-UMT5开发环境搭建:Anaconda虚拟环境管理与依赖隔离

Wan2.1-UMT5开发环境搭建:Anaconda虚拟环境管理与依赖隔离 如果你刚开始接触Wan2.1-UMT5这类大模型项目,可能会被各种依赖冲突搞得焦头烂额。明明在别人的电脑上跑得好好的,到自己这儿就报错,什么PyTorch版本不对、CUDA不兼容&am…...

Qwen3-ForcedAligner-0.6B与UltraISO启动盘制作工具集成

Qwen3-ForcedAligner-0.6B与UltraISO启动盘制作工具集成 1. 引言 你有没有遇到过这样的情况:制作系统启动盘时,安装向导的语音提示总是和实际操作步骤对不上?或者语音播报太快,还没来得及看清界面就已经跳过了关键步骤&#xff…...

三相三电平整流器仿真:电压电流双闭环控制与SPWM调制效果佳(仅含仿真文件)

三相三电平整流器仿真,采用电压电流双闭环控制方式,SPWM调制。 效果很好。 只有仿真文件。最近在搞三相三电平整流器的仿真项目,用双闭环控制配SPWM调制,效果居然比想象中还要稳。这个拓扑结构天生自带谐波抑制能力,加…...

MVI46-104S服务器通信模块

MVI46-104S服务器通信模块是一种工业以太网通信接口模块,主要用于PLC系统与支持IEC 60870-5-104协议的远程设备之间建立通信连接。该模块能够实现实时数据传输、远程监控及信息交互,使控制系统能够接入电力或工业监控网络,提高系统的数据处理…...

Qwen3-ASR-1.7B在客服场景中的应用:智能语音助手落地案例

Qwen3-ASR-1.7B在客服场景中的应用:智能语音助手落地案例 1. 引言 "您好,请问有什么可以帮您?"这句话在客服中心每天要重复成千上万次。传统的客服系统面临着一个现实问题:人工客服成本高、培训周期长,而且…...

3步搞定SuperPNG插件效率优化:从安装到高级压缩全攻略

3步搞定SuperPNG插件效率优化:从安装到高级压缩全攻略 【免费下载链接】SuperPNG SuperPNG plug-in for Photoshop 项目地址: https://gitcode.com/gh_mirrors/su/SuperPNG 场景化问题导入:当设计师遇到PNG优化难题 在日常设计工作中&#xff0c…...

PowerPaint-V1 Gradio在Ubuntu系统的一键部署教程:5分钟快速上手

PowerPaint-V1 Gradio在Ubuntu系统的一键部署教程:5分钟快速上手 1. 引言 如果你正在寻找一个真正能"听懂人话"的图像修复工具,PowerPaint-V1绝对值得一试。这个模型不仅能识别遮罩区域,更能理解你的修复意图,实现从简…...

AudioSeal快速上手:5个典型音频文件(人声/音乐/噪声混合)测试集

AudioSeal快速上手:5个典型音频文件(人声/音乐/噪声混合)测试集 1. 引言:为什么你需要关注音频水印? 想象一下,你花了好几个小时录制了一段播客,或者精心制作了一段AI生成的语音内容。发布到网…...

使用Typora编写Qwen-Image-Edit-F2P技术文档

使用Typora编写Qwen-Image-Edit-F2P技术文档 1. 为什么选择Typora编写技术文档 技术文档的编写是每个开发者都需要面对的任务,而选择合适的工具能让这个过程事半功倍。Typora作为一款轻量级的Markdown编辑器,以其简洁的界面和流畅的写作体验&#xff0…...

从Claude到OFA:对比不同大模型在图像描述任务上的能力与部署差异

从Claude到OFA:对比不同大模型在图像描述任务上的能力与部署差异 最近在做一个智能相册的项目,需要让AI自动给图片生成描述文字。一开始我直接用了市面上最火的多模态大模型,比如Claude,效果确实不错,但部署成本和响应…...

国有企业的技术创新如何实现数据驱动?

观点作者:科易网-AI技术转移与科技创新数智化服务平台 国有企业在我国科技创新体系中扮演着核心角色,其技术创新能力直接关系到国家战略竞争力和产业升级进程。然而,传统国有企业在技术创新过程中普遍面临数据孤岛、转化效率低、决策支持不足…...

Skills智能体与Qwen3-ForcedAligner-0.6B的协同工作流设计

Skills智能体与Qwen3-ForcedAligner-0.6B的协同工作流设计 最近在折腾语音处理项目,发现一个挺有意思的问题:语音识别(ASR)模型把音频转成文字后,我们往往还想知道每个字、每个词在音频里具体是什么时候出现的。这个需…...

伏羲天气预报入门必看:FuXi EC模型与ECMWF原始数据格式差异与映射逻辑

伏羲天气预报入门必看:FuXi EC模型与ECMWF原始数据格式差异与映射逻辑 如果你刚接触伏羲(FuXi)天气预报模型,准备用自己的数据跑一次预报,那么你很可能遇到的第一个“拦路虎”就是数据格式问题。模型要求输入一个形状…...

Win10+Xming+VSCode远程开发:图形化界面(GUI)高效配置指南

1. 为什么你需要这套远程GUI开发环境? 如果你是一名开发者,尤其是做数据科学、机器学习或者图形界面应用开发的,那你肯定遇到过这样的场景:你的主力开发机是Windows 10,但你的代码需要跑在性能更强、环境更纯净的Linux…...

Render 免费部署 CLI Proxy API 中转站完整教程

前言 Render 是一款 PaaS 云平台,可托管 Web 应用、数据库、定时任务和静态网站,支持 Docker、Node.js、Python、Go、Ruby 等多种环境,也支持直接关联 GitHub 仓库部署。 优点缺点完全免费,部署简单免费版不支持持久化存储每月 …...

EARS标准

EARS 是需求工程里的一个写需求的标准格式,全称是:Easy Approach to Requirements Syntax意思是: 一种“简单的需求语法方法”,用于把自然语言需求写成结构统一、歧义更少、适合开发实现的格式。它最早由 Rolls‑Royce plc 在复杂…...

虚拟机连接不上问题

一、Winscp、SecureCRT_Portable连接不上或者是这种情况1、进入虚拟机后,点击这个图标2、3、4、5、最后点击右上角的应用即可第二种方法1、点击这个“编辑”按钮2、选择虚拟网络编辑器3、选择后点击更改设置4、5、还原默认设置后,点击确定,重…...

2026年常用CMS系统大全:主流建站内容平台分类与选型指南

“CMS”是内容管理系统(Content Management System)的缩写。常用的CMS通常根据主要应用领域(如网站搭建、企业门户、电子商务、文档管理)来划分。 以下是目前最主流、最常用的几类CMS(按技术生态和用途分类&#xff09…...

2026年6月PMP考试:一场与“人性弱点”的终极博弈!90天通关指南(附第八版考纲深度拆解)

兄弟们,姐妹们,还有那些收藏了十几篇攻略却一页没看的“资深收藏家”们,看过来! 我是你们的互联网嘴替,小黄。 今天这篇文章,咱们不聊那些烂大街的“必过口诀”和“万能模板”。咱们聊点更深的——为什么…...

【个人学习||Electron桌宠项目实战】2把桌宠窗口和Live2D 渲染接上

前言主进程骨架搭完以后,我没有马上去写复杂交互,而是先给自己定了一个最小目标:先做出一个真的像桌宠的窗口,再把模型画进去。因为如果窗口本身还是普通软件窗口,后面再怎么调模型,视觉感觉都不对。桌宠最…...

3分钟解锁炉石传说自动化:从日常任务到卡组测试的智能解决方案

3分钟解锁炉石传说自动化:从日常任务到卡组测试的智能解决方案 【免费下载链接】Hearthstone-Script Hearthstone script(炉石传说脚本)(2024.01.25停更至国服回归) 项目地址: https://gitcode.com/gh_mirrors/he/He…...