如何构建一个生产级的AI平台(4)?

news2024/9/30 15:56:08

书接上回,继续往下讲,本节会说一下复杂逻辑,可观测性和Pipeline

添加复杂逻辑和写入操作

到目前为止,我们讨论的应用程序具有相当简单的流程。

基础模型生成的输出大多返回给用户(除非它们没有通过护栏)。

但是,应用程序流可能更复杂,包括循环和条件分支。

模型的输出还可用于调用写入操作,例如撰写电子邮件或下订单。

1. 复杂逻辑

模型的输出可以有条件地传递给另一个模型,也可以作为下一步输入的一部分反馈给同一模型。

这种情况一直持续到系统中的模型决定任务已完成并且应将最终响应返回给用户。

为系统提供规划和决定下一步操作的能力时,可能会发生这种情况。

例如,考虑查询 “Plan a weekend itinerary for Paris”。

该模型可能首先生成一个潜在活动列表:
参观埃菲尔铁塔、在咖啡馆吃午饭、游览卢浮宫等。

然后,这些活动中的每一个都可以反馈到模型中,以生成更详细的计划。

例如,“参观埃菲尔铁塔”可以提示模型生成子任务。

例如检查营业时间、购买门票和查找附近的餐馆。

这个迭代过程会一直持续,直到创建全面而详细的行程。

2. 写入操作

用于上下文构造的操作是只读操作。

它们允许模型从其数据源中读取数据以收集上下文。

但系统也可以编写操作,对数据源和世界进行更改。

例如,如果模型输出:“send an email to X with message Y”,

则系统将调用操作 send_email(recipient=X, message=Y) 。


然而,赋予 AI 自动改变我们生活的能力的前景令人恐惧。

写入操作使系统的功能大大增强。
它们可以能够自动化整个客户拓展工作流程:

研究潜在客户、寻找他们的联系人、起草电子邮件、

发送第一封电子邮件、阅读回复、跟进、提取订单、使用新订单更新数据库等。

就像不应该授予实习生删除生产数据库的权限一样,也不应该允许不可靠的 AI 发起银行转账。

对系统功能及其安全措施的信任至关重要。

需要确保系统受到保护,免受可能试图操纵系统执行有害操作的不良行为者的侵害。

AI 系统与其他软件系统一样容易受到网络攻击,但它们也有另一个弱点:prompt注入。

当攻击者将输入提示操纵到模型中以使其表达不良行为时,就会发生提示注入。

可以将提示注入视为在AI而不是人类上完成的工具。


许多公司担心的一种情况是,他们让 AI 系统访问其内部数据库,

攻击者欺骗该系统泄露这些数据库中的私人信息。

如果系统对这些数据库具有写入权限,攻击者可以诱骗系统破坏数据。

任何想要利用 AI 的组织都需要认真对待安全和安保问题。


然而,这些风险并不意味着 AI 系统永远不应该被赋予在现实世界中行动的能力。

AI 系统可能会失败,但人类也可能失败。

如果我们能让人们信任一台机器将我们带到太空,

我希望有一天,安全足以让我们信任自主的人工智能系统。






AI 应用平台的可观察性

虽然我已将可观测性放在其自己的部分,但它应该从一开始就集成到平台中,而不是后来才添加。

可观测性对于各种规模的项目都至关重要,其重要性随着系统复杂性的增加而增加。

虽然我已将可观测性放在其自己的部分,但它应该从一开始就集成到平台中,而不是后来才添加。

可观测性对于各种规模的项目都至关重要,其重要性随着系统复杂性的增加而增加。

1. Metrics

在讨论监控时,大多数人会想到指标。

要跟踪的指标取决于要跟踪的系统内容,这是特定于应用程序的。

但是,一般来说,需要跟踪两种类型的指标:模型指标和系统指标

系统指标告诉整个系统的状态。

常见指标包括吞吐量、内存使用情况、硬件利用率和服务可用性/正常运行时间


系统指标对于所有软件工程应用程序都是通用的。在本文中,将重点介绍模型指标。

模型指标评估模型的性能,例如准确性、毒性和幻觉率。

应用程序管道中的不同步骤也有自己的指标。
例如,在 RAG 应用程序中,检索质量通常使用上下文相关性和上下文精度来评估。

可以通过索引数据所需的存储量以及查询数据所需的时间来评估矢量数据库。

模型的输出失败的方式多种多样,

识别这些问题并制定指标来监控它们至关重要。

例如,可能希望跟踪模型超时、返回空响应或生成格式错误的响应的频率。

如果担心模型会泄露敏感信息,也请找到一种方法来跟踪它。

与长度相关的指标 (如 query、context 和 response length) 有助于了解模型的行为。

一个模型是否比另一个模型更冗长?

某些类型的查询是否更有可能产生冗长的答案?

它们对于检测应用程序中的更改特别有用。

如果平均查询长度突然减少,则可能表示存在需要调查的潜在问题。


与长度相关的指标对于跟踪延迟和成本也很重要,

因为较长的上下文和响应通常会增加延迟并产生更高的成本。

跟踪延迟对于了解用户体验至关重要。常见的延迟指标包括:

  • Time to First Token (TTFT):生成第一个 Token 所需的时间
  • 令牌间隔时间 (TBT):每次令牌生成之间的间隔。
  • 每秒令牌数 (TPS):生成令牌的速率。
  • 每个输出令牌的时间 (TPOT):生成每个输出令牌所需的时间
  • Total Latency (总延迟):完成响应所需的总时间。

还需要跟踪成本。
与成本相关的指标是查询数量以及输入和输出令牌的数量。

如果使用具有速率限制的 API,则跟踪每秒请求数非常重要,

以确保保持在分配的限制范围内并避免潜在的服务中断。


在计算指标时,请确保它们可以按相关轴进行细分,

例如用户、发布、提示/链版本、提示/链类型和时间。

这种粒度有助于了解性能变化和识别具体问题。

2. Logs

日志记录的理念很简单:记录所有内容。

记录系统配置。记录查询、输出和中间输出。

记录组件何时启动、何时结束、何时崩溃等。

在记录一段日志时,请确保为其提供标签和 ID,以帮助了解此日志来自系统中的哪个位置。

记录所有内容意味着拥有的日志数量可能会非常迅速地增长。

许多用于自动日志分析和日志异常检测的工具都由 AI 提供支持。

3. Traces

Trance是指通过各种系统组件和服务详细记录请求的执行路径。

在 AI 应用程序中,跟踪揭示了从用户发送查询到返回最终响应的整个过程,

包括系统执行的操作、检索的文档以及发送到模型的最终提示。

它还应该显示每个步骤花费了多少时间及其相关成本(如果可衡量)。

例如,这是 Langsmith 跟踪的可视化效果:


理想情况下,应该能够通过系统逐步跟踪每个查询的转换。

如果查询失败,应该能够查明出错的确切步骤:

是处理不正确、检索到的上下文无关紧要,还是模型生成了错误的响应。





基于Pipeline构建AI应用

AI 应用程序可能会变得相当复杂,由多个模型组成,
从许多数据库中检索数据,并且可以访问各种工具。

Pipeline编排工具可帮助指定如何将这些不同的组件组合(链)在一起,以创建端到端应用程序流。

概括地说,业务流程协调程序分两个步骤工作:组件定义和链(也称为管道):

  1. 组件定义

    需要告诉Pipeline的系统使用哪些组件,

    例如模型(包括用于生成、路由和评分的模型)、

    系统可以从中检索数据的数据库以及系统可以执行的操作。

    许多Pipeline工具还支持与工具集成,以便进行评估和监视。

  2. Chaining

    告诉Pipeline的系统从接收用户查询到完成任务所采取的步骤顺序。

    下面是例子:

    1. 处理原始查询。
    2. 根据已处理的查询检索相关数据。
    3. 原始查询和检索到的数据将组合在一起,以模型所需的格式创建提示。
    4. 模型将根据提示生成响应
    5. 评估响应
    6. 如果响应被认为是好的,请将其返回给用户。如果没有,请将查询路由到人工操作员

Pipeline负责在步骤之间传递数据,并且可以提供工具,以帮助确保当前步骤的输出采用下一步所需的格式。

在为具有严格延迟要求(高性能要求)的应用程序设计管道时,可以尝试尽可能多地并行执行。

例如,如果有一个路由组件(决定将查询发送到何处)和一个 PII 删除组件,

则它们可以同时执行这两项操作。


AI编排工具有很多,

比如 LangChain、LlamaIndex、Flowise、Langflow 和 Haystack。

每个工具都有自己的 API。

虽然在启动项目时直接跳转到编排工具很诱人**,但无需先使用编排工具即可开始构建应用程序**。

任何外部工具都会增加复杂性。

编排器可以抽象出系统工作方式的关键细节,过度复杂后就会变的难以理解和调试系统。

进入应用程序开发过程的后期阶段时,可能会决定使用Pipeline工具可以使工作更轻松。

以下是评估使用Pipeline编排工具时要记住的三个方面:

  1. 集成和可扩展性
评估Pipeline工具是否支持当前使用或将来可能采用的组件。

例如,如果要使用 Llama 模型,请检查编排器是否支持该模型。

考虑到模型、数据库和框架的数量,编排器不可能支持所有内容。

因此,还需要考虑编排器的可扩展性。如果它不支持特定组件,那么改变它有多难?

  1. 支持复杂Pipeline

随着应用程序复杂性的增加,
可能需要管理涉及多个步骤和条件逻辑的复杂管道。

支持分支、并行处理和错误处理等

高级功能的Pipeline工具将帮助有效地管理这些复杂性。


  1. 易用性、性能和可扩展性

考虑Pipeline工具的用户友好性。

寻找直观的 API、全面的文档和强大的社区支持,

因为这些可以显著缩短您和您的团队的学习曲线。

避免使用启动隐藏 API 调用或给应用程序带来延迟的编排器。

此外,确保Pipeline工具可以随着应用程序、开发人员和流量数量的增长而有效扩展。




全文完。

原文链接:https://huyenchip.com/2024/07/25/genai-platform.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2180026.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工业交换机的RMON

工业交换机在现代网络中扮演着至关重要的角色,它不仅负责数据的高效传输,还具备强大的监控和管理能力。其中,RMON(远程监控)功能使得交换机的性能得以进一步提升,成为网络管理的重要工具。RMON提供了一种先…

讯时语音网关按线路对接配置方法(mod_cti基于FreeSWITCH)

文章目录 前言问题场景 联系我们解决方案创建分机语音网关反向注册对接创建线路创建线路组配置外呼的线路组配置语音网关查看线路是否有问题 前言 问题场景 语音网关中配置了10条电话线,但是有些电话线不定时会出现不能使用的情况,这很影响呼叫的质量。…

java后端项目技术记录

后端使用技术记录 一、软件1. apifox,API管理软件问题 2. nginx前端服务器(1) 反向代理(2) 负载均衡 二、问题1. 使用spring全局异常处理器处理特定的异常2. 扩展springmvc的消息转换器(对象和json数据的转换)3. 路径参数的接收4. 实体构建器…

墙绘交易平台:SpringBoot框架的设计与实现

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本墙绘产品展示交易平台就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据…

在双十一必买的好物有哪些?2024双十一好物必入清单推荐

随着2024年双十一购物狂欢节的临近,消费者们正热切期待着这一年度盛事的到来。作为一年中最具影响力的购物节日之一,双十一不仅为消费者带来了前所未有的优惠力度,更是各大品牌展示新品、推广好物的绝佳时机,在众多商品中&#xf…

【Leecode 随笔】C语言版看了不后悔系列持续更新中。。。

文章目录 题目一:最长回文子串题目描述:示例输入与输出:题目分析:解题思路:示例代码:深入剖析: 题目二:合并K个有序链表题目描述:示例输入与输出:题目分析&am…

GaussDB关键技术原理:高弹性(六)

书接上文GaussDB关键技术原理:高弹性(五)从日志多流和事务相关方面对hashbucket扩容技术进行了解读,本篇将从扩容实践方面继续介绍GaussDB高弹性技术。 5 扩容实践 5.1 工具介绍 5.1.1 TPC-C TPC-C(全称Transaction Proces…

【使用resnet18训练自己的数据集】

1.背景及准备 书接上文【以图搜图代码实现】–犬类以图搜图示例 总结了一下可以优化的点,其中提到使用自己的数据集训练网络,而不是单纯使用预训练的模型,这不就来了!! 使用11类犬类微调resnet18网络模型&#xff1a…

如何实现一个优秀的散列表!

文章内容收录到个人网站,方便阅读:http://hardyfish.top/ 文章内容收录到个人网站,方便阅读:http://hardyfish.top/ 文章内容收录到个人网站,方便阅读:http://hardyfish.top/ 前言 假设现在有一篇很长的…

python-pptx 中 placeholder 和 shape 有什么区别?

在 python-pptx 库中,placeholder 和 shape 是两个核心概念。虽然它们看起来相似,但在功能和作用上存在显著的区别。为了更好地理解这两个概念,我们可以通过它们的定义、使用场景以及实际代码示例来剖析其差异。 Python-pptx 的官网链接&…

08_OpenCV文字图片绘制

import cv2 import numpy as npimg cv2.imread(image0.jpg,1) font cv2.FONT_HERSHEY_SIMPLEXcv2.rectangle(img,(500,400),(200,100),(0,255,0),20) # 1 dst 2 文字内容 3 坐标 4 5 字体大小 6 color 7 粗细 8 line type cv2.putText(img,flower,(200,50),font,1,(0,0,250)…

Kubernetes从零到精通(17-扩展-Operator模式)

目录 一、简介 二、核心概念 三、工作原理 四、Operator Framework SDK示例 1.准备工作 2. 定义MySQLCluster CRD 3. 自定义资源实例 4. 编写控制器逻辑 5. 部署Operator 6. 验证 一、简介 Kubernetes中的Operator模式是一种用于简化和自动化管理复杂应用程序(尤其是…

【最新华为OD机试E卷-支持在线评测】简单的自动曝光(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…

数字电路与逻辑设计-移位寄存器逻辑功能测试和应用

一、实验目的 l.验证移位寄存器的逻辑功能; 2.掌握集成电路4位双向移位寄存器的使用方法; 3.学会应用移位寄存器实现数据的串行、并行转换和构成环形计数器。 二、实验原理 l.移位寄存器的特点 寄存器…

深入掌握 Protobuf 与 RPC 的高效结合:实现C++工程中的高效通信

目录 一、Protobuf与RPC框架的通信流程概述二、Protobuf与RPC在C中的实际应用2.1 定义 .proto 文件2.2 编译 .proto 文件生成C代码2.3 实现服务器端逻辑2.4 实现客户端逻辑2.5 使用CMake构建工程2.6 编译与运行2.7 关键组件解析2.8 序列化与反序列化的实现 三、关键实现与解析四…

想不到!手机壁纸变现项目,有人 3 个月怒赚 180000+(附教程)

同学们!今天无意间发现了一个超级有潜力的变现数据账号。这个账号专注于制作 3D 立体膨胀壁纸,我实在是忍不住要和大家分享。 这个账号的笔记内容非常简洁,主要就是展示壁纸作品。然而,就是这样简单的内容,却在短短 8…

介绍我经常使用的两款轻便易用的 JSON 工具

第一款是 Chrome Extension,名叫 JSON Viewer Pro,可以在 Chrome 应用商店下载: 点击右上角的 JSON Input,然后可以直接把 JSON 字符串内容粘贴进去,也直接直接加载本地 JSON 文件。 可以在树形显示和图形显示两种模式…

淘宝自动下单退货RPA自动化脚本(已运行两个月)

使用AdsPower Browser写的两个自动化脚本,一个下单一个退货,我也不知道他为什么要做这个自动化脚本,运行2个月时间,还蛮稳定,可以多窗口并发运行! 下单指定淘宝商品连接,执行下单RPA脚本实现自动操作。 退…

模糊测试SFuzz亮相第32届中国国际信息通信展览会

9月25日,被誉为“中国ICT市场的创新基地和风向标”的第32届中国国际信息通信展在北京盛大开幕,本次展会将在为期三天的时间内,为信息通信领域创新成果、尖端技术和产品提供国家级交流平台。开源网安携模糊测试产品及相关解决方案精彩亮相&…

Flux最新ControlNet 高清修复模型测评,效果好速度快!

上一篇介绍了Jasper AI 发布了三个模型中的法线贴图,没看过的可以看一下哈: Flux目前最快ControlNet模型现身!法线贴图详细测评 (chinaz.com) 这次再介绍一下另一个模型:升频器,可以有比较好的模糊修复效果&#xff…