2025年1月15日,Oracle APEX发布了24.2版本,对AI为中心的应用开发架构提供了新功能,可以轻松构建响应精确且相关联的智能应用。开发人员可以将AI驱动的文本生成与新的动态操作AI生成文本(Generate Text with AI Dynamic Action)无缝集成,在新的共享组件AI配置(AI Configuration)中快速设置检索增强生成 (RAG) 数据源,在 SQL Workshop 中使用自然语言创建自定义数据模型。这些增强功能使开发人员能够创建更智能,而且精确满足用户需求的AI应用程序。
在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 以启用基于自定义条件的动态响应。
本文针对APEX 24.2中的AI配置和RAG源,结合前面介绍的动态操作AI生成文本和AI助手,进行详细的说明和演示。这个功能可以让应用无缝和生成式AI结合,生成更智能的应用,让AI更好地结合私域数据,自然地赋能应用。
环境和大模型
本文中使用的APEX环境是apex.oracle.com,对外提供免费注册,目前这个环境中apex已经升级到最新的24.2版本。
首先配置大语言模型,APEX目前原生支持的大语言模型主要是OCI生成式AI,Open AI和Cohere,支持定义大语言模型的endpoint,考虑到对接国内大语言模型的需求,本文中通过openai兼容接口,调用最新的deepseek大模型,具体配置如下:
在APEX workspace中APP Builder->Workspace Utilities->Generative AI Services下,可以创建新的生成式AI服务,配置如下图(请自己申请deepseek的api key,注意其有一定的免费额度),Credential部分如果没有,可以使用申请的api key创建新的Credential.

注意选择“Used by app builder”,这样创建应用时可以使用。
本文中继续使用基于apex提供的EMP DEPT数据,前一篇文章中通过生成式AI创建的“员工管理系统”应用。

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

本文通过AI配置和RAG源,在动态操作中利用AI助手来使用私域数据回答问题。
先创建一个简单的知识库表,在SQL Workshop->SQL Commands中的窗口中分别执行如下SQL语句:
create table tbl_km_example ( km_id NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY MINVALUE 1 MAXVALUE 99999 INCREMENT BY 1, km_content varchar2(4000), km_type varchar2(255), km_keywords varchar2(255) )
insert into tbl_km_example (km_content, km_type, km_keywords) values( '奖金(COMMISSION)计算规则,根据部门的不同,计算的百分比不同。' || '以下是部门列表和计算百分比值:' || '- ACCOUNTING 10%;'|| '- OPERATIONS 10%;'|| '- RESEARCH 20%;'|| '- SALES 50%;'|| '根据部门信息和员工的当前工资。可以计算出奖金(COMMISSION)。','HR','COMMISSION'); |
在 Shared Components->Generative AI Configurations下,点击“Create”按钮,创建一个AI配置。
Name:自定义唯一名字
Static ID:自定义唯一名字
Service:前面定义的AI Service
System Prompt:
你是一位HR专家,请使用如下背景知识回答问题。
Welcome Message:
我是HR专家,欢迎提出各种问题

点击右上角“Create”按钮,创建了这个AI配置以后,在“Show All”的最下方,或者上面标签中,才会出现“RAG Source”的部分。
点击“Create RAG Source”按钮,输入名称,选择源类型是“SQL Query”,在下面输入如下的SQL语句(注:P5_KEYWORDS是后面页面上设置的条目名称,具体环境中页面不同,数字有所不同):
select km_content as 背景信息 from tbl_km_example where km_keywords= '&P5_KEYWORDS.' |
如果只是想展示一下,也可以使用固定值作为条件来查询数据:
select km_content as 背景信息 from tbl_km_example where km_keywords= 'COMMISSION' |

在下面的服务器端条件,选择类型是“Any User Prompt Contains”,在下方的表达式中输入(逗号表示多个关键字):
奖金,COMMISSION,commission |
表示当用户提问的时候,如果出现了这些关键字,那么将会使用上面定义的RAG源。

点击“Create/Apply Changes”创建或保存。
在APP Builder中打开“Page 5: 员工档案”页面,选择上次创建的第二个“薪水智能说明”按钮,修改为“HR助手”,在动态操作为TRUE时,右边修改配置如下:
Action:Show AI Assistant
Generative AI/Configuration: 选择前面定义的AI Configuration
Init Prompt下
Type: Item
Item: P5_INIT_PROMPT
Use Response下
Type: Item
Item: P5_COMM
Button Label:使用建议


创建一个隐藏字段P5_KEYWORDS,创建COMPUTATION,使用SQL Query:
select 'COMMISSION' from dual |

点击“Save”保存页面。
在应用中“员工档案”页面中点击任何一个员工前面的编辑按钮,显示员工档案信息编辑页面(以CLARK为例),点击“HR助手”按钮,可以看到会把部门和工资信息输入给AI助手。


我们继续询问如下问题
1、奖金是多少? 2、其他部门commission如何计算? 3、其他部门salary如何计算? |


可以看到前两个问题,因为包含了设置的关键字,所以使用了RAG源定义的私域数据(各个部门特定的奖金计算规则),而第三个问题,没有查到相关的背景信息,所以大模型随意发挥了回答。

点击第一个回答下面的“使用建议”按钮,关闭AI助手,可以看到根据前面的配置,Commission字段中填写了AI助手的回答:(注:本文只是使用Commission字段示例,因为它的类型是数字,如果要正确使用,可以参照上一篇文章从中提取纯数字回填)

总结
由此可见,当在 Generative AI中使用AI配置时,AI配置中的提示词,欢迎词等都可以直接使用,无需再在页面中进行重复配置,而通过包含特定的关键字,也可以使用RAG源中SQL Query的结果,可以把页面值作为参数传递进去,作为SQL的查询条件,这样就为大语言模型对话提供了可以控制的背景知识,从而使用私域数据作为上下文。当然也可以在SQL中使用向量近似检索,这些内容会在另外文章中进行扩展介绍。
因为篇幅关系,本文就写到这里,请大家关注后面系列文章,包括:
利用AI助手帮忙创建数据模型
APEX集成Oracle数据库23ai向量检索




