暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

Oracle APEX加速AI应用开发系列文章—AI配置和RAG源

甲骨文云技术 2025-02-06
529

2025115日,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生成式AIOpen AICohere,支持定义大语言模型的endpoint,考虑到对接国内大语言模型的需求,本文中通过openai兼容接口,调用最新的deepseek大模型,具体配置如下:

APEX workspaceAPP Builder->Workspace Utilities->Generative AI Services下,可以创建新的生成式AI服务,配置如下图(请自己申请deepseekapi 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时,右边修改配置如下:

ActionShow 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向量检索


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

评论