语言接口:探索大模型优先架构的新一代 API 设计

这篇具有很好参考价值的文章主要介绍了语言接口:探索大模型优先架构的新一代 API 设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

过去的两三个月里,在开发基于大语言模型的软件时,也一直在思考如何设计一个大模型优先架构。而随着越来越多的团队加入到这场竞赛里,我们会发现:基于大语言模型的软件架构与过去的不同之处,诸如于:我们需要新一代的 API。

我暂时将这一代 API 称为:语言接口/语言 API(大概会有大佬来发起新的名称),原因是:自然语言只是人机的接口,DSL 是 AI 与机器的接口、机器与机器的接口。

所以,在这篇文章里,我将继续总结一些内外部看到的经验,以及构建 ArchGuard Co-mate 架构时的一些思考。

模式:自然语言即 DSL

意图:使用自然语言作为领域特定语言(DSL)来描述系统的需求和期望,通过正则表达式等工具从自然语言中提取关键信息,以指导系统的设计和开发。

适用场景:以自然语言作为沟通媒介

示例:在我们习惯了大模型的能力之后,也开始接受了自然语言作为一种 API。与我们一般熟悉的 API 相比,自然语言作为 API 应该称为 DSL(Domain-Specific Language,领域特定语言)。

举一个简单的例子,诸如于我们前面提到的用户故事,其标准形式是: 作为一个<用户角色>, 我想要<完成活动>, 以便于<实现价值> 。随后,我们就可以对其运行特殊处理(诸如于高亮):

**作为一个**购买商品的用户,**我希望**能够退货,**以便于**在不满意或商品存在问题的情况下获得处理。

随后,我们可以让 LLM(大语言模型) 生成正则表达式,以校验返回结果是否符合要求:

  • 用户角色: 购买了商品的用户

  • 完成活动: 退货

  • 实现价值: 在不满意或商品存在问题的情况下获得处理

并作为下一代的输入,如将一句话的需求,编写成更详细的 AC(Acceptance Criteria,验收条件)。这种方式可以使用自然语言来描述系统需求,从而提高开发效率和准确性。

模式:实时文本流 DSL

意图:通过逐步、流式的方式返回结果,提高大语言模型的用户体验。

适用场景:当需要大量处理数据的任务时,一次性返回所有结果会非常耗时,影响用户体验。此时可以采用流式返回结果的方式,即模型逐步返回结果,让用户可以及时查看部分结果。

示例:在需要大语言模型返回复杂的结果时,如果我们期待它一次性返回所有的结果时,它总是非常的缓慢。在这时,采用传统的 JSON、Yaml 等格式,必然非常缓慢的,对于用户的体验非常差 —— 一个返回结果平均要几十秒。而除了在模型侧提升性能、本地减少请求,还可以构建能处理流式返回的 DSL。

这也是为什么我们觉得传统的 JSON 无法满足的原因,在返回正常的结果前可能解析失败,并且你返回的 JSON 可能不是完整的。

在这时,我们需要服务端支持处理 streaming response,并需要前端来处理。如在商业画布的场景下,就可以根据不同的一级 LIST 处理结果,并实时呈现给用户:

- 客户细分
    - 目标市场:企业客户
    - 客户类别:中小型企业,初创企业,创业公司,大型企业
    - 客户需求:专业技术服务,包括但不限于IT咨询,软件开发,网络安全,数据分析等
- 价值主张
    ...

除此,根据不同的场景,我们可以返回不同的格式,如 markdown 表格、CSV、JSONP 等也能作为返回格式。

模式:DSL 引导的功能生成

意图:使用DSL和LLM结合的方式,以生成具有更好逻辑性和准确性的文本。

适用场景:适用于需要根据规范和约束生成具有逻辑性和准确性的大量文本的各种场景,例如软件开发、自然语言处理、数据分析和教育培训等领域。

示例:如我们所知,大模型(LLM)在生成文本时随机性太高,充满大量的不确定性。而由于,LLM 具备很好的逻辑推理能力,因此我们结合了 DSL 与 LLM 的强项,让它来编排 DSL 中的功能。

所以,在 Co-mate 里,我们设计了一套 DSL,以让 LLM 根据不同的场景填空和编写 DSL,如根据基础的规范来生成 DSL:

foundation {
   layered {
        layer("application") {
            pattern(".*\\.application") { name shouldBe endWiths("DTO", "Request", "Response") }
        }
        ...
        dependency {
            "application" dependedOn "domain"
            ...
        }
    }
}

在这里的 layered 是指系统的分层架构,layer 则是分层的定义,dependency 则定义分层间的依赖关系。最后,交由我们的系统来处理这个 DSL。

DSL 引导的功能生成是一种结合了领域特定语言(DSL)和大模型语言模型(LLM)的文本生成模式,通过 DSL 提供的规范和约束,以增强 LLM 生成文本的逻辑性和准确性。

模式:语言显式化重试

意图:提高大语言模型生成结果的准确性,并保持历史消息,以便进行对话记录和可视化。

适用场景:由于大语言模型的不确定性,生成的结果往往不够准确。此时可以采用显式化重试的方式,通过告知模型结果错误并让其重新生成,从而提高结果准确性。

示例:众所周知,由 LLM 生成的有确定性要求的结果,总会出现一定的错误。诸如于,我在使用 ChatGPT 生成 PlantUML 时,只有 80% 的结果是可正确编译的。通常来说,在这种时候会有多种不同的方式可以实现:

  • 重新发送请求,以 GPT 再次生成。

  • 告知 GPT 错了,让他重新生成。

从结果来看,两种模式的差异并不大。不过,第二种方式需要保持历史消息,所以会多消耗几个 token。

尽管从实践来看,第一种方式更为简单,但是方式二提供了一种更显式化的设计。

模式:动态代理调用

意图:支持动态代理调用其他服务的API或函数,并根据用户的输入进行匹配和响应。

适用场景:需要动态处理用户输入并调用相应功能的系统,以及需要将自然语言与函数或服务进行匹配和转换的系统。它为开发人员提供了一种灵活和可扩展的方式来处理不同的输入,并根据需求调用相应的API或函数。

示例 1:LangChain Agents 采用的便是类似的机制,它负责动态代理调用其他服务的API,比如精确计算、实际的业务数据 API 等。由内部提供的一系列问题模板来构建这个过程:

...
Question: the input question you must answer
Thought: you should always think about what to do
Action: the action to take, should be one of [{tool_names}]
...

示例 2:OpenAI 提供的 Function calling,可以检测何时需要调用函数(取决于用户的输入)并使用符合函数签名(signature)的 JSON 进行响应。这样一来,开发人员更可靠地从模型中获取结构化数据。诸如于官方示例里的: send_email(to: string, body: string),便是可以直接由用户的输入转换过来的。而在自然语言与函数之前,我们需要设计一个的方式来进行匹配。

示例 3:在 ArchGuard Co-mate 中,我们也构建了类似的方式,其缘由是架构治理是一个复杂的问题,我们确定用户的输入并不一定在系统之中。因此,我们希望提供两种方式:

  1. 反射 + 抽象的方式可调用的函数,来匹配用户的输入。

  2. 提供关键的模型信息, 让 LLM 进行分析。

所以,我们设计的是 DynamicContext 的方式,以及对应的 DyFunction 来实现这种方式的支持。

模式:本地函数动态代理

意图:旨在结合本地运行的 NLP 工具对用户输入的文本进行分析,并根据分析结果动态匹配对应的函数进行调用。

适用场景:根据用户输入的文本内容动态匹配并调用相应函数的系统,通过本地文本分析工具结合语义分析实现准确的函数匹配。它提供了灵活和可扩展的方式来处理不同的文本输入,并自动选择适当的函数进行处理。

示例:在 Co-mate 中,我们在本地引入了 SentenceTransformer 来处理用户的输入,优在本地分析、匹配用户的输入,并处理。当匹配到结果后直接调用本地的函数,当匹配不到结果时调用远端的处理函数来处理。

小结

由 ChatGPT 总结什么是语言 API:

语言 API 是一种使用自然语言作为领域特定语言(DSL)或与系统进行交互的接口。它通过解析、处理和分析自然语言,以指导系统的设计、开发和执行。它的设计目的是提高开发效率、准确性和用户体验,使开发人员能够使用自然语言描述系统需求、执行任务并获取系统生成的结果。

由 Notion 总结本文:

本文介绍了五种模式,包括实时文本流 DSL、DSL 引导的功能生成、语言显式化重试、动态代理调用和本地函数动态代理,以提高大语言模型的用户体验和准确性。这些模式适用于不同的场景,如需要大量处理数据的任务、需要生成具有逻辑性和准确性的大量文本的各种场景、需要动态处理用户输入并调用相应功能的系统、需要将自然语言与函数或服务进行匹配和转换的系统等。文章来源地址https://www.toymoban.com/news/detail-494111.html

到了这里,关于语言接口:探索大模型优先架构的新一代 API 设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 探索增强学习的未来:人工智能的新一代

    人工智能(Artificial Intelligence, AI)是一门研究如何让计算机模拟人类智能的科学。随着数据量的增加和计算能力的提升,人工智能技术的发展迅速。其中,增强学习(Reinforcement Learning, RL)是一种非常重要的人工智能技术,它可以帮助计算机在没有明确指导的情况下学习如何做出最

    2024年02月22日
    浏览(84)
  • 如何构建新一代实时湖仓?袋鼠云基于数据湖的探索升级之路

    在之前的实时湖仓系列文章中,我们已经介绍了实时湖仓对于当前企业数字化转型的重要性,实时湖仓的功能架构设计,以及实时计算和数据湖结合的应用场景。 在本篇文章中,将介绍袋鼠云数栈在构建实时湖仓系统上的探索与落地实践,及未来规划。 数栈作为一个数据开

    2024年02月05日
    浏览(74)
  • 【机密计算技术】ARM 新一代机密计算架构 CCA

            过去十年, TEE 主要用在移动端,可以称为 机密计算 1.0 ,保障支付宝、微信、FIDO 支付类信任根上的安全,保障人脸、指纹等个人隐私的安全,保障高清媒体的数字版权 DRM。                2008 年,ARM 推出了 trustzone 技术,通过硬件设计将处理器运行状态隔离为

    2024年02月15日
    浏览(49)
  • 揭秘新一代云数仓技术架构与最佳实践

    从传统数仓到湖仓一体,历经三十多年发展,技术的浪潮快速迭代,以云原生数仓为中心的现代数据栈时代已然到来。 背后的核心的原因在于,企业正在加速走向数字化、智能化,对数据的应用也提出了全新要求,特别是对数据的实时分析、实时部署需求更加的强烈,而云数

    2024年02月09日
    浏览(53)
  • CogVLM:智谱AI 新一代多模态大模型

    自 5 月 18 日发布并开源 VisualGLM-6B 以来,智谱AI清华KEG潜心打磨,致力于开发更加强大的多模态大模型。 基于对视觉和语言信息之间融合的理解,我们提出了一种新的视觉语言基础模型 CogVLM。CogVLM 可以在不牺牲任何 NLP 任务性能的情况下,实现视觉语言特征的深度融合。 我

    2024年01月21日
    浏览(54)
  • 太平洋电信新一代SD-WAN打造敏捷IT架构

    随着企业数字化转型的不断发展,商业和业务的运行模式也不断改变,企业对网络的速度、安全、智能、协同性、经济性等方面的要 求越来越高。传统的接入设备采用封闭架构,功能扩展性有限,难 以满足业务发展的要求。 太平洋电信新一代SD-WAN集路由、交换、VPN、QoS、安

    2024年01月18日
    浏览(39)
  • ES|QL:Elasticsearch的 新一代查询语言

    作者:李捷 “ 学会选择很难。学会正确选择更难。而在一个充满无限可能的世界里学会正确选择则更难,也许是太难了。 ” 巴里-施瓦茨(Barry Schwartz)在《选择的悖论--多就是少》(The Paradox of Choice -More is Less)一书中的一段话概括了为什么灵活性和可定制性过高会让用户

    2024年02月08日
    浏览(42)
  • 数据湖仓一体化架构:探究新一代数据处理的可能性

    随着大数据的快速发展,企业不断寻求高效、灵活和经济的方法来处理和管理海量数据。在这种背景下,数据湖和数据仓库这两种不同的架构模式各自展现出其独特的优势。而数据湖仓一体化架构,是对这两种模式优势的综合,为企业提供了一个全新的数据管理方案。  2.1

    2024年02月08日
    浏览(40)
  • 探索ChatGLM-LLaMA-chinese:新一代AI聊天机器人与多语言建模的创新实践

    项目地址:https://gitcode.com/27182812/ChatGLM-LLaMA-chinese-insturct 在人工智能领域,语言模型的进步不断刷新我们的认知。今天,我们将深度剖析一个令人瞩目的开源项目——ChatGLM-LLaMA-chinese,它是一个基于阿里云大模型的多语言聊天机器人,具有丰富的功能和高度的可定制性。 Chat

    2024年04月11日
    浏览(62)
  • 新一代图像合成模型:Stable Diffusion XL(SDXL)上线!

    几个使用Stable Diffusion XL 1.0生成的图像示例。 新的SDXL 1.0发布允许在本地计算机上运行的高分辨率人工智能图像合成。 周三,Stability AI发布了其下一代开源权重人工智能图像合成模型Stable Diffusion XL 1.0(SDXL)。它可以根据文本描述生成新颖的图像,并生成比之前版本的Stable

    2024年02月11日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包