这篇博文是 SAP BTP for Industries 一系列技术支持会议的一部分。 检查完整的日历 这里 观看过去会议的录音并注册即将举行的会议!这 重播 本次会议可用

作者:   Yatsea Li、Alice Magnani、Edward Neveux、Jacob Tan 

免责声明:SAP 指出,有关生成式人工智能和大型语言模型的潜在用途的帖子仅是发帖者个人的想法和意见,并不代表 SAP 的官方立场或未来发展路线图。 SAP 没有法律义务或其他承诺来开展本网站上任何帖子或相关内容中提到的任何业务,或开发或发布任何功能。

介绍

ChatGPT 和 GPT-4 等大型语言模型 (LLM) 凭借新兴功能而广受欢迎。在本系列的第四节中,我们将探讨 GPT 在 SAP 生态系统中的潜力,并讨论 SAP 合作伙伴如何利用这一强大的 AI 技术与 SAP 技术相结合来加速其解决方案开发流程,并在 SAP 上创建更多智能解决方案业务技术平台 (SAP BTP)。

以下列出了探索 GPT 在 SAP 生态系统中的潜力的完整博客文章系列:

探索GPT在SAP生态系统中的潜力

在我们之前的博客中,我们通过提示工程看到了 GPT 对客户消息的高级文本处理能力,例如文本摘要、情感分析、实体提取等。

在这篇博文中,我们将继续将提示集成到智能票务解决方案中,以便通过其聊天 API 使用 GPT 处理客户消息。此外,在架构图中实现了 LLM 代理服务。

GPT 聊天 API 一瞥

让我们首先了解一下 GPT 的聊天 API。

在 Playground 中,通过单击聊天会话中的“查看代码”提交提示时,我们可以检查对 Azure OpenAI 服务的底层 API 请求。让我们考虑分析输入文本的情感的示例。

在下图中,您可以找到 API 端点和用于访问 GPT Chat API 的 API 密钥。 Chat API 的请求正文由用于指令的系统角色消息和用于用户输入消息的用户角色消息以及其他参数(例如温度、max_tokens 等)组成。

有关聊天 API 的更多详细信息,请参阅 Azure OpenAI 服务 API 参考。

通过 NodeJS 中的 GPT 聊天 API 和 SAP CAP 使用提示

接下来,让我们看一些示例代码,了解如何使用 SAP CAP Node.js 中的相同情绪分析提示执行 API 调用,我们之前已经看到过。

请参阅 gpt-api-samples 通过四个选项在 Azure OpenAI 服务中使用 GPT-3.5 及以上模型的 Chat API 和 text-embedding-ada-002(版本 2)模型的 Embedding API 的 NodeJS 示例。

实施可重用、与 LLM 无关且可配置的 LLM 代理服务

使用 GPT 的聊天 API 将单个提示集成到 SAP CAP 应用程序中非常简单。

但是,如果您有多个提示需要集成怎么办?

如果提示有动态输入参数怎么办?

如果您需要灵活性,而不是局限于特定的大型语言模型,该怎么办?

因此,最佳实践是在 SAP CAP 解决方案中实施大型语言模型代理服务,设计原则如下:

  • 拥有一个可重用的服务来处理与大型语言模型 API 的所有集成是有意义的,而不是将集成粘合代码分散在整个应用程序中。
  • 与大语言模型无关将使您可以根据您的具体要求灵活地选择大语言模型。
  • 通过配置机制使提示可配置,而不是将它们硬编码为代码中的静态和固定提示,将提供更大的灵活性和易于维护性。

在我们的示例智能票务解决方案中,我们基于这些原则实现了这样的大型语言模型代理服务。接下来,我们将探讨其设计和实现细节。

将提示转换为 SAP CAP 中的自定义通用 RESTful API

在之前关于对客户消息进行高级文本处理的提示工程的博客文章中,我们看到所有提示都共享相同的结构,包括指令、用户输入(输入指示符、文本消息和输出指示符)和 JSON 格式的响应等。

以文本摘要和情感分析为例,唯一的区别是指令和响应。

因此,可以将其抽象为SAP CAP中的自定义通用RESTful API,如下图所示,其中提示和LLM API访问的详细信息可以隐藏并配置到JSON配置文件中,如config.json,可访问通过use_case的概念。

该API只需要两个简单的输入参数:

  • 用例:文本摘要、情感分析等,可用于识别其相关联 迅速的API访问 来自配置的信息。
  • 文本: 要回复的入站客户消息的文本消息。

LlmProxyService的配置

下图说明了如何使用用例(情感分析)来识别 config.json 中关联的提示详细信息和 API 访问信息。这样,我们就可以使LLMProxyService可配置了。

LlmProxyService的服务定义

在 llm-proxy-service.cds 中,定义了一个名为 invokeLLM() 的通用操作,及其作为 CustomerMsgResultType 的输出架构,可以通过通用 RESTful API 或 SAP CAP 外部或内部的 LlmProxyService 的直接操作调用来访问该操作。与 LLM API 的集成。

LLM API 身份验证

在我们的 LlmProxyService 实现示例中,我们选择通过 axios 对 LLM API 进行直接 http 调用,这使得通过有关 LLM API 访问的配置可以与 LLM 无关,例如“api_base_url“ 和 ”api_auth”。当然,也可以通过LangChain等来实现。

我们来看看LLM API的认证。实现细节可以看这里,通过配置可以同时支持OpenAI和Azure OpenAI Service api_auth: “承载 API 密钥” 和 api_auth: “api 密钥”

LlmProxyService 中操作 invokeLLM() 的实现

我们来看看LlmProxyService中的action invokeLLM()的实现细节。

对invokeLLM的最终REST API进行测试

最后,让我们对 LlmProxyService 中的 invokeLLM 的 REST API 运行一些测试

use_case – 情感分析

use_case – 客户消息流程

更多资源

包起来

我们已经了解了如何使用 GPT 的聊天 API 将提示集成到 SAP CAP NodeJS 应用程序中,甚至实现通用、可重用且可配置的 LLM 代理服务来处理 LLM API 的所有集成,并将提示转换为自定义 RESTful API SAP CAP,带来选择法学硕士的灵活性,并且易于维护。