功能介绍
本文主要介绍如何基于阿里云百炼的应用中心快速创建RAG应用,并通过API/SDK低代码方式调用RAG应用进行文档问答的最佳实践。
创建应用
Step 1:数据管理-导入数据
在左侧导航栏,选择数据管理。在非结构化数据页签,选择“默认类目”后,点击“导入数据”,然后通过“本地上传”的方式导入数据。导入数据需要花费一定的时间,需要耐心等待数据转为“导入完成”的状态(通过手动点击刷新按钮)。
Step 2:创建知识索引
在左侧导航栏,选择点击创建知识库,输入知识库名称,保持默认配置,点击下一步。 。
选择相关文件,点击下一步。
保持默认配置,点击导入完成,系统自动进行文档解析。
文档解析需要一定时间,请您耐心等待,直至状态变更为“解析完成”状态,才能在后续的文档问答过程中被检索到。
返回知识库索引主页, 获取知识索引ID。知识索引支持与百炼Assistant API结合使用,支持RAG和插件的组合调用。
Step 3:创建应用
在左侧导航栏中,选择我的应用。单击 ,进入创建应用页面,配置以下参数:
单击选择模型。同时,还支持配置与模型生成内容相关的参数,例如,温度系数等。
打开知识库检索增强开关,单击“配置知识库”。
选择知识库,即在Step2中创建的知识索引。
单击“发布”按钮。
应用发布后,即可在右侧的窗口进行效果测试。
在应用列表页面,获取应用ID。
调用应用
前提条件
您需要已获取API Key并配置API Key到环境变量。
如果通过API/SDK调用应用,需要获取到应用ID。
如果通过Assistant API调用,需要获取到知识索引ID。
已安装最新版SDK:安装SDK。
通过API/SDK调用应用
您需要将YOUR_APP_ID
替换为已获取的应用ID,代码才能正常运行。
Python
import os
from http import HTTPStatus
import dashscope
from dashscope import Application
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
def call_agent_app():
response = Application.call(app_id='YOUR_APP_ID',
prompt='百炼的业务空间是什么?如何使用业务空间?',
api_key=os.getenv("DASHSCOPE_API_KEY"), # 若没有配置环境变量,请用百炼API Key将本行替换为:api_key="sk-xxx",
)
if response.status_code != HTTPStatus.OK:
print('request_id=%s, code=%s, message=%s\n' % (response.request_id, response.status_code, response.message))
else:
print('request_id=%s\n output=%s\n usage=%s\n' % (response.request_id, response.output, response.usage))
if __name__ == '__main__':
call_agent_app()
Java
import com.alibaba.dashscope.app.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.Constants;
public class Main{
static {
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
public static void callAgentApp() throws ApiException, NoApiKeyException, InputRequiredException {
ApplicationParam param = ApplicationParam.builder()
// 若没有配置环境变量,请用百炼API Key将下行替换为:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.appId("YOUR_APP_ID")
.prompt("百炼的业务空间是什么?如何使用业务空间?")
.build();
Application application = new Application();
ApplicationResult result = application.call(param);
System.out.printf("requestId: %s, text: %s, finishReason: %s\n",
result.getRequestId(), result.getOutput().getText(), result.getOutput().getFinishReason());
}
public static void main(String[] args) {
try {
callAgentApp();
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
System.out.printf("Exception: %s", e.getMessage());
}
System.exit(0);
}
}
curl
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/apps/YOUR_APP_ID/completion \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"input": {
"prompt": "百炼的业务空间是什么?如何使用业务空间?"
},
"parameters": {},
"debug": {}
}' --verbose