Java 开发人员的困境:第 2 部分

这是 Markus Eisele 的三部分系列中的第二部分。第 1 部分可在此处找到。请继续关注第 3 部分。许多人工智能项目都失败了。原因往往很简单。团队尝试重建过去十年的应用程序,但在上面添加人工智能:带有人工智能的 CRM 系统。带有人工智能的聊天机器人。搜索引擎 [...]

来源:O'Reilly Media _AI & ML

这是 Markus Eisele 的三部分系列中的第二部分。第 1 部分可在此处找到。请继续关注第 3 部分。

这是 Markus Eisele 的三部分系列中的第二部分。第 1 部分可在 这里 。请继续关注第 3 部分。

许多人工智能项目都失败了。原因往往很简单。团队尝试重建过去十年的应用程序,但在上面添加人工智能:带有人工智能的 CRM 系统。带有人工智能的聊天机器人。具有人工智能的搜索引擎。模式是相同的:“X,但现在有了人工智能。”这些项目通常在演示中看起来不错,但很少在生产中运行。问题在于人工智能不仅仅扩展旧系统。它改变了应用程序的本质及其行为方式。如果我们将人工智能视为一个补充,我们就错过了重点。

人工智能对应用程序设计有何变化

传统的企业应用程序是围绕确定性工作流程构建的。服务接收输入、应用业务逻辑、存储或检索数据并做出响应。如果输入相同,则输出也相同。可靠性来自于可预测性。

人工智能改变了这种模式。输出是概率性的。同一个问题问两次可能会返回两个不同的答案。结果在很大程度上取决于上下文和提示结构。应用程序现在需要跨交互管理数据检索、上下文构建和内存。他们还需要验证和控制模型返回结果的机制。换句话说,应用程序不再只是代码加数据库。它是代码加上具有不确定行为的推理组件。这种转变使得“人工智能附加组件”变得脆弱,并表明需要全新的设计。

定义人工智能应用程序

人工智能应用程序不仅仅是带有智能文本框的旧应用程序。它们有新的结构元素:

  • 上下文管道:系统需要先组装输入,然后再将其传递给模型。这通常包括检索增强生成 (RAG),其中搜索企业数据并将其嵌入到提示中。而且每个用户的内存也是分层的。
  • 上下文管道 内存 护栏 代理

    Java 实践示例

    ND4J