这个项目欢迎贡献和建议。大多数捐款要求您同意撰写贡献者许可协议(CLA),宣布您有权并实际上授予我们使用您的贡献的权利。有关详细信息,请访问https://cla.opensource.microsoft.com。
AI购物车是一种示例应用程序,可以通过AI的力量来增强您的购物体验。它利用Azure Openai和Azure Spring应用程序来构建推荐引擎,该引擎不仅可扩展,弹性和安全,而且还可以满足您的需求。利用Azure Openai,该应用程序对购物车中的物品进行营养分析,并使用这些成分生成前3个食谱。使用Azure Developer CLI(AZD),您只需在Azure启动和运行此功能齐全的示例应用程序即可。让我们开始!
此示例申请在此原始作品上启发了灵感:https://github.com/lopezleandro03/ai-assisted-groceries-cart
请参阅App模板存储库REDME,以获取与AZD兼容的更多样本。
AI购物车
先决条件
安装Azure开发人员CLI
具有主动订阅的Azure帐户。免费创建一个。
OpenJDK 17
node.js 20.5.0+
Docker
带有GPT-4或GPT-35-Turbo [Note]
的Azure OpenAi
查看架构图和您将要部署的资源和Azure OpenAI部分。
QuickStart
要了解如何开始使用任何模板,请遵循此快速启动。对于此模板azure-samples/app-templates-java-openai-springApps,您需要执行一些其他步骤,如下所述。
此QuickStart将向您展示如何在Azure上进行身份验证,启用AZD的Spring Apps Alpha功能,使用模板初始化,为Azure OpenAi设置环境变量,提供基础架构,并将代码部署到Azure:
::如果您还没有登录到AZD
AZD auth登录
启用Azure Spring Apps Alpha功能的AZD
azd config set alpha.springapp on
首次项目设置。使用此模板在当前目录中初始化一个项目
azd init -template azure-samples/app-templates-java-openai-springapps
设置Azure Openai的环境变量
azd env集azureopenaiaiaiaiapikey
AZD Env集Azureopenaiendpoint
azd env集azureopenaideploymentid
使用GPT-3.5涡轮模型将此环境变量设置为false
azd env集isazureopenaigpt4model true
提供并部署到Azure
azd up
注释
用您的Azure Openai资源中的值替换占位符。
如果您使用的是GPT-35-Turbo模型,则需要在配置资源并将示例应用程序部署到Azure之前将Isazureopenaigpt4Model设置为false:
AZD ENV SET ISAZUROPENAIGPT4MODEL FALSE
在部署结束时,您将看到前端的URL。打开浏览器中的URL以查看应用程序中的应用程序。
应用程序体系结构
该示例应用程序使用以下Azure资源:
Azure容器应用程序(环境)作为容器应用程序和Azure Spring Apps标准comssumpting和专用计划
托管前端
Azure Spring应用程序以春季应用程序托管AI购物车服务
Azure容器注册表以托管前端的Docker映像
PostgreSQL(灵活服务器)的Azure数据库存储AI购物车服务的数据
用于监视和记录的Azure监视器
Azure OpenAI进行营养分析并生成前3个食谱。它没有使用示例应用程序[Note]。
这是一个说明这些组件的高级体系结构图。除了Azure OpenAI,所有其他资源都在您使用AZD UP创建资源时创建的单个资源组中提供。
建筑图
此模板资源提供给Azure订阅,您将在提供它们后选择。请参阅Microsoft Azure的定价计算器,如果需要,请更新Infra/Main.bicep中的随附的Azure资源定义以适合您的需求。
azure openai
该示例应用程序使用Azure Openai。它不是自动部署过程的一部分。您需要创建Azure OpenAI资源并配置应用程序以使用它。请按照Azure OpenAI文档中的说明访问Azure OpenAi。在开始使用Azure OpenAi并请求访问之前,请不要忘记阅读Azure OpenAi模型的负责AI练习的概述。
示例应用程序的当前版本需要公开访问的Azure OpenAI资源(即允许从所有网络访问)。该样本不打算用于生产中。要了解有关Azure OpenAI的网络和安全性的更多信息,请参考Azure OpenAI文档。
此示例应用程序是开发用于GPT-4模型的。它还支持GPT-35-Turbo。要使用GPT-35-Turbo,您需要将isazureopenaigpt4model设置为false(参见QuickStart)。默认情况下,此参数/环境变量设置为true。要完成应用程序的设置,您需要从Azure OpenAI资源设置以下信息:
azureopenaiaiaiapikey -Azure OpenAi API键
Azureopenaiendpoint -Azure OpenAi端点
azureopenaideploymentID-GPT-4或GPT-3.5-Turbo模型的Azure OpenAI部署ID
API键和端点可以在Azure门户中找到。您可以按照以下说明进行操作:检索密钥和ENPOINT。部署ID对应于本指南中的部署名称。
及时工程对于从Azure Openai获得最佳结果很重要。文本提示是用户与GPT模型交互的方式。与所有生成性大语言模型(LLM)一样,GPT模型尝试生成最有可能遵循先前文本的下一系列单词。这有点像问AI模型:我说的时首先想到的是什么?
使用聊天完成API,提示的不同部分将发送到与特定角色相关联的API:系统,用户和助攻。系统消息在提示的开始时包含,用于为模型提供初始说明:助理,个性特征的描述,将遵循的指令/规则等。
。AI购物车服务正在为Java使用Azure OpenAi客户库库。此诽谤是Java的Azure SDK的一部分。它被用作聊天完成。在服务中,我们在SystemMessageConstants.java中有2个系统消息:一种用于AI营养分析的系统,一个用于生成前3个食谱。系统消息之后是用户消息:篮子是:。助理消息是模型的响应。该服务正在使用ShoppingCartaireCommentations与Azure Openai进行互动。在此类中,您将找到负责生成提示的代码并调用Azure OpenAi API:GetChatCompletion。要了解此类中使用的温度和TOPP,请参阅文档。
对于GPT-35-turbo模型,将更多上下文添加到用户消息中。在用户消息的末尾添加了此附加上下文。它提供了有关JSON格式的更多信息,即OpenAI模型需要返回并要求Model Tor仅返回JSON而没有其他文本。此其他上下文可在Usermessageconstants.java中找到。
先决条件â2
应用程序架构â2
应用程序代码
该模板的结构遵循Azure开发人员CLI模板对流。您可以在官方文档中了解有关AZD架构的更多信息。
接下来的步骤
此时,您已在Azure上部署了一个完整的申请。
企业方案
对于企业需求,寻找部署的多面应用程序,Tanzu组件支持和SLA Assurance,我们建议使用Azure Spring Apps Enterprise。检查Azure Spring Apps着陆区加速器,该加速器提供了旨在简化春季启动和Spring Cloud Applications生产的基础架构提供和部署的架构指南。作为工作量所有者,请使用着陆区加速器提供的建筑指导,充满信心地实现目标技术状态。
Azure开发人员CLI
您已经使用Azure开发人员CLI部署了示例应用程序,但是Azure开发人员CLI可以做的更多。这些下一步将向您介绍其他命令,这些命令将使Azure上的应用程序更加容易。使用Azure开发人员CLI,您可以设置管道,监视您的应用程序,测试并在本地调试。
azd down-删除使用此模板创建的所有Azure资源
AZD Pipeline config-要配置CI/CD管道(使用GitHub操作或Azure DevOps),以在将代码推到主分支时部署您的应用程序。
需要为Azure Openai资源设置几个环境变量 /秘密:
azure_openai_api_key:Azure Openai资源的API密钥
对于github工作流程,您应该使用github秘密
对于Azure DevOps管道,您可以在创建变量时检查“保持此值秘密”
azure_openai_endpoint:Azure Openai资源的端点
azure_openai_deployment_id:Azure Openai资源的部署ID/名称
IS_AZURE_OPENAI_GPT4_MODEL:如果您使用GPT-4模型,则设置为true,如果您使用的是GPT-3.5 Turbo Model
,则设置为false
AZD监视器 - 监视应用程序并快速导航到各种应用程序洞察仪表板(例如概述,实时指标,日志)
在本地运行和调试 - 使用Visual Studio代码和Azure开发人员CLI扩展
附加AZD命令
Azure开发人员CLI包括许多其他命令,以帮助您获得Azure开发体验。您可以通过运行AZD帮助在终端查看这些命令。您还可以在我们的Azure开发人员CLI命令页面上查看命令的完整列表。
资源
这些是您可以使用的其他资源来了解有关示例应用程序及其基础技术的更多信息。
从零开始到零 - azure spring应用程序消费计划
Azure Spring应用程序消费 - 网络和安全性
https://learn.microsoft.com/en-us/azure/ai-services/openai/encrypt-data-at-rest
https://learn.microsoft.com/en-us/azure/ai-services/openai/encrypt-data-at-rest
如何使用托管身份配置Azure OpenAi服务
数据收集
该软件可能会收集有关您的信息和您对软件的使用,并将其发送给Microsoft。微软可能会使用此信息来提供服务并改善我们的产品和服务。您可以按照存储库中所述关闭遥测。该软件中还有一些功能可以使您和Microsoft从应用程序的用户收集数据。如果使用这些功能,则必须遵守适用的法律,包括向您的应用程序用户提供适当的通知以及Microsoft的隐私声明副本。我们的隐私声明位于https://go.microsoft.com/fwlink/?LinkId=521839。您可以在帮助文档和我们的隐私声明中了解有关数据收集和使用的更多信息。您对软件的使用作为您同意这些做法的同意。
遥测配置
默认情况下,遥测收集。
要选择退出,将变量enabletelemetry设置为false in infra/main.json.json或二头肌模板infra/main.bicep。使用Azure Developer CLI进行配置时,可以使用以下命令设置它:
azd env集enabletelemetry false
商标
该项目可能包含用于项目,产品或服务的商标或徽标。 Microsoft商标或徽标的授权使用受到了Microsoft的商标和品牌准则的约束。在此项目的修改版本中使用Microsoft商标或徽标不得引起混乱或暗示Microsoft赞助。任何使用第三方商标或徽标都遵守这些第三方政策。
当您提交拉动请求时,CLA机器人将自动确定您是否需要提供CLA并适当地装饰PR(例如状态检查,评论)。只需按照机器人提供的说明即可。您只需要使用我们的CLA在所有存储库中进行一次。
该项目采用了Microsoft开源的行为代码。有关更多信息,请参见《行为守则常见问题准则》或与opencode@microsoft.com联系。
行为准则
问题和错误
功能请求
提交指南
行为准则
帮助我们保持该项目开放和包容。请阅读并遵循我们的行为准则。
发现了一个问题?
如果您在源代码中找到错误或文档中的错误,则可以通过将问题提交给GitHub存储库来帮助我们。更好的是,您可以提交带有修复的拉请请求。
想要一个功能?
您可以通过向GitHub存储库提交问题来请求新功能。如果您想实现一项新功能,请首先提交有关您的工作建议的问题,以确保我们可以使用它。
可以制作小功能并直接作为拉请求提交。
提交指南
提交问题
在提交问题之前,请搜索档案,也许您的问题已经回答。
如果您的问题似乎是一个错误,尚未报告,请打开一个新问题。通过不报告重复的问题,帮助我们最大程度地提高了解决问题并添加新功能的努力。提供以下信息将增加迅速处理问题的机会:
问题的概述 - 如果抛出了错误的堆栈跟踪,请有助于
版本 - 哪些版本受到影响(例如0.1.2)
动机或用例 - 解释您要做什么,以及为什么当前行为是您的错误
浏览器和操作系统 - 这是所有浏览器的问题吗?
重现错误 - 提供一个实时示例或一组明确的步骤
相关问题 - 之前有类似的问题吗?
建议修复 - 如果您自己无法修复错误,也许您可以指出可能导致问题的原因(代码或提交行)
您可以通过在相应的存储库的问题链接上提供上述信息来提交新问题:https://github.com/Azure-Samples/app-templates-java-openai-springapps/issues/new]。
提交拉请请求(pr)
提交拉动请求(PR)之前,请考虑以下准则:
搜索存储库(https://github.com/Azure-Samples/app-templates-java-openai-springapps/pulls)查看与您的提交有关的开放或已关闭PR。您不想重复努力。
在新的git叉中进行更改:
使用描述性提交消息提交更改
page_type:示例
语言:
- azdeveloper
- java
- 打字稿
- bicep
- htm 产品:
- azure
- azure-container-apps
- azure-spring-apps
- Azure-container-Registry
- Azure-Monitor
- ms-build-openjdk
- AI-Services
- Azure-Openai
- azure-database-postgresql urlfragment:app-templates-java-openai-springapps 姓名:AI购物车 - Java,Azure Openai和Azure Spring Apps的应用模板 描述:“ AI购物车样本应用程序,带有Azure Openai和Azure Spring应用程序” ---
AI购物车 - Java,Azure Openai和Azure Spring Apps的应用模板
AI购物车是一种示例应用程序,可以通过AI的力量来增强您的购物体验。它利用Azure Openai和Azure Spring应用程序来构建推荐引擎,该引擎不仅可扩展,弹性和安全,而且还可以满足您的需求。利用Azure Openai,该应用程序对购物车中的物品进行营养分析,并使用这些成分生成前3个食谱。使用Azure Developer CLI(AZD),您只需在Azure启动和运行此功能齐全的示例应用程序即可。让我们开始!
此示例申请在此原始作品上启发了灵感:https://github.com/lopezleandro03/ai-assisted-groceries-cart
请参阅App Templates存储库README,以获取与koude0兼容的更多样品。
先决条件
- Install the Azure Developer CLI
- 具有主动订阅的Azure帐户。 Create one for free。
- OpenJDK 17
- Node.js 20.5.0+
- Docker
-
Azure OpenAI with koude1 or koude2
- [Note]
- 查看您将部署的architecture diagram and the resources和Azure OpenAI部分。
快速开始
要学习如何开始使用任何模板,请遵循this quickstart。对于此模板Azure-Samples/app-templates-java-openai-springapps
,您需要执行一些其他步骤,如下所述。
此QuickStart将向您展示如何在Azure上进行身份验证,启用Spring Apps alpha feature for Azd,使用模板初始化,将environment variables设置为Azure OpenAI,提供基础架构,并将代码部署到Azure:
:
:
# Log in to azd if you haven't already
azd auth login
# Enable Azure Spring Apps alpha feature for azd
azd config set alpha.springapp on
# First-time project setup. Initialize a project in the current directory using this template
azd init --template Azure-Samples/app-templates-java-openai-springapps
# Set the environment variables for Azure OpenAI
azd env set azureOpenAiApiKey <replace-with-Azure-OpenAi-API-key>
azd env set azureOpenAiEndpoint <replace-with-Azure-OpenAi-endpoint>
azd env set azureOpenAiDeploymentId <replace-with-Azure-OpenAi-deployment-id/name>
# To use GPT-3.5 Turbo model set this environment variable to false
azd env set isAzureOpenAiGpt4Model true
# Provision and deploy to Azure
azd up
笔记
- 用您的Azure Openai资源中的值代替占位符。
- 如果您使用的是
gpt-35-turbo
模型,则需要在配置资源并将示例应用程序部署到Azure之前将isAzureOpenAiGpt4Model
设置为false
:
bash
azd env set isAzureOpenAiGpt4Model false
在部署结束时,您将看到前端的URL。打开浏览器中的URL以查看应用程序中的应用程序。
应用架构
此示例应用程序使用以下Azure资源:
- Azure Container Apps (Environment)作为集装箱应用程序和Azure Spring Apps Standard comsumption and dedicated plan托管前端
- Azure Spring Apps托管AI购物车服务作为Spring App
- Azure Container Registry托管前端的Docker图像
- Azure Database for PostgreSQL (Flexible Server)存储AI购物车服务的数据
- Azure Monitor用于监视和记录
- Azure OpenAI进行营养分析并生成前3个食谱。它没有使用示例应用程序 [Note] 。
这是一个说明这些组件的高级体系结构图。除Azure OpenAi外,所有其他资源都在您使用azd up
创建资源时创建的单个resource group中提供。
此模板资源提供给Azure订阅,您将在提供它们后选择。请参阅Pricing calculator for Microsoft Azure,如果需要,请更新
infra/main.bicep
中的Azure资源定义,以适应您的需求。
Azure Openai
此示例应用程序使用Azure OpenAi。它不是自动部署过程的一部分。您需要创建Azure OpenAI资源并配置应用程序以使用它。请按照Azure OpenAI documentation中的说明访问Azure Openai。在开始使用Azure OpenAi并请求访问之前,请不要忘记阅读overview of the Responsible AI practices for Azure OpenAI models。
示例应用程序的当前版本需要公开访问的Azure OpenAI资源(即允许从所有网络访问)。该样本不打算用于生产中。要了解有关Azure OpenAI的网络和安全性的更多信息,请参考Azure OpenAI documentation。
此示例应用程序是开发用于与gpt-4
模型一起使用的。它还支持gpt-35-turbo
。要使用gpt-35-turbo
,您需要将isAzureOpenAiGpt4Model
设置为false
(参见Quickstart)。默认情况下,此参数/环境变量设置为true
。要完成应用程序的设置,您需要从Azure OpenAI资源设置以下信息:
-
azureOpenAiApiKey
-Azure OpenAi API键 -
azureOpenAiEndpoint
-Azure OpenAi端点 -
azureOpenAiDeploymentId
-gpt-4
或gpt-3.5-turbo
型号的Azure Openai部署ID
可以在Azure门户中找到API键和端点。您可以按照以下说明:Retrieve key and enpoint。部署ID对应于this guide中的deployment name
。
Prompt engineering对于从Azure Openai中获得最佳结果很重要。文本提示是用户与GPT模型交互的方式。与所有生成性大语言模型(LLM)一样,GPT模型尝试生成最有可能遵循先前文本的下一系列单词。这有点像问AI模型:我说<prompt>
时想到的第一件事是什么?
使用Chat Completion API,提示的不同部分将发送到与特定角色相关联的API:系统,用户和助攻。系统消息在提示的开始时包含,用于为模型提供初始说明:助理,个性特征的描述,将遵循的指令/规则等。
。 AI Shopping Cart Service
正在使用Azure OpenAI client library for Java。这种性欲是Azure SDK for Java的一部分。它被实施为chat completion。在该服务中,我们在SystemMessageConstants.java中有2个系统消息:一个用于AI营养分析,一个用于生成前3个食谱。系统消息之后是用户消息:The basket is: <list of items in the basket separated by a comma>
。助理消息是模型的响应。该服务正在使用ShoppingCartAiRecommendations与Azure Openai互动。在此类中,您将找到负责生成提示并调用Azure OpenAi API:getChatCompletion
的代码。要了解此类中使用的温度和TOPP,请参阅the documentation。
对于gpt-35-turbo
模型,将更多上下文添加到用户消息中。在用户消息的末尾添加了此附加上下文。它提供了有关JSON格式的更多信息,即OpenAI模型需要返回并要求Model Tor仅返回JSON而没有其他文本。此其他上下文可在UserMessageConstants.java中获得。
- Pre-requisites ⤴ï¸
- Application Architecture ⤴ï¸
应用程序代码
此模板结构为遵循Azure Developer CLI template convetions。您可以在the official documentation中了解有关azd
架构的更多信息。
[Code](https://github.com/Azure-Samples/app-templates-java-openai-springapps.git)
下一步
此时,您已在Azure上部署了一个完整的应用程序。
企业方案
对于企业需求,寻找部署的多语言应用程序,Tanzu组件支持和SLA Assurance,我们建议使用Azure Spring Apps Enterprise。检查提供旨在简化春季启动和Spring Cloud Applications生产的基础架构提供和部署的架构指南的Azure Spring Apps landing zone accelerator。作为工作量所有者,请使用着陆区加速器中提供的architectural guidance充满信心地实现您的目标技术状态。
Azure开发人员CLI
您已经使用Azure开发人员CLI部署了示例应用程序,但是Azure开发人员CLI可以做的更多。这些下一步将向您介绍其他命令,这些命令将使Azure上的应用程序更加容易。使用Azure开发人员CLI,您可以设置管道,监视您的应用程序,测试并在本地调试。
-
koude29-删除使用此模板创建的所有Azure资源
-
koude30-要配置CI/CD管道(使用GitHub Action或Azure DevOps),以在将代码推到主分支时部署您的应用程序。
- 需要为Azure Openai资源设置几个环境变量 /秘密:< / li>
-
AZURE_OPENAI_API_KEY
:Azure OpenAi资源的API密钥- 对于github工作流程,您应该使用GitHub Secrets
- 对于Azure DevOps管道,您可以在创建变量时检查“保持此值秘密”
-
AZURE_OPENAI_ENDPOINT
:Azure OpenAi资源的终点 -
AZURE_OPENAI_DEPLOYMENT_ID
:Azure OpenAi资源的部署ID/名称 -
IS_AZURE_OPENAI_GPT4_MODEL
:如果您使用的是GPT-4型号,请设置为true
,如果您使用的是GPT-3.5 Turbo Model ,则设置为
false
。 -
koude37-要监视应用程序并快速导航到各种应用程序Insights仪表板(例如概述,实时指标,日志)
-
Run and Debug Locally-使用Visual Studio代码和Azure开发人员CLI扩展
其他azd
命令
Azure开发人员CLI包括许多其他命令,以帮助您获得Azure开发体验。您可以通过运行azd help
在终端查看这些命令。您还可以在我们的Azure Developer CLI command页面上查看命令的完整列表。
资源
这些是您可以使用的其他资源来了解有关示例应用程序及其基础技术的更多信息。
Azure Spring应用程序消费 - 网络和安全性
- https://learn.microsoft.com/en-us/azure/ai-services/openai/encrypt-data-at-rest
- https://learn.microsoft.com/en-us/azure/ai-services/openai/encrypt-data-at-rest
- How to configure Azure OpenAI Service with managed identities
数据采集
该软件可能会收集有关您和您使用软件的信息,并将其发送给Microsoft。微软可能会使用此信息来提供服务并改善我们的产品和服务。您可以按照存储库中所述关闭遥测。该软件中还有一些功能可以使您和Microsoft从应用程序的用户收集数据。如果使用这些功能,则必须遵守适用的法律,包括向您的应用程序用户提供适当的通知以及Microsoft的隐私声明副本。我们的隐私声明位于https://go.microsoft.com/fwlink/?LinkId=521839。您可以在帮助文档和我们的隐私声明中了解有关数据收集和使用的更多信息。您对软件的使用作为您同意这些做法的同意。
遥测配置
远程集合默认情况下。
要选择退出,将变量enabletelemetry设置为infra/main.parameters.json
或二头肌模板中的false9。使用Azure Developer CLI进行配置时,可以使用以下命令设置它:
azd env set enableTelemetry false
将叉子推到github:
在github中,创建一个拉请求
如果我们建议更改,则:
进行所需的更新。
重新考虑您的叉子并将强制推到GitHub存储库(这将更新您的拉请请求):
git rebase main -i
git推-f
就是这样!贡献快乐!
有关更多此类内容和开源项目教程指南,请遵循,分享和喜欢。