暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

Oracle APEX加速AI应用开发系列文章—动态操作AI生成文本和AI助手

甲骨文云技术 2025-01-20
904

2025115日,Oracle APEX发布了24.2版本,为AI为中心的应用开发架构提供了新功能,可以轻松构建响应精确且相关联的智能应用。开发人员可以将 AI 驱动的文本生成与新的动态操作AI生成文本(Generate Text with AI Dynamic Action)无缝集成,在新的共享组件AI 配置AI Configuration中快速设置检索增强生成 RAG) 数据源,在 SQL Workshop 中使用自然语言创建自定义数据模型。这些增强功能使开发人员能够创建更智能,而且精确满足用户需求的AI应用程序。

Oracle APEX 24.1版本支持对接生成式AI和大模型,可以通过对话生成应用蓝图和框架,提供APEX助手(Apex Assistant),生成和修正应用中的SQLJavascriptCSS定义文件,并且提供了AI助手(AI Assistant),直接在程序里调用,使应用用户能够在界面中与大模型对话,获得洞见。

APEX 24.2版本中,AI助手的功能得到了加强,支持在调用的时候设置动态输入输出,并且支持RAG数据:通过基于 SQL 查询、函数输出或静态文本发送其他上下文数据来增强 AI 助手的响应。这些 RAG 来源可以是有条件的,并在每个用户提示时重新计算,从而确保响应保持相关性。

  • AI 配置

新的 AI 配置共享组件封装了系统提示、欢迎消息和任意数量的 RAG 源。这些配置可以通过“Show AI Assistant”“Generate Text with AI”动态操作以及APEX_AI PL/SQL API 使用

  • 条件 RAG

使用指定的关键字为服务器端条件(如“User Prompt Contains”“All User Prompts Contain”)配置 RAG 源。对于更高级的条件逻辑,请在表达式中引用绑定变量 APEX$AI_LAST_USER_PROMPT APEX$AI_ALL_USER_PROMPTS 以启用基于自定义条件的动态响应。

同时,在AI辅助开发方面,也提供了令人兴奋的增强功能,包括:

  •  AI 服务的声明性调用

 AI 配置与新的使用 AI 生成文本Generate Text with AI动态操作相结合,以帮助执行预定义的操作,例如创建内容、摘要和翻译。调用操作会立即返回响应,让您完全控制所需的用户体验。

  • 创建自定义数据模型

 SQL Workshop 中使用自然语言设计自定义SchemaAPEX AI Assistant 可帮助生成 Oracle SQL Quick SQL 脚本,用于创建表、触发器、约束等。

  • 向量搜索支持

使用户能够通过语义相似性搜索找到更相关的结果。新的搜索配置类型简化了向应用程序添加 Oracle Database 23ai 向量搜索的过程。指定索引使用情况、距离指标和max向量距离等详细信息,用户可以以前所未有的速度找到所需内容。

本文针对24.2中的动态操作AI生成文本和AI助手,进行详细的说明和演示。这个功能可以让应用无缝和生成式AI结合,生成更智能的应用,让AI更自然地赋能应用。

  • 环境和大模型

本文中使用的APEX环境是apex.oracle.com,对外提供免费注册,目前这个环境中apex已经升级到新的24.2版本。

首先配置大语言模型,APEX目前原生支持的大语言模型主要是OCI生成式AIOpen AICohere,支持定义大语言模型的endpoint,考虑到对接国内大语言模型的需求,本文中通过openai兼容接口,调用阿里的通义千问大模型qwen-plus,具体配置如下:

APEX workspaceAPP Builder->Workspace Utilities->Generative AI Services下,可以创建新的生成式AI服务,配置如下图(请自己申请通义千问大模型使用key,注意qwen-plus模型有一定的免费额度),Credential部分如果没有,可以使用申请的api key创建新的Crendential.

注意选择“usered by app builder”,这样创建应用时可以使用。

本文中数据集主要使用apex提供的EMP / DEPT数据,可以在APEX Workspace->SQL Workshop->Utilities->Sample Datasets界面中安装,如下图

  • 生成应用

安装完数据以后,首先试试使用大模型来创建应用。创建应用选择方式时,如图选择使用生成式AI

在弹出的界面中,依次输入的问题如下:

>我可以使用哪些数据库表对象? 

>帮我创建一个员工管理应用,包括员工和部门数据的新建,修改和删除,员工信息的搜索页,

>请把应用名称,页面名称,页面上的属性标签等信息改成中文

 

由于本文重点关注24.2AI增强生成能力,所以直接点击“Create Application”按钮创建应用,然后选择运行,可以看到,已经有了一个员工管理平台的雏形。

  • AI增强功能说明

APEX workspace中,进入我们刚创建的员工管理系统(或者点击某个新应用),如果前面配置了AI Service,那么在“Shared Components”里面,下面会发现多了一个“Generative AI”的部分,里面有三个子项:

  • AI Attributes

这是定义应用中关于使用生成式AI的协议(注意不是大模型的协议,而是开发者开发的当前应用的协议),在用户第一次使用配置的AI Service时会弹出,客户接受后才能继续使用,后面不会再弹出。

如下是配置AI相关属性页面和使用生成式AI弹出的许可协议:

  • AI Configuration

AI 配置是一个共享组件,用于集中关键的生成式 AI 设置,包括系统提示、欢迎消息和检索增强生成 (RAG) 源。创建 AI 配置可以在多个支持 AI 的组件(如显示 AI 助手和使用 AI 生成文本)动态操作之间重复使用这些设置。您还可以将 AI 配置与 APEX_AI 软件包中提供的 PL/SQL API 一起使用。

  • AI Services

跳转到前面Workspace Utilities->Generative AI Services,配置AI大模型的界面

  • 动态操作使用AI助手

本文中直接使用AI Service来展示通过动态操作使用AI助手或AI生成文本。

打开员工详细信息页面(本文中是Page 5: 员工档案,后面页面条目序号都是P5_,如果您生成的应用中页面序号不同,请对照修改)

创建一个隐藏域,名字为P5_DEPARTMENT,创建计算,类型是SQL Query (return single value),输入:

select dname

  from dept

 where deptno = :P5_DEPTNO

创建另外一个隐藏域,名字为P5_INIT_PROMPT,创建计算,类型是静态值,输入(注意当中的一个点也要包括):

部门: &P5_DEPARTMENT. 当前薪水: &P5_SAL.

 

P5_SAL域后面,创建一个BUTTON,定义标签为“薪水智能建议”,创建“Dynamic Action”,name是“AI-Suggest Salary”,选择事件是“Click”:

当操作是True的时候,选择“Show AI Assistant”,按照如下配置右侧信息:

ActionShow AI Assistant

Generative AI/Service:选择前面配置的生成式AI服务,本文中op_qwen_plus

Generative AI/System Prompt

您是一名人力资源经理,为员工的加薪提供建议。

根据部门的不同,增加的百分比不同。

以下是部门列表和增加百分比值:

- ACCOUNTING 5%

- OPERATIONS 7%

- RESEARCH 10%

- SALES 3%

 

您将获得部门信息和员工的当前工资。根据这些信息,您将计算出新的薪水。

计算出的薪金应不带特殊字符和货币符号。此外,将十进制数字四舍五入到下一个最大的整数。

用完整但简短的句子回答,先回答计算出的薪水,再说明如何计算。

只回答薪资建议的问题,不回答其他问题。

如果缺少所需的参数,例如部门名称或当前基本工资,请回复您需要更多信息才能继续。

Welcome Message

你好,我是您的私人人力资源助理,我可以帮你计算加薪。

Appearance/Title:个人人力资源助理

Initial Prompt

ItemP5_INIT_PROMPT

Immediate Action Prompt:计算薪资建议

Use Response下:

ITEMP5_SAL

Button Label: 应用建议

JavaScript Detection Expression

// search for numbers with a length of 3-5 and just return the number if one is found

this.fullContent.match( /\b\d{3,5}\b/g ) ? this.fullContent.match( /\b\d{3,5}\b/g )[0] : ""

保存页面,重新访问应用,刷新员工档案页面,点击姓名是“CLARK”员工前面的编辑图标:

在弹出的员工信息编辑页面中,可以看到当前员工薪水是2450,点击薪水字段后面的“薪水智能建议”按钮:

弹出AI助手的交互界面,可以看到,根据前面配置,有动态生成的内容作为提示提交给大语言模型,大语言模型给出相关的反馈,如下图:

点击大语言模型回答的下面“应用建议”按钮,对话框关闭,根据前面的配置,薪水字段已经修改成了2573,点击“应用改变”保存,则完成了这个AI智能生成内容过程。

注意:虽然我们在提示中已经强调让大模型先返回数值结果,加了Javascipt来处理,从返回的结果中提取第一个满足条件的数值,但有时候也会因为大模型返回的内容不同而出现偏差,本文只是示例,实际应用中处理会有更多判断。

  • 动态操作AI生成文本

我们可以看看使用AI生成文本的效果:

在员工档案页面中,复制上面的BUTTON,修改Label为“智能薪水说明”,复制上面BUTTONDynamic Action,修改When/Button到我们新创建的BUTTON

修改Dynamic Action操作为True下的配置:

Action选择“Generate Text With AI”,

Input Value/Item: P5_INIT_PROMPT

Use Response/Item: P5_COMM

注意:我们只是在这里借用Commission字段来做输出结果演示。

保存后,在员工档案中打开一个没修改过的员工信息,例如ADAMS,点击我们新创建的“薪水智能说明”按钮,可以看到Commission字段中会返回大模型给出的回答。

总结

由此可见,Action选择“Show AI Assistant”,可以弹出对话框,与大语言模型对话,再点击按钮,应用回答结果到指定的Item中,还可以通过Javascript来进行处理;“Generate Text with AI”是直接把调用大语言模型返回的结果写入指定的Item中,开发者可以根据场景不同而选择使用,当然,它们的Use Response的目标都可以是Javascript,可以把返回值在Javascript中进行更复杂的处理,本文就不做赘述了。

APEX 24.2通过配置动态操作结合AI助手或AI生成文本,与AI Service无缝集成,把大语言模型的能力很自然地结合在应用中,可以在任何一个环节传输业务数据,利用大模型的智能,而无需开发者书写太多的代码。

因为篇幅关系,本文就写到这里,请大家关注后面系列文章,包括:

  • 通过AI配置为AI助手增加RAG能力

  • 利用AI助手帮忙创建数据模型

  • APEX集成Oracle数据库23ai向量检索

编辑:Henry

文章转载自甲骨文云技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论