-- 知识铺
当我开始学习 AI 和大型语言模型 (LLMs) 的旅程时,我偶然发现了 Java 库 LangChain4j。我深入研究并开始学习提示工程、嵌入和向量存储等概念。我受到启发,采取亲身实践的方法并开发一个 AI 驱动的应用程序。
在这篇博文中,我将向您介绍使用 OpenAI、LangChain4j 和 Spring Boot 和 React
构建 AI 驱动应用程序的步骤。我还将分享我在此过程中学到的一些经验教训。如果您想跟随,可以在我的 GitHub 仓库 nickdala/piggy-bank-langchain4j 中找到代码。
您需要遵循什么
我们将使用 GitHub CodeSpaces 来运行应用程序。GitHub CodeSpaces 是一个基于云的开发环境,可在浏览器中运行。它使您可以完全在云中进行开发。要继续操作,您将需要:
您还可以使用自己的开发环境来运行应用程序。以下是 Hilla 对开发环境的要求。
- Java 17 或更高版本
- 节点 18 或更高版本
- 支持 Java 和 TypeScript 的 IDE — IntelliJ Ultimate 和 VS Code 都是不错的选择
生成 OpenAI API 密钥
您需要创建一个 OpenAI API 密钥来运行该应用程序。您可以在此处创建_秘密 API 密钥_。
我们要建造什么
示例应用程序称为“存钱罐
”。这是一个简单的 Spring Boot 和 React 应用程序,用于模拟银行。
Piggy Bank
是使用 Hilla 用 Java 编写的。之所以选择 Hilla Web 框架,是因为它汇集了 Spring Boot 和 React 的强大功能。它允许您使用单个代码库构建全栈 Web 应用程序。
为简单起见,该应用程序涵盖以下用例。
- _银行助理_可以查看客户列表
- _银行助理_可以点击客户来查看他们的账户
- 账户可以_开立_或_关闭_
最后,我们将集成 OpenAI 的 GPT-3 API,允许客户通过 AI 驱动的聊天机器人关闭他们的账户。
构建和部署
生成示例的最简单方法是使用 GitHub CodeSpaces。您还可以使用 dev 容器在本地构建示例或使用您自己的开发环境。
若要使用 CodeSpaces 生成示例,请按照以下步骤操作。
- 导航到 GitHub 仓库 nickdala/piggy-bank-langchain4j
- 单击“
代码
”按钮。 - 单击“
Codespaces
”选项卡。 - 单击“
在主屏幕上创建代码空间”
按钮。
这将创建一个 GitHub Codespace 并克隆存储库。Codespace 准备就绪后,您将看到以下内容。
接下来,我们需要在 application.properties
文件中设置 OpenAI API 密钥。为此,请导航到 src/main/resources/application.properties
并设置属性 langchain4j.chat-model.openai.api-key
。
最后,我们可以构建并运行应用程序。在 Codespaces 终端中运行以下命令。
这将生成并运行应用程序。新的浏览器窗口将与存钱罐应用程序一起自动启动。
下面是应用程序外观的 UI。
使用 AI 驱动的聊天机器人关闭帐户
要关闭帐户,请单击“聊天
”菜单。这将推出一个人工智能驱动的聊天机器人。聊天机器人会问您一系列问题以关闭帐户。
这是与聊天机器人的对话示例。
向聊天机器人提供您要关闭的帐户的 ID。关闭帐户后,请在 UI 中进行验证。
很酷,对吧?
开始使用LangChain4j
现在让我们来看看我们如何将LangChain4j整合到我们的应用程序中。
Maven 依赖性
第一步是将 LangChain4j 依赖项添加到 Spring Boot 应用程序的 pom.xml
文件中。
|
|
在 application.properties 中包含 OpenAI API 密钥
接下来,我们需要在 application.properties
文件中设置 OpenAI API 密钥。为此,请导航到 src/main/resources/application.properties
并设置属性 langchain4j.chat-model.openai.api-key
。
|
|
应用程序如何与 OpenAI 交互
现在我们已经启动并运行了应用程序,让我们来看看它是如何工作的。我们将深入探讨以下主题。
- 大型语言模型 (LLMs)
- 提示工程
- LangChain4j 工具
什么是大型语言模型 (LLMs)
大型语言模型 (LLMs) 是一类在大量文本上训练的新型 AI 模型。这些模型旨在理解和生成类似人类的文本。在 Piggy Bank
应用程序中,AI 驱动的聊天机器人会生成个性化文本来关闭帐户。但是如何LLM产生文本呢?让我们来看看这个过程。
提示工程
系统消息有助于设置 LLM的行为。正确构建的系统消息将有助于LLM产生所需的响应。
让我们看一下我们用来关闭帐户的系统消息。在界面CustomerSupportAgent中,我们有以下@SystemMessage
。
|
|
让我们仔细看看聊天机器人使用的系统消息。
- 第一句话设定了对话的上下文。上下文是客户正在与名为
Piggy Bank Assistant
的银行的客户支持代理交谈。 - 预期是客户只能关闭其帐户。
- 在关闭帐户之前,支持代理将提供一项保留交易。
- 帐户关闭后,支持代理将礼貌地回应。
这与其说是一门科学,不如说是一门手艺。需要一些反复试验才能获得正确的系统消息。系统消息是从 获得所需响应的关键LLM。作为练习,尝试更改提示,看看聊天机器人如何响应。
LangChain4j 代理和工具
代理用于告诉要执行LLM哪些操作。在链中,一系列动作是硬编码的。另一方面,代理利用语言模型作为推理引擎来确定要采取哪些行动以及以何种顺序执行。
工具用于帮助LLM执行操作。它们是代理可用于执行操作的方法。
在 AccountTools 类中,我们有以下@Tool
注释。
|
|
@Tool
注释用于定义聊天机器人的工具。提供工具的正确描述非常重要。这将有助于确定LLM使用哪个工具。
清理
请确保在完成后删除 GitHub Codespace。为此,请单击“Codespaces
”选项卡,然后单击“删除
”按钮。
要点
OpenAI 和 LangChain4j 使构建 AI 驱动的应用程序变得更加容易。我们使用 LangChain4j 代理和工具来帮助执行LLM所需的操作。我们还使用 Prompt Engineering 来帮助产生LLM所需的响应。综上所述,我们将一个聊天机器人集成到我们的应用程序中,该机器人能够关闭帐户。
资源
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/geek001/post/20240730/%E4%BD%BF%E7%94%A8-OpenAILangChain4j-%E5%92%8C-Spring-Boot-%E5%92%8C-React-%E6%9E%84%E5%BB%BA-AI-%E9%A9%B1%E5%8A%A8%E7%9A%84%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F--%E7%9F%A5%E8%AF%86%E9%93%BA/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com