Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
自定义技能是实现特定接口的 Web API。 可以在任何可公开寻址的资源上实现自定义技能。 最常见的自定义技能实现包括:
- 用于自定义逻辑技能的 Azure Functions
- 用于简单容器化 AI 技能的 Azure Web 应用
- 用于更复杂或更大功能的 Azure Kubernetes 服务。
技能集配置
自定义技能上的以下属性可用于缩放。 查看 自定义技能接口 ,了解自定义技能应实现的输入和输出简介。
将
batchSize设置为自定义技能,以配置在一次技能调用中发送的记录数量。设置
degreeOfParallelism以校准索引器向你的技能发出的并发请求数。将
timeout设置为一个使技能能够返回有效响应的值。在
indexer定义中,将batchSize设置为应从数据源读取并同时扩充的文档数。
注意事项
没有放之四海而皆准的建议。 计划测试不同的配置以达到最佳结果。 纵向扩展策略基于较少的大型请求或许多小型请求。
技能调用基数:确保知道自定义技能是针对每个文档(
/document/content)执行一次,还是会对每个文档执行多次(/document/reviews_text/pages/*)。 如果每个文档执行多次,请尽量维持在batchSize和degreeOfParallelism的较低范围内以减少变化,并尝试将索引器批大小设置为逐步更高的值,以扩大规模。协调自定义技能
batchSize与索引器batchSize,并确保不产生瓶颈。 例如,如果索引器批大小为 5,并且技能批大小为 50,则需要 10 个索引器批才能填充自定义技能请求。 理想情况下,技能批大小应小于或等于索引器批大小。对于
degreeOfParallelism,使用索引器批处理可以生成的平均请求数来指导如何设置此值。 如果托管技能的基础结构(例如 Azure 函数)无法支持高级别并发,请考虑降低并行度。 可以使用几个文档测试配置,以验证你对请求的平均数量的理解。尽管目标是缩放和支持大量文档,但使用较小的文档示例进行测试有助于量化不同执行阶段。 例如,你可以根据处理文档子集所需的总时间来评估技能的执行时间。 这能帮助你了解:你的索引器是在构建批处理工作上花费更多时间,还是在等待技能响应上花费更多时间?
请考虑并行度的上游含义。 如果自定义技能的输入是先前技能的输出,则是否有效横向扩展了技能组中的所有技能以最大程度地减少延迟?
自定义技能中的错误处理
技能成功完成后,自定义技能应返回成功状态代码 HTTP 200。 如果批中的一个或多个记录导致错误,请考虑返回多状态代码 207。 记录的错误或警告列表应包含相应的消息。
批次中的任何项出错会导致相应的文档失败。 如果您需要确保文档顺利运作,请返回警告。
299 以上的任何状态代码都评估为错误,所有扩充都失败,导致文档失败。
常见错误消息
Could not execute skill because it did not execute within the time limit '00:00:30'. This is likely transient. Please try again later. For custom skills, consider increasing the 'timeout' parameter on your skill in the skillset.在技能上设置超时参数,以允许更长的执行时间。Could not execute skill because Web Api skill response is invalid.指示技能未以自定义技能响应格式返回消息。 这可能是因为技能中出现未捕获的异常。Could not execute skill because the Web Api request failed.很可能是由授权错误或异常引起的。Could not execute skill.通常是因为技能响应映射到文档层次结构中的现有属性。
测试自定义技能
首先用 REST API 客户端测试自定义技能,以验证:
技能为请求和响应实现自定义技能接口
技能返回
application/jsonMIME 类型的有效 JSON技能返回有效的 HTTP 状态代码
创建一个调试会话,将你的技能添加到技能集中,并确保它生成有效的扩充。 虽然调试会话不允许你调整技能的性能,但通过该会话可确保使用有效值配置技能并返回预期的扩充对象。
最佳做法
尽管技能可以接受和返回更大的有效负载,但在返回 JSON 时,请考虑将响应限制为 150 MB 或更低。
请考虑在索引器和技能上设置批大小,以确保每个数据源批为你的技能生成一个完整的有效负载。
对于长时间运行的任务,请将超时设置为足够高的值,以确保索引器在并发处理文档时不会出错。
优化索引器批大小、技能批大小和技能并行度,以生成技能期望的负载模式(较少的大型请求或多个小型请求)。
使用详细的故障日志监视自定义技能,因为数据可变性可能导致特定请求一致失败。